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.rsinstead of loaded fromjurisdiction.tomlvia 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.membersand 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.