Skip to content

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Dec 23, 2025

Summary

Closes #7038

Implements the New Mexico TANF program (officially called "New Mexico Works"), administered by the New Mexico Health Care Authority (HCA).

Regulatory Authority

Income Eligibility Tests

Gross Income Test

Gross income must be at or below 85% of the Federal Poverty Guidelines for the benefit group size.

Source: 8.102.500.8(B) NMAC, State Plan Section 9.8, p.20

Net Income Test

Countable net income must be at or below the payment standard (standard of need) for the benefit group size.

Source: 8.102.520.11 NMAC

Income Deductions & Exemptions

Work Incentive Deduction (Earned Income)

Family Type Flat Deduction Plus Percentage
Single-parent families $125 + 50% of remainder
Two-parent families $225 per parent + 50% of remainder

Source: 8.102.520.12(C) NMAC, State Plan Section 9.8, p.21

Child Care Deduction

Child Age Maximum Monthly Deduction
Under age 2 $200 per child
Age 2 and older $175 per child

Source: 8.102.520.12(D) NMAC, State Plan Section 9.8, p.21

Child Support Deduction

Component Amount
Disregard $50
Passthrough (1 child) $100
Passthrough (2+ children) $200

Source: 8.102.520.10 NMAC

Resource Limits

Resource Type Limit
Liquid resources $1,500
Non-liquid resources $2,000

Source: 8.102.510.8 NMAC, State Plan Section 9.7, p.20

Payment Standards (Historical)

Benefit Group Size Aug 2015 (7.5% adj) Nov 2018 (adj removed) Aug 2023 (23% increase)
1 $244 $266 $327
2 $327 $357 $439
3 $409 $447 $549
4 $493 $539 $663
5 $576 $630 $775
6 $659 $721 $887
7 $743 $812 $999
8 $843 $922 $1,134
Each additional +$83 +$91 +$111

Source: 8.102.500.8(D) NMAC, State Plan p.19

Benefit Calculation

Benefit = Payment Standard - Countable Income

Where:
  Countable Income = Countable Earned + Countable Unearned
  Countable Earned = max(Gross Earned - Work Incentive - Child Care, 0)
  Countable Unearned = max(Gross Unearned - Child Support Deduction, 0)

File Structure

Variables

nm_works/
├── eligibility/
│   ├── nm_works_eligible.py
│   ├── nm_works_gross_income_eligible.py
│   ├── nm_works_net_income_eligible.py
│   └── nm_works_resources_eligible.py
├── income/
│   ├── nm_works_gross_income.py
│   ├── nm_works_countable_income.py
│   ├── earned/
│   │   ├── nm_works_countable_earned_income.py
│   │   └── nm_works_earned_income_deduction_person.py
│   ├── unearned/
│   │   └── nm_works_countable_unearned_income.py
│   └── deductions/
│       ├── nm_works_childcare_deduction.py
│       └── nm_works_child_support_deduction.py
├── nm_works.py
└── nm_works_maximum_benefit.py

Parameters

nm_works/
├── income/
│   ├── gross_limit/rate.yaml (85% FPL)
│   └── deductions/
│       ├── work_incentive/ (single_parent, two_parent, rate)
│       ├── childcare/amount.yaml (bracket by age)
│       └── child_support/ (disregard, passthrough)
├── payment_standard/
│   ├── amount.yaml (by size, with history)
│   ├── additional_person.yaml
│   └── max_table_size.yaml
└── resources/limit/ (liquid, non_liquid)

Not Implemented

  • Extended age eligibility for special education (18-21)
  • Extended age eligibility for high school students (18-19)
  • Transition Bonus Program
  • Diversion Payment
  • Sanctions
  • Support Services
  • School Clothing Allowance

🤖 Generated with Claude Code

hua7450 and others added 2 commits December 23, 2025 18:24
Starting implementation of New Mexico TANF program.
Documentation and parallel development will follow.

Closes PolicyEngine#7038
Implements the New Mexico Health Care Authority's Temporary Family
Assistance program including:

- Eligibility determination (income, demographic, immigration)
- Income limit calculations (85% FPL gross test)
- Payment standard calculations by family size
- Income deductions (work incentive, child care, child support)
- Benefit calculation (payment standard minus countable income)
- Comprehensive integration and unit tests (122 tests)

All variables include regulatory citations from 8.102 NMAC.

Closes PolicyEngine#7038

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@codecov
Copy link

codecov bot commented Dec 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (ffcbc3e) to head (20d8d8e).
⚠️ Report is 213 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7039    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            3        13    +10     
  Lines           39       184   +145     
==========================================
+ Hits            39       184   +145     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

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 11, 2026 16:37
@PavelMakarchuk
Copy link
Collaborator

PR Review - New Mexico Works (NM TANF)

Overall Assessment: ✅ APPROVE

This is a well-implemented new program that follows PolicyEngine patterns correctly.


🟢 Strengths

Code Patterns - All Checks Pass:

  • ✅ No hard-coded values - all numeric values sourced from parameters
  • ✅ Correct nm_works_* naming prefix used consistently
  • ✅ Proper adds attribute for pure sums, add() function for operations
  • ✅ Correct add() > 0 pattern instead of .any()
  • ✅ Monthly period for all benefit calculations
  • ✅ Correct entity levels (SPMUnit for household, Person for individual)
  • ✅ No TODOs or stub implementations
  • ✅ Proper defined_for usage with StateCode.NM
  • ✅ Reference format uses tuples correctly

Parameters - Complete and Well-Documented:

  • ✅ All parameters have required metadata (description, unit, period, label, reference)
  • ✅ References include specific NMAC sections and PDF page numbers
  • ✅ Value formatting uses underscores for large numbers
  • ✅ Proper bracket structure for scale parameters

CI Status:

  • ✅ All checks passing (Lint, Tests, Coverage)

🟡 Minor Suggestions (Non-Blocking)

  1. Label Consistency: Some labels like "work incentive percentage disregard rate" could be simplified to "work incentive disregard rate"

  2. Period for Resources: resources/limit/liquid.yaml and non_liquid.yaml use period: month - verify this is intentional vs annual

  3. Variable Documentation: Consider adding docstrings to complex formulas like nm_works_earned_income_deduction_person.py explaining calculation steps

  4. Historical Tests: Verify tests exist for each payment standard period (2015, 2018, 2023)


Validation Summary

Check Result
Hard-coded Values ✅ None found
Naming Conventions ✅ Correct nm_works_* prefix
adds/add() Usage ✅ Correct
Period Handling ✅ Monthly for benefits
Entity Levels ✅ Correct
Reference Quality ✅ Good - includes NMAC sections + page numbers
CI Status ✅ All passing

Regulatory Coverage

Based on PR description, implementation covers:

  • ✅ Gross income test (85% FPL)
  • ✅ Net income test (payment standard)
  • ✅ Work incentive deductions ($125 single/$225 two-parent + 50%)
  • ✅ Childcare deduction ($200 under 2, $175 age 2+)
  • ✅ Child support ($50 disregard + passthrough)
  • ✅ Payment standards with historical values
  • ✅ Resource limits ($1,500 liquid + $2,000 non-liquid)

Not implemented (documented in PR):

  • Extended age eligibility
  • Transition Bonus Program
  • Diversion Payment
  • Sanctions

Recommendation: Ready to merge ✅

🤖 Generated with Claude Code

@PavelMakarchuk PavelMakarchuk merged commit 6d781ea into PolicyEngine:main Jan 25, 2026
9 checks passed
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.

Implement New Mexico TANF

2 participants