Skip to content

Add Working Parents Tax Relief Act of 2026#7914

Draft
DTrim99 wants to merge 7 commits intoPolicyEngine:mainfrom
DTrim99:congress-working-parents-tax-relief-act
Draft

Add Working Parents Tax Relief Act of 2026#7914
DTrim99 wants to merge 7 commits intoPolicyEngine:mainfrom
DTrim99:congress-working-parents-tax-relief-act

Conversation

@DTrim99
Copy link
Copy Markdown
Collaborator

@DTrim99 DTrim99 commented Apr 1, 2026

Summary

Implements the Working Parents Tax Relief Act of 2026 (H.R. by Rep. McDonald Rivet) as a contributed reform. This bill enhances the EITC for parents of young children (under age 4).

Closes #7913

Note: Bill text is not yet public. Legislative reference will be added when the bill is released.

Key Provisions

Credit Percentage Increases

  • 1 qualifying child: If the child has not attained age 4, increase credit percentage by 42.24 percentage points
  • 2+ qualifying children: Increase credit percentage by 30.07 percentage points for each of the youngest 3 qualifying children that has not attained age 4

Phaseout Percentage Increases

  • For 1+ qualifying children: Increase phaseout percentage by 5 percentage points for each of the youngest 3 qualifying children that has not attained age 4

Effective Date

Tax years beginning after December 31, 2025 (i.e., 2026+)

IRC §32 Statute Structure Implementation

Per IRC §32(b), the EITC maximum is calculated as:

maximum_credit = credit_percentage × earned_income_amount

When this reform increases the credit percentage, the maximum EITC must also increase proportionally. PolicyEngine's baseline EITC implementation specifies the phase-in rate and maximum directly, so this reform overrides eitc_maximum to scale it correctly:

new_max = baseline_max × (new_rate / baseline_rate)

Corrected EITC Maximums Under Reform

Scenario Baseline Max Reform Max Multiplier
1 child with young child (76.24% vs 34%) $4,427 $9,927 ×2.242
2 children with 2 young (100.14% vs 40%) $7,316 $18,316 ×2.504
3+ children with 3 young (135.21% vs 45%) $8,231 $24,731 ×3.005

Increased Phase-Out Rates

Children Baseline Rate Reform Rate Increase
1 child with young 15.98% 20.98% +5pp
2 children with 2 young 21.06% 31.06% +10pp
3+ children with 3 young 21.06% 36.06% +15pp

Parameters Created

Under gov/contrib/congress/mcdonald_rivet/working_parents_tax_relief_act/:

  • in_effect.yaml - Boolean toggle (default: false, period: year)
  • young_child_age_threshold.yaml - Age threshold (4 years)
  • credit_percentage_increase_one_child.yaml - 42.24%
  • credit_percentage_increase_per_young_child.yaml - 30.07%
  • phaseout_percentage_increase_per_young_child.yaml - 5%
  • max_young_children.yaml - Maximum 3 children for bonus

Variables Defined

In the reform Python file:

  • eitc_young_child_count (NEW) - Count of EITC-qualifying children under age 4 (unit: child)
  • eitc_phase_in_rate (OVERRIDE) - Adds young child bonus to baseline
  • eitc_phase_out_rate (OVERRIDE) - Adds young child bonus to baseline
  • eitc_maximum (OVERRIDE) - Scales maximum proportionally with rate increase (calls eitc_phase_in_rate to avoid duplicated logic)

State EITC Impact

This reform affects state EITCs that are calculated as a percentage of the federal EITC (e.g., NY, CA, etc.) because it modifies the underlying federal EITC amount.

Test Coverage

56 test cases covering:

Rate Tests (Cases 1-9, 14-15, 19-22, 26)

  • Phase-in and phase-out rate calculations for 1, 2, and 3+ children
  • Mixed young/older children scenarios
  • Filing status variations (Single, Joint, Head of Household)
  • Newborn and infant edge cases
  • Reform ON vs OFF comparison

Phase-In Region Dollar Amount Tests (Cases 10-13, 27-45)

  • Federal EITC dollar amounts with income in phase-in region
  • Verification that increased rates lead to increased maximum credits
  • State EITC impacts (NY, CA)
  • Summary tests showing +124% to +200% EITC increases

Phase-Out Boundary Tests (Cases 46-48)

  • Tests at exact phase-out threshold ($23,890 for 1-2 children, $23,890 for 3+)
  • Verifies EITC equals maximum at boundary

Phase-Out Region Tests (Cases 49-56)

  • Tests with income $30k, $35k, $40k, $50k (well above phase-out start)
  • Verifies increased phase-out rates work correctly
  • Baseline comparison tests showing phase-out reduction differences

Edge Cases

  • Child exactly age 4 (no bonus - must be under 4)
  • 5+ young children capped at 3 for bonus calculation

Files Changed

  • 6 parameter YAML files
  • 3 Python files (reform + init.py files)
  • 1 reforms.py registration
  • 1 test YAML file (56 test cases)
  • 1 changelog fragment

🤖 Generated with Claude Code

DTrim99 and others added 4 commits April 1, 2026 17:46
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This reform implements the Working Parents Tax Relief Act of 2026
(H.R. by Rep. McDonald Rivet), which enhances the EITC for parents
of young children (under age 4).

Key provisions:
- Credit percentage increase: +42.24pp for 1 child under 4,
  +30.07pp per young child (max 3) for 2+ children
- Phaseout percentage increase: +5pp per young child (max 3)
- Effective for tax years beginning after Dec 31, 2025

Parameters created under gov/contrib/congress/mcdonald_rivet/working_parents_tax_relief_act/:
- in_effect (toggle)
- young_child_age_threshold (4 years)
- credit_percentage_increase_one_child (42.24%)
- credit_percentage_increase_per_young_child (30.07%)
- phaseout_percentage_increase_per_young_child (5%)
- max_young_children (3)

Variables defined:
- eitc_young_child_count (NEW)
- eitc_phase_in_rate (OVERRIDE)
- eitc_phase_out_rate (OVERRIDE)

Includes 28 comprehensive test cases covering federal EITC,
state EITC impacts, and various family scenarios.

Closes PolicyEngine#7913

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added 17 new test cases (Cases 29-45) that verify actual EITC dollar
amounts to demonstrate the significant boost from this reform:

Key boosts shown:
- 1 young child: +124% EITC increase (e.g., $1,700 -> $3,812)
- 2 young children: +150% EITC increase (e.g., $2,000 -> $5,007)
- 3 young children: +200% EITC increase (e.g., $2,250 -> $6,761)

Test coverage now includes:
- Dollar amount comparisons (reform ON vs OFF)
- Various income levels ($2k-$15k)
- 1, 2, and 3+ child scenarios
- Mixed young/older children (partial boost)
- Joint filer scenarios
- Summary comparison tests

Total: 45 comprehensive test cases

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Per IRC §32(b), the EITC maximum is calculated as:
  max = credit_percentage × earned_income_amount

When the Working Parents Tax Relief Act increases the credit percentage,
the maximum must also increase proportionally. This commit:

- Adds eitc_maximum variable override to scale max with rate increase
- Updates test expected values to reflect correct maximums:
  - 1 child with young child: $4,427 → $9,927 (×2.242)
  - 2 children with 2 young: $7,316 → $18,316 (×2.504)
  - 3+ children with 3 young: $8,231 → $24,736 (×3.005)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@DTrim99
Copy link
Copy Markdown
Collaborator Author

DTrim99 commented Apr 2, 2026

Program Review: Working Parents Tax Relief Act of 2026 (PR #7914)

Source Documents

  • Source: Bill text / IRC §32 (contributed reform - no regulatory PDF)
  • Year: 2026
  • Scope: PR changes only

Critical (Must Fix)

  1. CI Failure: The "Full Suite - Baseline (excl States) & Reform & Python" test suite is failing. This is a blocking issue that must be investigated and resolved.

  2. Missing References: All 6 parameter files lack the required reference metadata field:

    • credit_percentage_increase_one_child.yaml
    • credit_percentage_increase_per_young_child.yaml
    • in_effect.yaml
    • max_young_children.yaml
    • phaseout_percentage_increase_per_young_child.yaml
    • young_child_age_threshold.yaml

    For contributed reforms, parameters should cite the bill name, sponsor, and relevant section.

  3. Incorrect Unit: The eitc_young_child_count variable has unit = USD but it counts children, not dollars. Should be unit = "child" or similar.

Should Address

  1. Missing Period Metadata: in_effect.yaml is missing period metadata (should be year for annual parameters)

  2. Documentation vs Reference: Variables use inline documentation strings instead of the reference field pattern

  3. No Phase-Out Region Tests: The reform modifies eitc_phase_out_rate, but tests only cover phase-in calculations. Need tests with income in the phase-out range to verify the increased phase-out rate works correctly.

  4. No Phase-Out Boundary Tests: Missing tests at the phase-out threshold boundaries (where the credit starts phasing out)

Suggestions

  1. Test Naming: Consider more descriptive test names that indicate what's being tested (e.g., test_phase_in_rate_one_young_child)

  2. Error Margins: Review absolute_error_margin values - ensure they're appropriate for the test type (dollar amounts vs percentages)

  3. Description Format: Parameter descriptions could follow a more consistent format

  4. Additional Edge Cases: Consider adding tests for:

    • Married filing separately with young children
    • Income exactly at maximum (no credit)
    • Verify state EITC calculations that depend on federal EITC

Positive Notes ✓

  • Implementation is Correct: All parameter values match the bill provisions (42.24% for 1 child, 30.07% per child for 2+, 5% phase-out increase, age 4 threshold, max 3 young children)
  • Formula Logic is Sound: Proper use of update_variable, where(), min_() for capping at 3 children
  • Comprehensive Test Coverage: 45 test cases covering phase-in rates, reform ON/OFF comparisons, mixed ages, state EITC impacts
  • Correct IRC §32 Structure: Maximum credit calculation correctly scales with the rate increase per the statute

Validation Summary

Check Result
Regulatory Accuracy ✓ Correct implementation
Reference Quality 3 issues (missing references)
Code Patterns 2 issues (unit, period metadata)
Test Coverage 2 gaps (phase-out tests)
CI Status FAILING

Review Severity: REQUEST_CHANGES

Rationale: The CI failure is a blocking issue. Additionally, all parameters need references for traceability, and the unit error on eitc_young_child_count should be fixed.

Next Steps

  1. Investigate and fix the CI failure
  2. Add reference metadata to all 6 parameter files citing the bill
  3. Fix unit = USDunit = "child" on eitc_young_child_count
  4. Consider adding phase-out region tests

To auto-fix some issues: /fix-pr 7914


🤖 Automated review by PolicyEngine program-reviewer

DTrim99 and others added 2 commits April 2, 2026 11:56
Fixes:
- eitc_young_child_count: Changed unit from USD to "child"
- in_effect.yaml: Added period: year metadata

New tests (Cases 46-56):
- Phase-out boundary tests at exact threshold ($23,840/$23,810)
- Phase-out region tests at $30k, $35k, $40k, $50k income levels
- Verifies increased phase-out rates work correctly:
  - 1 child: 20.98% (vs baseline 15.98%)
  - 2 children: 31.06% (vs baseline 21.06%)
  - 3+ children: 36.06% (vs baseline 21.06%)
- Baseline comparison tests for phase-out region

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Corrected new_max calculation for 3+ children:
- $8,231 × (135.21% / 45%) = $24,731 (not $24,736)

Updated Cases 48, 54, 55 with correct expected EITC values.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@DTrim99 DTrim99 requested a review from daphnehanse11 April 3, 2026 15:21
@daphnehanse11
Copy link
Copy Markdown
Collaborator

daphnehanse11 commented Apr 3, 2026

PR Review

Nice work overall — CI is all green and the reform logic is sound. A few issues to address before merge.

🔴 Critical (must fix)

All 6 parameter files are missing reference fields

Per PolicyEngine convention (and matching how other contrib reforms are structured, e.g. golden/fisc_act/in_effect.yaml, hawley/awra/in_effect.yaml), every parameter file needs a reference in its metadata linking to the authoritative bill text. Currently all 6 new parameter files have no reference at all.

Each of the following needs a reference block added to its metadata:

  • in_effect.yaml
  • credit_percentage_increase_one_child.yaml
  • credit_percentage_increase_per_young_child.yaml
  • phaseout_percentage_increase_per_young_child.yaml
  • young_child_age_threshold.yaml
  • max_young_children.yaml

Example structure (from existing reforms):

metadata:
  unit: bool
  label: Working Parents Tax Relief Act in effect
  period: year
  reference:
    - title: Working Parents Tax Relief Act of 2026
      href: <bill URL or congress.gov link>

Note: If the bill text isn't publicly available yet, use the best available source (press release, sponsor's website, or a news article describing the provisions) and note in a comment that the reference will be updated when the bill is formally introduced. Something like:

reference:
  - title: Working Parents Tax Relief Act of 2026 (bill not yet publicly available)
    href: <press release or sponsor page URL>

🟡 Should address

eitc_young_child_count uses is_qualifying_child_dependent but eitc_child_count uses is_child_dependent

In working_parents_tax_relief_act.py:139, the young child count formula calls is_qualifying_child_dependent. The baseline eitc_child_count variable uses is_child_dependent. Per the documentation on is_qualifying_child_dependent, this variable "does NOT include the disability exception" that is_child_dependent handles.

For children under age 4 this makes no practical difference (a disabled person under 4 would qualify under both), but it's semantically inconsistent — the reform's young child count and the baseline's total child count use different definitions of "qualifying child." Should use is_child_dependent + meets_eitc_identification_requirements to match eitc_child_count exactly.

Rate-bonus logic is duplicated between eitc_phase_in_rate and eitc_maximum

The rate_bonus calculation in eitc_maximum (lines 242–250) is a copy of the same logic in eitc_phase_in_rate. Since the reform overrides eitc_phase_in_rate, eitc_maximum could simplify to:

new_rate = tax_unit("eitc_phase_in_rate", period)
ratio = where(baseline_rate > 0, new_rate / baseline_rate, 1)
return baseline_max * ratio

This avoids the risk of the two formulas drifting out of sync if parameters change.


🟢 Looks good

  • Reform structure and factory function pattern match existing contrib reforms
  • Phase-in and phase-out rate formulas correctly handle the 1-child vs. 2+-child distinction
  • max_young_children cap is correctly applied with min_()
  • if not p.in_effect: return baseline_rate early-return pattern is correct for scalar parameter guards
  • 56 test cases give comprehensive coverage across rate, dollar amount, phase-out boundary, and edge cases
  • Reform registered in reforms.py correctly

Validation summary

Check Result
CI All green
Regulatory logic Correct per bill provisions
Reference quality Missing references in all 6 parameter files
Code patterns 2 issues (child variable inconsistency, duplication)
Test coverage Comprehensive

- eitc_maximum now calls tax_unit("eitc_phase_in_rate", period) instead
  of duplicating the rate bonus calculation
- Prevents the two formulas from drifting out of sync if parameters change
- Added comment noting bill text is not yet public, reference to be added

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

codecov bot commented Apr 3, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 70.97%. Comparing base (77d1ff4) to head (342b1e6).
⚠️ Report is 35 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##              main    #7914       +/-   ##
============================================
- Coverage   100.00%   70.97%   -29.03%     
============================================
  Files            1     4121     +4120     
  Lines           11    59597    +59586     
  Branches         0      292      +292     
============================================
+ Hits            11    42296    +42285     
- Misses           0    17300    +17300     
- Partials         0        1        +1     
Flag Coverage Δ
unittests 70.97% <ø> (-29.03%) ⬇️

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.

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 Working Parents Tax Relief Act of 2026

2 participants