Parse source files and emit the execution plan as JSON

Usage: barca plan [FILES]...

Arguments:
  [FILES]...  Python files or directories to read (default: every .py file under the project root that imports barca; see `barca docs discovery`)

Options:
  -h, --help  Print help

Examples:
  barca plan                          # the whole project
  barca plan pipeline.py              # phases and steps that would run; nothing executes
  barca plan pipeline.py other.py     # several files form one DAG

Output: always pretty-printed JSON {total_steps, phases: [{reason, streams: [{stream_id, steps}]}],
warnings}. `warnings` is always an array ([] when there are none) of {kind, node, param, message}:
plan-time warnings such as an input a step never uses, each also one `[barca] warning: ...` line on
stderr (barca docs assets, "Unused inputs").
`reason` is an object: {"type": "initial"} or {"type": "fan_in", "node_id": ...}.
Planning is static analysis: it never imports your code or reads state, so it takes no --env.
Experimental: the layout may change between releases (barca docs contract).
More: barca docs agents
