v0.10.0 — calendar-aware deadline horizon, named infeasibility errors
Fixed
- Calendar outages no longer cause spurious "no feasible schedule found" errors. The deadline search was capped at the sum of task durations, which ignores calendar gaps: a task waiting out a resource's leave block for its first feasible execution window could push the makespan past the cap. The cap is now a serialized calendar-aware horizon that always suffices, and networks with no outages build byte-identically to v0.9.0.
- Positive link lags hit the same cap and could also fail spuriously; the horizon now accounts for them.
- Truly infeasible tasks raise a named error — e.g.
task A ('Alpha', 5d) has no feasible calendar window: resource(s) r1 never have capacity for its full duration— instead of the generic message. A resource with base capacity 0 used to hang the forward pass in an infinite loop; the window search is now bounded and complete.
🤖 Generated with Claude Code