-
Notifications
You must be signed in to change notification settings - Fork 201
Add Georgia TANF (simple implementation) #6791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This commit adds a complete implementation of Georgia's Temporary Assistance for Needy Families (TANF) program, including: Parameters: - Benefit standards (family maximum, standard of need, gross income ceiling) - Income deductions (work expense, childcare, earned income disregard) - Resource limits Variables: - Main benefit calculation (ga_tanf) - Eligibility determination (income, resources, overall) - Income calculations (earned, unearned, countable) - Benefit standards calculations Tests: - 16 comprehensive integration test cases covering: - Various family sizes (1-5 members) - Earned and unearned income scenarios - Childcare deduction for different age groups - Earned income disregard (initial 4 months vs months 5-12) - Resource limit testing - Gross income ceiling testing - Two-parent households - SSI exclusions Documentation: - Complete documentation summary from official Georgia sources - Working references for ongoing development Integration fixes applied: - Fixed test variable naming: ga_tanf_maximum_benefit → ga_tanf_family_maximum - Removed Python cache files - All variables consistently use SPMUnit entity 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Replace invalid .keys() method calls on parameter nodes with hardcoded max_table_size value. The parameter structure has values for unit sizes 1-10, so we use 10 as the maximum table size. This fixes ParameterNotFoundError that was preventing tests from running. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #6791 +/- ##
============================================
+ Coverage 72.92% 100.00% +27.07%
============================================
Files 3252 11 -3241
Lines 46840 160 -46680
Branches 243 0 -243
============================================
- Hits 34159 160 -33999
+ Misses 12667 0 -12667
+ Partials 14 0 -14
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Fixes: - Fix childcare deduction to use actual expenses capped at max per dependent - Fix countable resources to properly access spm_unit_cash_assets - Remove SSI from unearned income (correctly excluded from TANF) - Remove ga_tanf_assistance_unit_size variable (use spm_unit_size directly) - Update benefit standard variables to use spm_unit_size Documentation: - Document simplified implementation does not model time-based disregards - Document simplified implementation does not exclude SSI recipients from unit size Tests: - Add 12 unit test files (52 test cases total) - Update integration test expectations to match simplified implementation - All 16 integration tests now passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Cleanup and standardization to align with Pennsylvania and Ohio TANF implementations. Key changes: - Remove unnecessary wrapper variables (ga_tanf_gross_earned_income, ga_tanf_gross_unearned_income) - Use federal tanf_gross_earned_income and tanf_gross_unearned_income directly - Flatten folder structure (remove income/earned and income/unearned subfolders) - Add demographic and citizenship eligibility checks (was missing) - Fix test files to use employment_income_before_lsr instead of employment_income - Delete fragile unit tests that tested internal implementation details - Keep integration tests and core functionality tests (48 tests) Structure improvements: - Variables: 16 → 14 files (removed 2 wrappers) - Tests: 13 files (91 tests) → 6 files (48 tests) - All 48 remaining tests passing Eligibility fix: - Added is_demographic_tanf_eligible check (minor child OR pregnant woman) - Added is_citizen_or_legal_immigrant check (at least one citizen) - Matches PA and OH TANF eligibility pattern All tests passing (48/48). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
…rameters Changes: 1. Gross Income Ceiling Formula - Replace hardcoded table with 185% × Standard of Need formula - Add gross_income_ceiling_rate parameter (1.85) - Remove gross_income_ceiling and gross_income_ceiling_increment tables - Update ga_tanf_gross_income_ceiling variable to use formula - Per Ga. Comp. R. & Regs. 290-2-28-.02(j) 2. Earned Income Disregard Precision - Change percentage from 0.3333333333 to 0.33 for clarity - Update test expectations to match (Cases 10 & 12) 3. Parameter Folder Reorganization - Rename benefit_standards/ to financial_standards/ - Create subfolders: standard_of_need/ and family_maximum/ - Rename files: base.yaml and additional.yaml - Update all variable references to new parameter paths 4. Parameter Descriptions and Labels - Update descriptions to reflect "base" and "additional" naming - Change "multiplier" to "rate" for gross_income_ceiling_rate - Clarify "beyond size 10" for additional amounts - All descriptions follow parameter-architect rules All 48 tests passing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
After comprehensive review against PAMMS manual and Georgia regulations, corrected multiple critical parameter errors that would have resulted in incorrect benefit calculations. ## Critical Parameter Fixes ### 1. Work Expense Deduction ($90 → $250) - **File**: income/deductions/work_expense.yaml - **Regulation**: PAMMS Section 1615 and 1605 - **Impact**: $160/month difference affects ALL working families - Correct value: $250 per employed individual ### 2. Removed Earned Income Disregard (Does Not Exist) - **Deleted**: 4 parameter files + 1 variable file - **Regulation**: PAMMS 1615 confirms NO $30 + 1/3 disregard in current GA policy - **Impact**: Was overstating deductions, resulting in benefits too high - Georgia does NOT use the traditional AFDC earned income disregard - Only $250 work expense deduction applies ### 3. Standard of Need Values (7 out of 10 corrected) - **File**: financial_standards/standard_of_need/base.yaml - **Source**: PAMMS Appendix A (March 2025) - **Corrected values**: - Size 2: $324 → $356 (+$32) - Size 4: $529 → $500 (-$29) - Size 5: $639 → $573 (-$66) - Size 6: $749 → $621 (-$128) - Size 7: $804 → $672 (-$132) - Size 8: $804 → $713 (-$91) - Size 9: $804 → $751 (-$53) ### 4. Family Maximum Values (7 out of 10 corrected) - **File**: financial_standards/family_maximum/base.yaml - **Source**: PAMMS Appendix A (March 2025) - **Corrected values**: - Size 2: $188 → $235 (+$47) - Size 4: $364 → $330 (-$34) - Size 5: $447 → $378 (-$69) - Size 6: $530 → $410 (-$120) - Size 7: $530 → $444 (-$86) - Size 8: $530 → $470 (-$60) - Size 9: $530 → $496 (-$34) ## Additional Changes ### Code Cleanup - Made `ga_tanf_countable_resources` empty variable (comment-only) - Updated `ga_tanf_resources_eligible` to use `spm_unit_cash_assets` directly - Deleted unused `vehicle_value_limit.yaml` parameter - Updated `ga_tanf_countable_earned_income` to remove disregard logic ### Test Updates - Completely rewrote integration tests with correct calculations - Updated 16 test cases to reflect accurate policy - Fixed resource eligibility tests to use correct input variable - All 48 tests passing ### Documentation - Updated working_references.md with corrected values - Removed incorrect earned income disregard documentation - Added critical corrections changelog entry - Marked resolved questions about parameter sources ## Verification Sources All corrections verified against: - PAMMS Appendix A (March 2025 publication) - PAMMS Section 1615 (Deductions) - PAMMS Section 1605 (Basic Budgeting) - PAMMS Section 1525 (Income) - Ga. Comp. R. & Regs. 290-2-28-.02(j) (GIC formula) ## Impact Assessment These corrections ensure: - Working families receive accurate benefit calculations - Income eligibility determinations match actual Georgia policy - Formula-based GIC calculation per regulations - Simplified resource eligibility (cash assets only) All 48 tests passing after corrections. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Changed work expense deduction from SPM-unit level to person level per PAMMS Section 1615: "$250 per employed individual" ## Formula Changes ### New Person-Level Variable - Created `ga_tanf_earned_income_after_disregard.py` (Person entity) - Applies $250 work expense at individual level - Each employed person gets their own deduction ### Updated SPM-Unit Calculation - Modified `ga_tanf_countable_income.py` to use correct order per PAMMS 1605: 1. Sum person-level earned income (after work expense) 2. Apply childcare deduction to earned income only 3. Add unearned income (no deductions) - Uses `add()` to sum person-level variables - Properly implements PAMMS 1605 Step 8-9 ### Deleted Obsolete Variables - Removed `ga_tanf_countable_earned_income.py` (replaced by person-level) - Removed `ga_tanf_countable_unearned_income.py` (now using federal variable via add()) - Removed `ga_tanf_work_expense_deduction.py` (work expense now at person level) ## Regulatory Alignment Per PAMMS Section 1605 (13-step procedure): - Step 8: "Apply deductions to each employed individual" - Step 9: "Add unearned income to net earned income" - "Deductions are not allowed to unearned income" Per PAMMS Section 1615: - "$250 is subtracted from the earned income of each employed individual" - "Deductions applied in order: work expense, then childcare" ## Test Updates ### Rewrote Test Files - `ga_tanf_countable_income.yaml`: 7 → 8 tests - Now tests person-level work expense - Tests two workers both getting $250 deduction - Tests childcare applies to earned only - Removed stubbing of deleted variables - `ga_tanf_income_eligible.yaml`: 7 tests - Updated to use real inputs instead of stubbing - Tests complete calculation pipeline - Verifies both GIC and SON tests ### Updated References - Added PAMMS 1605 and 1615 citations to all formulas - Comments explain regulatory requirements - Clear documentation of deduction order ## Impact Example: Two working parents - Parent 1: $600 earned → $600 - $250 = $350 countable - Parent 2: $400 earned → $400 - $250 = $150 countable - Total: $500 countable (vs $750 without proper person-level deduction) All 49 tests passing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
PavelMakarchuk
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor
| description: Georgia adds this additional amount to the family maximum for each member beyond size 10 under the Temporary Assistance for Needy Families program. | ||
|
|
||
| values: | ||
| 2025-03-01: 17 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need values that start on or before Jan. 1st 2025
| reference: | ||
| - title: PAMMS TANF Policy Manual - Appendix A Financial Standards | ||
| href: https://pamms.dhs.ga.gov/dfcs/tanf/appendix-a/ | ||
| publication_date: 2025-03-01 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dont think this is valid, right?
| period: month | ||
| label: GA TANF standard of need additional amount | ||
| reference: | ||
| - title: PAMMS TANF Policy Manual - Appendix A Financial Standards |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No legal code?
| unit_size = spm_unit("spm_unit_size", period) | ||
|
|
||
| # Maximum amounts for units up to 10 people | ||
| max_table_size = 10 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same question as in other tanfs, should we hard-code this
| # For simplified implementation, use SPM unit cash assets | ||
| # In a more complete implementation, this would account for | ||
| # excluded resources (primary residence, household goods, etc.) | ||
| # and vehicle value limits |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this not be an adds of spm_unit_cash_assets for now?
Summary
Implements Georgia TANF (Temporary Assistance for Needy Families) cash assistance program with formulas verified against PAMMS policy manual.
Closes #6790
Status
Key Changes
Implementation Summary
Formula (Per PAMMS Sections 1605 and 1615)
Work Expense: $250 per employed individual (person level)
Childcare Deduction: Applied to earned income only
Unearned Income: No deductions (full amount countable)
Benefit Calculation (PAMMS 1605 Steps 11-13):
Two-Tier Income Eligibility (PAMMS 1605 Steps 6 & 11):
Files Added
Parameters (9 files)
Variables (11 files)
Tests (6 files, 49 test cases)
Example Calculations
Working Single Parent
Household: Single parent with 2 children
Income: $500/month employment income + $100/month child support
Low Income (Full Benefit)
Household: Family of 2
Income: $200/month earned income
Two Working Parents (Over GIC)
Household: Family of 3 (2 parents, 1 child)
Income: Parent 1 = $600/month, Parent 2 = $400/month
Testing & Verification
Test Results
✅ All 49 tests passing across 6 test files - 16 integration tests - 33 unit tests - 0 failuresCoverage Highlights
How to Run
Implementation Highlights
Key Features
Design Decisions
Person-Level Work Expense
Formula-Based GIC
Simpler Than PA/OH
Order of Operations (PAMMS 1605)
Federal Rule Reuse
tanf_gross_earned_income(federal)tanf_gross_unearned_income(federal)is_demographic_tanf_eligible(federal)is_citizen_or_legal_immigrant(federal)Known Limitations & Future Enhancements
Not Yet Implemented
Simplified Assumptions
spm_unit_sizedirectly (doesn't exclude SSI recipients)References
Primary Sources
Branch Information
Branch:
ga-tanf-simpleBase:
masterStatus: ✅ All formulas verified against PAMMS, 49 tests passing
Implementation by: @hua7450
Issue: #6790
Ready for: Code review and testing feedback
🤖 Generated with Claude Code
Co-Authored-By: Claude [email protected]