chore(canopy-reporting): close 4 TANF ACF-199 reporting gaps

canopy-reporting TANF path (ACF-199 WPR formula + enrichment) has four concrete gaps documented inline in the plan's 2026-04-13 errata:

  • WPR target thresholds hardcoded — the 50 % / 90 % WPR targets (TANF overall / two-parent) are baked into tanf.rs instead of loaded from jurisdiction.toml via the ADR-011 ParameterTable path.
  • WPR formula incomplete — only raw work-activity hours are counted; the formula per 45 CFR 261.23 requires exempt-family exclusion from the denominator (sanctioned / exempted AUs removed before the ratio). Currently the denominator is "all AUs" and the numerator is "AUs meeting hours".
  • Only first adult captured — work-activity aggregation iterates ctx.members and stops after the first adult per household, so two-parent AU hours are undercounted.
  • Swallowed errors — per-row fetch failures inside the enrichment loop are logged and continued; a row that hits a transient DB error silently disappears from the output CSV. Either bail on first error or emit a sentinel row.

Each sub-item is independently actionable but shares the same file (services/canopy-reporting/src/reporting/tanf.rs) — worth keeping as one issue.

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