Add NY A04948 Youth Worker Tax Benefits reform#7182
Add NY A04948 Youth Worker Tax Benefits reform#7182DTrim99 wants to merge 11 commits intoPolicyEngine:mainfrom
Conversation
Starting implementation of NY Assembly Bill A04948 which creates: - Youth Earned Income Tax Credit for age 17 (130% of federal EITC) - Enhanced standard deduction of $10,000 for ages 18-24 - Student loan interest deduction Effective January 1, 2026 through December 31, 2031. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix AttributeError in student_loan_interest_deduction by using head_is_dependent_elsewhere instead of tax_unit_head variable - Update test comments to use exact calculated values instead of approximations (removed ~ symbols) - Correct expected value for $10k income test from 884 to 880 (based on exact calculation: $677 max × 1.3 = $880.10) - Add detailed step-by-step calculation comments for $15k phaseout case Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes Applied🔴 Critical Issues Fixed
🟡 Should-Address Issues Fixed
Verification
Exact Calculation Values UsedFor 2027 federal childless EITC parameters:
Ready for re-review. 🤖 Generated with Claude Code |
The PR inadvertently replaced the sc_h3492 import with ny_a04948 instead of adding the new reform alongside the existing one. This restores the SC H3492 EITC refundable reform to the reforms module. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes Applied🔴 Critical Issues Fixed
Verification
Ready for re-review. 🤖 Generated with Claude Code |
PR Review: NY A04948 Youth Worker Tax Benefits🔴 Critical (Must Fix)
🟡 Should Address
🟢 Suggestions
Validation Summary
What's Correct
Next StepsTo auto-fix issues: Or address manually:
🤖 Generated with Claude Code |
Correction to Previous ReviewI incorrectly flagged the Youth Standard Deduction effective date as an error. After re-reading the bill text: Section 2 states: "For taxable years beginning after two thousand twenty-six..." This means the Revised Critical Issues (2 remaining)
The effective dates are correctly implemented. Apologies for the confusion. 🤖 Generated with Claude Code |
- Add reference field to 6 variables missing it: - ny_a04948_youth_eitc_phase_in_rate - ny_a04948_youth_eitc_phased_in - ny_a04948_youth_eitc_phase_out_start - ny_a04948_youth_eitc_phase_out_rate - ny_a04948_youth_eitc_reduction - ny_refundable_credits - Add 8 new test cases: - Youth Standard Deduction age 18 boundary (min age) - Youth Standard Deduction age 24 boundary (max age) - Student loan interest MFS exclusion (zero benefit) - Youth EITC high income phase-out to zero - Student loan interest partial phase-out - Student loan interest complete phase-out - Student loan interest dependent elsewhere exclusion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes AppliedAdded missing references and edge case tests per review findings: References Added (6 variables)
Tests Added (8 new tests)
All 31 tests passing ✅ 🤖 Generated with Claude Code |
PavelMakarchuk
left a comment
There was a problem hiding this comment.
General question, are those separate bills? If so we should separate into different reform structures
| student_loan_deduction = tax_unit( | ||
| "ny_a04948_student_loan_interest_deduction", period | ||
| ) | ||
| return agi + additions - subtractions - student_loan_deduction |
There was a problem hiding this comment.
can this be negative?
| def formula(tax_unit, period, parameters): | ||
| p = parameters(period).gov.contrib.states.ny.a04948 | ||
| # Check if reform is in effect | ||
| in_effect = p.in_effect |
There was a problem hiding this comment.
lets not use in-effect within the formula
There was a problem hiding this comment.
in other variables as well
No, this one bill with multiple provisions. |
The student loan interest deduction phaseout was using AGI directly, but IRC 221 requires using MAGI (Modified AGI). Since AGI already has the federal student loan interest deduction subtracted, we need to add it back to calculate the correct MAGI for the phaseout. This fixes the failing CI test for the $92,500 income phaseout case. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fix AppliedIssue FoundThe CI was failing on the test
Root CauseThe student loan interest deduction formula was using Since AGI already has the federal student loan interest deduction subtracted from it, using AGI directly resulted in a lower income amount than intended, causing the phaseout to be smaller than expected. FixAdded the federal student loan interest deduction back to AGI to calculate the proper MAGI: agi = tax_unit("adjusted_gross_income", period)
# Add back the federal student loan interest deduction
federal_sli_ald = add(person, period, ["student_loan_interest_ald"])
total_federal_sli = tax_unit.sum(federal_sli_ald)
magi = agi + total_federal_sliVerificationAll 31 tests pass locally ✅ 🤖 Generated with Claude Code |
Summary
Implementation of NY Assembly Bill A04948 - Youth Worker Tax Benefits as a contributed reform.
This bill creates three tax benefits for young workers:
Effective: January 1, 2026 through December 31, 2031
Contributes to #7181
Status
References
This is a draft PR created automatically. Implementation work is in progress.
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com