# Wave Planner Lab

这个标准库实验把声明的依赖、基础能力日期与按角色容量组合成 Wave。`strong_dependencies` 会收敛成同一依赖组；普通依赖必须在更早 Wave 完成。每个 `requires` 都必须在 `foundation_available_wave` 中声明，缺失时会以 `unknown_foundations` 阻断规划；声明到较晚 Wave 的基础能力会自动延长规划范围，让后续依赖链继续排期。负数或非有限工时属于无效输入，会直接被拒绝。样例还故意把 CatalogApp 与 CatalogDB 放到不同 proposed Wave，工具会报告无效拆分。

```bash
python3 wave_planner.py sample-portfolio.json --out wave-evidence.json
python3 -m unittest -v test_wave_planner.py
```

阅读输出时先看 `status`、`invalid_proposed_splits`、稀缺角色 headroom 和每波学习目标。算法只使用输入中声明的依赖、工时和基础日期；它不能发现未采集的 DNS、身份、批任务或业务窗口，也不能替代架构师和业务 Owner 的批准。
