Skip to content

Backdating Washington TANF#7202

Open
hua7450 wants to merge 11 commits intoPolicyEngine:mainfrom
hua7450:hua7450/issue7199
Open

Backdating Washington TANF#7202
hua7450 wants to merge 11 commits intoPolicyEngine:mainfrom
hua7450:hua7450/issue7199

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Jan 19, 2026

Summary

Fixes #7199

Adds historical parameter values to Washington TANF, extending data back to 2016 based on Washington State Register (WSR) filings. Also corrects effective dates, removes an erroneous maximum grant cap, and adds a boolean toggle for the $500 flat earned income disregard introduced by HB 1447.

Regulatory Authority

Topic Authority Citation
Payment standards WAC 388-478-0020 Current
Income limits WAC 388-478-0035 Current
Earned income deductions WAC 388-450-0170 Current
Benefit calculation WAC 388-450-0162 Current
Resource limits WAC 388-470-0005 Current
$500 disregard & $12K resource limit HB 1447 (2023 c 418) Session Law
$6K resource limit E2SHB 1831 (2018 c 40) Session Law

Historical WSR Filings

Filing Effective Date Changes
WSR 16-01-093 Jan 15, 2016 Payment standards and income limits
WSR 18-09-088 Jul 1, 2018 Payment standards and income limits
WSR 21-21-054 Jul 1, 2021¹ 15% payment standard increase per 2021–2023 operating budget (ESSB 5092)
WSR 23-23-054 Jan 1, 2024 Payment standards and income limits
WSR 24-11-019 Aug 1, 2024 Income limits updated to incorporate $500 disregard

¹ WSR 21-21-054 formal WAC effective date is Nov 15, 2021, but the filing states the increase was "effective July 1, 2021" per the operating budget. The Urban Institute Welfare Rules Databook (July 2021) confirms the increased amounts were in effect by July 2021.

Income Eligibility Test

Gross earned income must be at or below the published income limit for the assistance unit size per WAC 388-478-0035. These limits already incorporate the $500 family earnings deduction (after Aug 2024).

Income Deductions & Exemptions

Deduction Value Effective Source
50% earned income disregard 50% of remaining earned income Sep 1, 1998 – present WAC 388-450-0170(3)
$500 flat earnings disregard First $500 of earned income Aug 1, 2024 – present HB 1447 Sec 5, WAC 388-450-0170(2)

Order of operations (per WAC 388-450-0170):

  1. Deduct first $500 of gross earned income (if after Aug 1, 2024)
  2. Subtract 50% of remaining earned income
  3. Add unearned income (no disregard)

Income Standards

Payment Standards (WAC 388-478-0020)

Size Jan 15, 2016 Jul 1, 2018 Jul 1, 2021 Jan 1, 2024
1 $332 $363 $417 $450
2 $420 $459 $528 $570
3 $521 $569 $654 $706
4 $613 $670 $771 $833
5 $706 $772 $888 $959
6 $802 $877 $1,009 $1,090
7 $927 $1,013 $1,165 $1,258
8 $1,026 $1,121 $1,289 $1,392
9 $1,126 $1,231 $1,416 $1,529
10+ $1,224 $1,338 $1,539 $1,662

Values before Oct 25, 2020 are for households "with shelter costs." WSR 20-20-007 eliminated the shelter cost distinction.

Income Limits (WAC 388-478-0035)

Size Jan 15, 2016 Jul 1, 2018 Jul 1, 2021 Jan 1, 2024 Aug 1, 2024
1 $665 $726 $834 $900 $1,400
2 $839 $918 $1,056 $1,140 $1,640
3 $1,042 $1,138 $1,308 $1,412 $1,912
4 $1,225 $1,340 $1,542 $1,666 $2,166
5 $1,413 $1,544 $1,776 $1,918 $2,418
6 $1,604 $1,754 $2,018 $2,180 $2,680
7 $1,853 $2,026 $2,330 $2,516 $3,016
8 $2,051 $2,242 $2,578 $2,784 $3,284
9 $2,252 $2,462 $2,832 $3,058 $3,558
10+ $2,448 $2,676 $3,078 $3,324 $3,824

Resource Limits (WAC 388-470-0005)

Effective Limit Source
Sep 1, 1998 $1,000 Pre-E2SHB 1831 applicant limit
Feb 1, 2019 $6,000 E2SHB 1831 (2018 c 40)
Feb 1, 2024 $12,000 HB 1447 Sec 1 (2023 c 418)

Before Feb 1, 2019, WA had a two-tier resource structure: $1,000 base for applicants plus an additional $3,000 savings exemption for recipients. E2SHB 1831 collapsed this into a single $6,000 limit.

Benefit Calculation

Per WAC 388-450-0162:

benefit = max(payment_standard - countable_income, 0)

Where:

  • payment_standard = amount from WAC 388-478-0020 for the assistance unit size (capped at size 10)
  • countable_income = countable earned income (after disregards) + gross unearned income

Maximum Grant Cap Removal

This PR removes a previously implemented $1,338 maximum grant cap (payment_standard/maximum_amount.yaml). This cap does not exist in current regulation:

  • WAC 388-450-0162 defines benefits as simply "payment standard minus countable income" with no cap
  • WAC 388-478-0020 lists payment standards up to $1,662 for size 10+
  • The $1,338 value was the 2018-era payment standard for size 10+ (WSR 18-09-088), superseded by $1,539 in 2021 and $1,662 in 2024
  • No WAC or RCW section codifies a separate grant cap independent of the payment standard
  • The DSHS Eligibility A-Z Manual still references $1,338, but this is internally contradictory with current WAC 388-478-0020 (a $1,338 cap would make the size 8/9/10 payment standards meaningless)

Changes

Parameters Updated

Parameter Historical Values Added
payment_standard/amount.yaml 2016-01-15, 2018-07-01, 2021-07-01
income/limit.yaml 2016-01-15, 2018-07-01, 2021-07-01, split 2024 into 2024-01-01 and 2024-08-01
resource_limit.yaml 1998-09-01 ($1,000), fixed dates: 2019-02-01 ($6,000), 2024-02-01 ($12,000)
maximum_family_size.yaml Backdated to 2016-01-01
earned_income_disregard/rate.yaml Backdated to 1998-09-01 (renamed from percentage_disregarded.yaml)
earned_income_disregard/amount.yaml Fixed effective date to 2024-08-01
earned_income_disregard/in_effect.yaml New file — boolean toggle for when $500 flat disregard applies

Parameters Deleted

  • payment_standard/maximum_amount.yaml — erroneous $1,338 cap (see rationale above)

Variables Updated

  • wa_tanf.py — removed maximum_amount cap; benefit = max(payment_standard − countable_income, 0)
  • wa_tanf_countable_earned_income.py — uses in_effect boolean to gate the $500 flat disregard by period
  • wa_tanf_eligible.py — refactored immigration check to use add() instead of spm_unit.any()

Audit Verification

All 96 parameter values verified against regulatory sources (0 mismatches):

  • 40 payment standard values (4 periods × 10 sizes) — all match WSR filings
  • 50 income limit values (5 periods × 10 sizes) — all match WSR filings
  • 6 disregard/resource parameters — all match WAC, HB 1447, and E2SHB 1831

Test Plan

  • All WA TANF tests pass
  • Historical tests verify 2018-01 uses Jan 2016 parameter values
  • Historical tests verify 2022-01 uses Jul 2021 parameter values (15% increase)
  • Tests verify correct behavior before and after Aug 2024 policy changes
  • Tests verify pre-2019 ($1,000), pre-2024 ($6,000), and current ($12,000) resource limits
  • Integration tests span 4 periods: 2018-01, 2022-01, 2024-01, 2025-01

🤖 Generated with Claude Code

@codecov
Copy link

codecov bot commented Jan 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (55a0045) to head (7118a10).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##             main     #7202      +/-   ##
===========================================
+ Coverage   97.82%   100.00%   +2.17%     
===========================================
  Files           3         3              
  Lines          92        44      -48     
  Branches        2         1       -1     
===========================================
- Hits           90        44      -46     
+ Misses          1         0       -1     
+ Partials        1         0       -1     
Flag Coverage Δ
unittests 100.00% <100.00%> (+2.17%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hua7450 hua7450 marked this pull request as ready for review January 22, 2026 17:41
@PavelMakarchuk
Copy link
Collaborator

PR Review - Washington TANF Backdating

🔴 Critical Issues (Must Fix Before Merge)

None identified. All historical values verified against WSR filings.


🟡 Should Address

1. Missing 2022-01 Period Tests

Several test files lack coverage for the 2022-01 period (uses July 2021 values):

  • wa_tanf_resources_eligible.yaml - No 2022-01 tests (should show $6,000 limit)
  • wa_tanf_countable_earned_income.yaml - No 2022-01 tests (50% disregard only)
  • wa_tanf.yaml - No 2022-01 or 2025-01 period tests

2. Missing 2025-01 Period Tests

  • wa_tanf_payment_standard.yaml - No 2025-01 tests to verify Jan 2024 values still apply

3. Missing Reference for 2024 Payment Standards

File: payment_standard/amount.yaml

  • WSR 23-23-054 corroborates the 2024-01-01 values but is not in the reference list (only in income/limit.yaml)
  • Fix: Add WSR 23-23-054 to payment_standard references

4. Missing Reference for Historical $1,000 Resource Limit

File: resource_limit.yaml

  • The 1998-09-01 $1,000 value is explained in a comment but lacks a direct reference link

5. Minor Date Discrepancy for 2016 Values

  • WSR 16-01-093 states effective date as January 15, 2016
  • PR uses 2016-02-01 (16 days later)
  • Suggestion: Consider using 2016-01-01 for consistency with first-of-month convention

🟢 Suggestions

  1. Comment update needed: wa_tanf_eligible.py:28 mentions "$6,000" resource limit but current value is $12,000 for 2024+

  2. Boundary tests: Add one-dollar-below threshold tests for resource limits ($11,999, $5,999)

  3. Zero resource tests: Add tests verifying zero resources pass eligibility


✅ What's Verified Correct

Parameter Historical Values Status
Payment Standard 2016, 2018, 2021, 2024 ✓ All verified against WSR filings
Income Limit 2016, 2018, 2021, 2024-01, 2024-08 ✓ All verified
Resource Limit 1998→$1K, 2019→$6K, 2024→$12K ✓ Verified against legislation
Earned Income Disregard 50% rate, $500 flat (Aug 2024) ✓ Verified against WAC 388-450-0170
in_effect parameter Boolean for $500 disregard ✓ Correctly false before Aug 2024

Key Policy Timeline Verified:

  • 2016: 9% increase in payment standards
  • 2018: 9.3% increase
  • 2021: 15% increase (WSR 21-21-054)
  • 2024-01: 8% increase
  • 2024-08: $500 flat disregard added, income limits raised by $500

Validation Summary

Check Result
Historical Values ✅ All WSR values verified
Effective Dates ⚠️ Minor 2016 date discrepancy
Reference Quality ⚠️ Missing 2024 WSR in payment_standard
Code Patterns ✅ All patterns correct
Test Coverage ⚠️ Missing 2022-01 and 2025-01 tests
CI Status ✅ All 83 tests passing

Code Changes Verified

Change Status
Removed maximum_amount.yaml ✓ Safe - no code references it
wa_tanf_countable_earned_income.py uses in_effect ✓ Correct where() pattern
wa_tanf.py removed max cap ✓ Handled by maximum_family_size

Test Coverage: 83 Tests Passing

File Tests
integration.yaml 21
wa_tanf_income_eligible.yaml 15
wa_tanf_countable_earned_income.yaml 12
wa_tanf_payment_standard.yaml 12
wa_tanf.yaml 11
wa_tanf_eligible.yaml 6
wa_tanf_resources_eligible.yaml 6

Historical Value Verification

Payment Standard Size 1:

Period PR Value WSR Value Match
2016-02-01 $332 $332
2018-07-01 $363 $363
2021-07-01 $417 $417
2024-01-01 $450 $450

Income Limit Relationship Verified:

  • Jan 2024: Limit = 2 × Payment Standard (exact for all sizes)
  • Aug 2024: Limit = Jan 2024 + $500 (exact for all sizes)

Next Steps

To auto-fix issues: /fix-pr 7202

Or address manually:

  1. Add 2022-01 tests to wa_tanf_resources_eligible.yaml and wa_tanf_countable_earned_income.yaml
  2. Add 2025-01 tests to wa_tanf.yaml and wa_tanf_payment_standard.yaml
  3. Add WSR 23-23-054 reference to payment_standard/amount.yaml

🤖 Generated with Claude Code - Complete Review Plugin

Copy link
Collaborator

@PavelMakarchuk PavelMakarchuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if I am right, but can we add an integration test or two for 2018 for all backdating PRs?


values:
2024-01-01: 500
2024-08-01: 500
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will not work with this parameter being backdated right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This $500 disregard is a new feature start effect in 2024-08. So if 2024-07, no 500 disregard, to test it output, compare test cases of 2024-01 and 2025-01

@hua7450
Copy link
Collaborator Author

hua7450 commented Feb 1, 2026

Not sure if I am right, but can we add an integration test or two for 2018 for all backdating PRs?

I have test cases in wa_tanf_countable_earned_income.yaml‎

hua7450 and others added 4 commits February 20, 2026 16:00
WSR 16-01-093 effective date is January 15, 2016, not February 1.
Changed 2016-02-01 to 2016-01-15 in payment_standard/amount.yaml
and income/limit.yaml.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The amount parameter only had a value starting 2024-08-01, causing a
ParameterNotFoundError when microsimulation ran for 2024-01-01. Added
1998-09-01: 0 so the parameter is always defined.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…exists

Replaced numpy where(p.in_effect, p.amount, 0) with a Python if on the
scalar p.in_effect parameter. This avoids resolving p.amount before
2024-08-01, fixing the microsim ParameterNotFoundError without needing
a dummy 1998-09-01: 0 value in amount.yaml.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Washington TANF backdating

2 participants