Resource leveling
v3 adds capacity-aware resource math and a one-click leveler that resolves over-allocation by shifting non-critical tasks.
**Per-day capacity & units**
• Each resource carries a daily capacity (default 8 for people, 1 for equipment, infinite for materials). Edit it inline on the Resources tab.
• Each allocation now tracks units **per day**, not total units. The "total" column shows units × duration so the cost rollup keeps working.
• Conflict detection compares daily booked load to capacity day-by-day. Adjacent over-allocated days collapse into a single range so the UI stays readable.
**Leveling**
When conflicts exist, a **"Level resources (N)"** button appears on the Resources tab.
1. Click it — Turtini computes a heuristic plan that shifts non-critical tasks forward into available slack
2. Affected tasks pop into their new slots immediately (write batch)
3. A status line reports how many were shifted, how many conflicts cleared, and any unresolved tasks
**Rules**
• Critical-path tasks are **never** moved — auto-shifting them would silently push the project end out, which is a manual decision
• Tasks with zero slack are reported as unresolved — you'll need to manually re-allocate, split, or accept the conflict
• Materials don't generate conflicts (consumed, not booked); equipment defaults to capacity 1 (a single unit)
**Tip**: leveling is iterative. Run it, review, adjust capacities or split tasks, then run again. Each pass tightens the plan.
Wally can run the leveler too: "Level the resources on the Headquarters project" — confirm-first action card with the move list as a preview.