Update MA CCFA parent fees: fix two fee percentages, add FY2026 income brackets - #9369
Conversation
The FY2025 and FY2026 Parent Fee Tables both list 4.45% at fee level 3 and 7.6% at fee level 10; the encoded 4.5%/7.5% were transcription errors, fixed retroactively on the 2023-10-01 layer. The FY2026 table (effective October 1, 2025) widens every family size's income brackets; encoded as a 2025-10-01 layer of income ratio increments derived from the chart's constant dollar bracket widths over the 2025 poverty guidelines, validated dollar-by-dollar against the chart's brackets. Fee percentages are otherwise unchanged between FY2025 and FY2026. Part of PolicyEngine#9365. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ASXyC4DNpinDieKCdkNgL8
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9369 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 1 3 +2
Lines 20 57 +37
Branches 1 1
=========================================
+ Hits 20 57 +37
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Replaces the derived income-ratio increments with the charts' literal dollar bracket widths (income_bracket_width.yaml) and anchors both copay formulas at the chart FPG (the printed fee level 1 ceiling, monthly FPG rounded half up). All 1,210 printed bracket cells in the FY2025 and FY2026 charts reconstruct exactly from base plus width, and a full-dollar simulation (310,640 incomes) now reproduces every chart assignment with zero mismatches in both editions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ASXyC4DNpinDieKCdkNgL8
PR #9369 Review — MA CCFA parent feesProgram reviewMassachusetts Child Care Financial Assistance (CCFA) parent fees. This PR The restructured level formula is: with half-up FPG rounding The restructure logic and every changed/added value are verified. The formula Source documents
Both were read directly from the source XLSX workbooks (via openpyxl, captured Branch statusBranch is 13 commits behind CriticalNone. Every changed value traces to an authoritative EEC source that Should address
Suggestions
Value audit summaryFully clean — 0 mismatches. Independently re-audited against both official
Validation summary
The Review severityCOMMENT. No critical issues. This is a solid values fix plus a well-verified Next stepsRun 🤖 Generated with Claude Code /review-program |
Make ma_ccfa_fpg a monthly variable so each fiscal year's Parent Fee Table switches to its own poverty guideline anchor in October, and pin the September/October 2025 turnover. Add bracket-ceiling and one-dollar- above cases for family sizes 2, 4 and 6 (distinguishing half-up FPG rounding from half-to-even and ceiling), a large-family case, an in-PR fee level 28 cap case, and a second-size FY2025/FY2026 pair. Rename the mis-named ma_ccsp_copay_level test file and label, document the FY2024 proxy in fee_percentages.yaml, and normalize the chart references. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gu18CFcw8DPpLrhQQ8eTRs
…into ma-ccfa-copay-fy2026
PR #9369 Re-Review — MA CCFA parent fees (fee-% fix + FY2026 brackets + dollar-bracket restructure + FPG YEAR→MONTH)Re-review noteThis is a re-review following the author's response to a prior COMMENT review that raised five
Net: 4 of 5 prior items fully resolved, 1 downgraded to a suggestion. New logic verified this pass: the Program ReviewMassachusetts EEC Child Care Financial Assistance (CCFA) parent-fee (copay) schedule. This PR:
Source Documents
Values were audited directly against the FY2025 and FY2026 chart workbooks (read with openpyxl). Branch StatusThe PR branch is reported as 13 commits behind CriticalNone. Should AddressNone. The one borderline formatting item (trailing whitespace) is classified as a suggestion below; see Suggestions
Value Audit SummaryAll PR #9369 values reproduce the EEC Parent Fee Tables exactly:
Two descriptive caveats — neither is a value error:
No value mismatch; no diff exceeds 0.3. Validation Summary
Review SeverityAPPROVE — 0 critical / 0 should-address / suggestions only. Per-agent severity counts:
The code agent raised the trailing-whitespace line as a should-address by its default formatting Next Steps
🤖 Generated with Claude Code /review-program |
DTrim99
left a comment
There was a problem hiding this comment.
Auto-approving per standing authorization: this re-review is clean (0 critical / 0 should-address; 5 non-blocking suggestions). CI is now fully green — the prior codecov/project failure is resolved by the new ma_ccfa_fpg.yaml month-branch coverage. Of the prior review's 5 should-address items, 4 are fully resolved and 1 (durable Wayback citation) is downgraded to a suggestion. The new FPG YEAR→MONTH conversion (annual÷12 with the month>=10 FY-October guideline switch) is verified correct — both consumers are MONTH-defined (no regression), the restructured dollar-bracket level formula reproduces the EEC chart, and the deleted income_ratio_increments param + CCSP→CCFA rename leave zero stale references. Value audit re-confirms 0 mismatches: fee %s (L3 4.45% / L10 7.6%, 0.45pp), 22/22 bracket widths, max level 28, and the monthly FPG anchors (1763/1703). Full findings in the review comment above. 🤖 /review-program
Summary
Three changes to the Massachusetts CCFA parent fee encoding, all verified cell-by-cell against the official EEC workbooks:
2023-10-01layer rather than dated. The model previously overcharged level-3 families and undercharged level-10 families.2025-10-01layer. Fee percentages are otherwise identical between FY2025 and FY2026, so no newfee_percentageslayer is needed.ma_ccfa_fpgis now a MONTH variable, so each fiscal year's chart switches to its own poverty guidelines in October (FY2026 → the 2025 guidelines from October 2025). It was YEAR-defined, which made its October branch unreachable and left October–December on the previous fiscal year's anchor.Found by the #9365 copay sweep.
Encoding: literal chart dollars, exact reproduction
The bracket parameter stores the charts' printed dollar bracket widths (
income_bracket_width.yaml, replacing the previous derived income-ratio increments), and both copay formulas anchor at the chart FPG — the printed fee level 1 ceiling, i.e. the monthly FPG rounded half up, which the chart's step 4 itself designates ("the FPG ... can be found as the upper income limit of Fee Level 1"). Fee level = 1 + ⌈income above chart FPG ÷ width⌉; fee = level percentage × income above chart FPG.Verification against both workbooks:
floor(monthly FPG + 0.5)for every family size in both years (FY2025: 20,440/12 → 1,703; FY2026: 21,150/12 → 1,763).Sources
Both are XLSX workbooks (mass.gov blocks automated fetchers; verified from manually downloaded copies).
Changes
copay/fee_level/fee_percentages.yamlcopay/fee_level/income_bracket_width.yaml2023-10-01(FY2025) and2025-10-01(FY2026) layerscopay/fee_level/income_ratio_increments.yamlcopay/fee_level/maximum_level.yamlma_ccfa_copay_level.pyma_ccfa_base_copay.pyma_ccfa_fpg.pytests/.../ma_ccfa_fpg.yamltests/.../ma_ccfa_base_copay.yamltests/.../ma_ccfa_copay_level.yamlma_ccsp_copay_level.yaml(contents unchanged)tests/.../ma_ccfa.yamlNote: the FY2026 chart's printed example result ("$2.28") is an arithmetic slip in the source — its own stated calculation is 4% × ($1,850 − $1,763) = $3.48, which the model now returns exactly.
Review response
All five should-address items from the
/review-programreport are addressed, plus the reference, boundary-case and second-size suggestions:codecov/project— the reviewer's diagnosis was right: the one uncovered branch wasif month >= 10inma_ccfa_fpg.py, which a YEAR-defined variable can never take. Rather than delete it or add apragma, the variable is now MONTH-defined so the branch does what it was written to do, and the newma_ccfa_fpg.yamlcases cover both arms.Not modeled / unchanged (by design)
Part of #9365.
Test plan
policyengine-core test policyengine_us/tests/policy/baseline/gov/states/ma: 441 passedpartners/analytics_coverage/signatures/ma.yaml,edge_cases/federal/childcare/{ccdf,head_start}/ma.yaml) and RI CCAP integration: 18 passed🤖 Generated with Claude Code
https://claude.ai/code/session_01Gu18CFcw8DPpLrhQQ8eTRs