Fix WA WFTC phase-out rate and expansion effective year (#9373) - #9391
Fix WA WFTC phase-out rate and expansion effective year (#9373)#9391DTrim99 wants to merge 4 commits into
Conversation
…#9373) A1: phase-out rate is maximum amount / phase-out band per WAC 458-20-285(10)(d) (0.12/0.12/0.18/0.24 for 0-3 children on the 2022 base amounts), not (maximum - minimum) / band; the old slope under-taxed the phase-out and overpaid inside the band. The $50 statutory minimum (RCW 82.08.0206(3)(c)) still floors any positive reduced amount. A4: the maximum qualifying income ceiling is strict (WAC 458-20-285(10)(e): income "equal to or more than" the threshold is ineligible). A3: ESSB 6346 Sec. 1205(1) makes the expansion (age, maximum qualifying income, assistance-unit-size cap) effective January 1, 2028 for applications submitted beginning in calendar year 2029 -- i.e. tax year 2028, not 2029. Updates baseline tests for the new rate and effective year. Does not touch amount.yaml uprating/rounding (B5(i), handled by PolicyEngine#9371). B5(ii) Seattle CPI-W index and B6 need-standard maintenance are tracked as follow-ups. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019o3CatUFsN4y6TpBHY6Vgf
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9391 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 3 3
Lines 33 106 +73
Branches 0 1 +1
=========================================
+ Hits 33 106 +73
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:
|
|
Extra primary-source corroboration for A1 (the I pulled WAC 458-20-285(10)(D) verbatim (apps.leg.wa.gov):
Two takeaways that back this PR:
For the #1166 record this lands at ≈$529 (vs the pre-PR $558.70 from the old |
|
@hua7450 heads-up — this PR will affect API partner contract values, so we need to coordinate before it merges. The A1 phase-out-rate correction (to
These are corrections (the old model overpaid in the phase-out band), not regressions — consistent with your #9373 verification. But because they're partner-facing values, per our contract-test policy I'm holding the update to that partner file until the API partner is notified and it's acknowledged. Flagging you as the team contact; could you confirm the partner (analytics_coverage) is looped in? Once acknowledged I'll update the two expected values to match. |
The A1 phase-out-rate fix (max/band per WAC 458-20-285(10)(d)) changes two analytics_coverage WA WFTC edge cases: - wa_wftc_childless_mid_phase_out (2026): 230.21 -> 211.00 - wa_wftc_1_child_min_amount_near_ceiling (2026): 50.42 -> 50.00 (now floored at the $50 statutory minimum, RCW 82.08.0206(3)(c)) These are corrections (the prior model overpaid inside the phase-out band), not regressions. Partner (analytics_coverage) notification is handled via the weekly partner update; flagged to @hua7450 who provides it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YCwrSsGY7vPCpKYGfV1xRr
|
Update: re-pinned the two WA WFTC partner contract values to the corrected amounts (commit above):
@hua7450 — since partner notification goes out through your weekly partner update, please include this WA WFTC change in the next one. No separate partner sign-off needed here, and @anth-volk can disregard the earlier partner-gate ask on #9371 — the weekly update covers it. Note for merge sequencing: #9371 also re-pins this same file (uprating rounding → e.g. childless mid-phase-out 231.69). Whichever of #9371/#9391 merges second will need a quick re-pin to the combined value (rounding + corrected rate), and that combined number is what should appear in the weekly partner update. |
…-work # Conflicts: # policyengine_us/tests/policy/baseline/gov/states/wa/tax/income/credits/wa_working_families_tax_credit.yaml # policyengine_us/tests/policy/baseline/partners/analytics_coverage/edge_cases/state/wa/working_families_tax_credit.yaml
Program ReviewSource Documents
Branch StatusThe branch is 3 ahead / 1 behind Critical (Must Fix)
Should Address
Pre-existing (out of PR scope)
Suggestions
Pre-existing (out of PR scope)
Investigated and cleared
PDF Audit Summary
Validation Summary
Review Severity: REQUEST_CHANGESNext StepsTo auto-fix issues: run the fix-pr workflow for this PR. |
hua7450
left a comment
There was a problem hiding this comment.
Requesting changes per the full review posted above (#9391 (comment)). Blocking items: C1 age_expansion/min_age.yaml still flips to 18 at 2029-01-01 while the expansion toggles now flip at 2028-01-01 (TY2028 admits any age); C2 the 2028 date is cited to Sec. 1205(1), which says January 1, 2029 — the authority is Sec. 1205(2); C3 the assistance-unit-size cap and need-standard sizes 2-5 have zero test coverage. The phase-out rate change (max / band) and the 2028 tax-year modelling are confirmed correct against DOR ETA 3240 and the enrolled bill.
…ding, test coverage Applies all items from the 2026-09-05 review: re-dates the age-expansion minimum age to 2028, corrects ESSB 6346 Sec. 1205(2) citations and page references, adds RCW 82.08.0206(3)(b) nearest-dollar rounding with the $50 floor gated on the unrounded amount, restores 0.01 error margins, adds boundary/in-band/at-ceiling/integration test cases, and updates the partner contract pins for the rounded values. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LqCGPgxDukji8Bhs57c5rH
Fixes applied from @hua7450's reviewThanks for the thorough review. All 18 in-scope items are addressed in the latest commit. Critical
Should
Suggestions
A7 — rounding (option A)Implemented nearest-dollar rounding per RCW 82.08.0206(3)(b) using numpy
Partner filesThe three partner-contract edits — A3 rename, S8 675 re-pin, and A7 212 re-pin ( Deferred (reviewer-acknowledged follow-ups)
Tests
|
Fixes the model bugs verified in #9373 (Ziming's WA WFTC verification). Draft pending CI (this repo can't run the model locally) and coordination on partner contract tests — see below.
Changes
maximum amount / phase-out bandper WAC 458-20-285(10)(d) — the published per-dollar rates of $0.12 / $0.12 / $0.18 / $0.24 for 0–3 children equalmax/bandon the 2022 base amounts (600/5000 = 0.12, 900/5000 = 0.18, 1200/5000 = 0.24). The prior code used(maximum − minimum) / band(= 0.11/0.17/0.23), a shallower slope that overpaid inside the phase-out band (up to ~$46/household). The $50 statutory minimum (RCW 82.08.0206(3)(c)) still floors any positive reduced amount.2029-01-01; moved to2028-01-01(tax year 2028).<=changed to<. (Moot for the credit amount once A1 zeroes it at the ceiling, but corrects the eligibility flag.)Baseline tests updated for the new rate and effective year (Cases 4/5/6b/16/17, the 2029 need-standard case, and the age-expansion boundary cases moved to 2027 with a new positive 2028 first-in-effect case).
Relationship to #9371 (Anthony's uprating-nesting PR)
amount.yamlrounding nested underuprating) is handled by Fix ignored uprating rounding rules in state tax parameters #9371 — deliberately not touched here to avoid a conflict. Both PRs edit the WA WFTC test files, so this PR should rebase on Fix ignored uprating rounding rules in state tax parameters #9371 after it merges; the A1 rate change supersedes some of Fix ignored uprating rounding rules in state tax parameters #9371's rounding-updated in-band expected values.Follow-ups (not in this PR)
gov.irs.uprating. Larger change (custom index + averaging convention); tracked separately.Notes
partners/.../wa/working_families_tax_credit.yaml,tax_credits_composition.yaml,signatures/wa.yaml) because A1 changes WA WFTC outputs. Not rewritten here — flagged for partner coordination per the repo's partner-test policy.absolute_error_margin); CI will pin the exact cents.Closes #9373 (pending B5(ii)/B6 follow-ups noted above).