Spend per canonical project x branch, keyed by the project identity the
spend-flow and By project views already use, so identical branch names in
different projects never merge. Reuses the aggregateByBranch rules: last-seen
branch carried forward across turns (the parser resolves the carry across a
range boundary from pre-range evidence), only ever-branched sessions
participate, and turns before a session's first branch stay an explicit
Unknown row.
Rows carry cost, behavioral calls, token components, distinct sessions
(identity-based, rows overlap), activity window, per-session contributions,
recorded worktree evidence (historical working directory, never today's
checkout), and a coverage split: known / Unknown / no-branch-data sources.
Same --period/--provider/--from/--to/--project/--exclude semantics as
spend --format flow-json. docs/by-branch.md documents the lens.