chore(canopy-reporting): close 3 Medicaid T-MSIS / CMS-64 reporting gaps

canopy-reporting Medicaid path (T-MSIS + CMS-64 + CMS-416) has three concrete gaps documented inline in the plan's 2026-04-13 errata:

  • income_as_pct_fpl column never written — the CMS-416 extract declares the column but the writer path never populates it; every row is NULL.
  • T-MSIS CSV omits two required fieldschip_code and dual_eligible_code are specified in the layout but the formatter's field list doesn't emit them.
  • CMS-64 reuses TANF typeCMS-64 expenditure rows reuse the TANF aggregation helper, which passes TANF-only filters. Either fork the helper or parameterise it on program enum.

Each sub-item is independently actionable but shares services/canopy-reporting/src/reporting/medicaid.rs — worth keeping as one issue.

Extracted from medicaid-federal-reporting.adoc § Errata.