Generate an institutional-quality PDF file from finance artifacts in one output directory.

Inputs:
- `subcommand` (required): workflow profile (`report`, `government-trading`, `darkpool-anomaly`, or `political-backtest`)
- `outputRoot`: artifact directory
- `filename` (optional): PDF file name to write in `outputRoot`

Behavior:
- `report` profile:
  - expects `/report` artifacts (`report.md`, `dashboard.md`, `assumptions.json`, `evaluation.md`, `evaluation-snapshot.json`)
  - enforces comprehensive-report quality gates
  - uses the existing research-brief first page, a deterministic evaluation page 2, and section flow (Full Report -> Dashboard -> Assumptions)
- `government-trading` profile:
  - expects government-trading artifacts (`report.md`, `dashboard.md`, `assumptions.json`, `normalized-events.json`, `delta-events.json`, `data.json`)
  - enforces government-trading-specific quality gates
  - uses section flow: Dashboard -> Full Report -> Assumptions -> Delta Events -> Normalized Events
- `darkpool-anomaly` profile:
  - expects darkpool artifacts (`report.md`, `dashboard.md`, `assumptions.json`, `evidence.md`, `evidence.json`)
  - enforces darkpool-specific quality gates
  - uses anomaly-first first page and section flow (Dashboard -> Full Report -> Evidence -> Assumptions)
- `political-backtest` profile:
  - expects political backtest artifacts (`report.md`, `dashboard.md`, `assumptions.json`, `aggregate-results.json`, `comparison.json`)
  - enforces political-backtest-specific quality gates
  - uses section flow: Dashboard -> Full Report -> Aggregate Results -> Longitudinal Comparison -> Assumptions
- Creates a polished, summary-first PDF and adds `opencode.finance` footer on every page (clickable link to `https://opencode.finance`)
- Writes the PDF to disk and returns it as a file attachment
