pub fn is_task_spawnable(task: &Task, phase: &Phase) -> boolExpand description
Check if a task is a candidate for execution (pending, not expanded, parent expanded).
This is the shared base predicate used by spawn, swarm, and beads modes.
It does NOT check dependency satisfaction — callers that need that should
use is_task_ready instead, or handle deps separately (e.g., Kahn’s algorithm).