## Context PR #124 (closed #31) added the synthetic-provider CLI surface for \`summary\` / \`by-tool\` / \`waste\` — \`--provider <name>\` filter on all three, and \`--by-provider\` grouping on \`summary\`. \`burn compare\` was deferred: > \`compare --by-provider\` is explicitly deferrable per #83. But \`compare --provider <name>\` (the higher-leverage filter half) was not added, and #83's acceptance asks for it across all four commands. The helper functions already exist in \`packages/cli/src/provider.ts\` (\`parseProviderFilter\`, \`filterTurnsByProvider\`, \`resolveTurnProvider\`) — the rewire surface is small. ## Proposal In \`packages/cli/src/commands/compare.ts\`: 1. Accept \`--provider <name>\` (single value or comma-separated list, matching summary's syntax). 2. Run \`filterTurnsByProvider(turns, parseProviderFilter(args.flags.provider))\` against the input slice before passing to \`buildCompareTable\`. 3. When the filter excludes all input, render the same empty-table message the existing \`--models\` filter produces. 4. Cover via the existing parity-test pattern in \`packages/cli/src/commands/compare.test.ts\` (or \`packages/analyze/src/compare-archive.test.ts\` if the filter is best applied at the SQL layer for the archive path). Optionally — keep simple, defer if it complicates: 5. Extract \`aggregateByProvider\` from the inline call site in \`summary.ts\` into \`@relayburn/analyze\` so multiple commands can share it. Issue #83 explicitly asks for this. 6. \`compare --by-provider\` grouping. #83 marks this as a stretch goal. ## Acceptance criteria - [ ] \`burn compare --provider synthetic\` filters the compare table to only synthetic-routed turns. - [ ] Multi-value (\`--provider synthetic,openrouter\`) works, matching summary's parser. - [ ] Empty-result rendering matches the existing \`--models\` empty path. - [ ] Tests cover the filter on both the in-memory and (if PR #130 has merged) the archive code paths. ## Out of scope - \`compare --by-provider\` (acceptable to defer per #83). - Adding new providers to the reattribution table (covered by #90 OpenRouter). ## Refs - Spun out of #83 (PR #124 partially landed it) - Helper module: \`packages/cli/src/provider.ts\` - Sibling commands already with the filter: \`summary.ts\`, \`by-tool.ts\`, \`waste.ts\`