Repository navigation
Subtract the Massachusetts TAFDC dependent care deduction once per unit - #10257
Conversation
ma_tafdc_partially_disregarded_earned_income subtracted the unit's whole dependent care deduction from each member (half for each spouse on a joint return), and floored each result at zero. Two earners on separate returns deducted the cost twice, and a one-earner joint return lost half of it. 106 CMR 704.275(A) allows the unit's actual expenditure up to the maximum, after the 50% disregard. The deduction is now shared among members by their earnings after the 50% disregard, so it is subtracted once in total. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Subtract the Massachusetts TAFDC dependent care deduction once per unitSummaryThe PR changes one formula,
Six YAML cases are added. The other changes are a reference to 106 CMR 704.275 and a
The suggestions cover one more test, a 704.500 citation, and pre-existing items for a follow-up issue. Critical (must fix)None. Should address1. Add the The body (head
Fix: add The modules do differ from PolicyEngine on points outside this PR. They take the hours band from the member's own hours, give $0 at zero hours, apply the 100% disregard per member, and round the grant down with a $10 minimum (Suggestion 3). None of these is the provision this PR changes, so they don't block Suggestions
Verified correct
Axiom line assessmentThe line is missing (Should 1). The correct line is Searches of rulespec-us issues for "TAFDC", "704.275", "9983" and "10257" find only #1087 (a 704.230 attestation issue). So no new issue is needed for this provision. The remaining PolicyEngine/rulespec differences in Suggestion 3 belong in a policyengine-us follow-up issue. CI statusAll 27 checks pass at Branch statusThe branch is 2 commits ahead of main (the change on 2026-10-16 and a merge of main on 2026-10-23) and 48 behind.
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
The fix is right: 106 CMR 704.275(A) applies the deduction after the 50% disregard, capped at actual cost, and 704.500(A) Steps 2-4 go per member and then total. The proportional shares sum to max(U - D, 0), and all 13 expectations hand-check. One should-address item: there's no axiom line, and rulespec already encodes this, so add 'axiom: us-ma/regulations/106-cmr/704/500 encoded-correct'. Three suggestions, including a two-earner, two-child case below the cap. Full report in the comment above.
Add two cases from review: two earners with two children and care below the per-child cap (deduction $175 + $175, shares 400/500 and 100/500), and two $300 earners whose earnings after the disregard are below the deduction. Cite 106 CMR 704.500(A) Steps 2-4 for the order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the review, @DTrim99. New head: Should address 1:
|
| Case (unit countable earned income) | Expected | Engine |
|---|---|---|
| One earner $1,000 + spouse not employed, child age 1, care $250 | 200 | 200 |
| Two $700 earners, child age 1, $250 entered on earner 1 | 300 | 300 |
| Same, $250 entered as $125 / $125 | 300 | 250 |
| $1,000 and $400 earners, child age 1, $250 entered on the $400 earner | 300 | 400 |
| $1,000 and $400 earners, children 1 and 5, $175 each, one child per parent | 150 | 225 |
| Single parent $1,000, child age 1, care $250 | 200 | 200 |
| Single parent $1,000, children 1 and 5, $175 each | 50 | 200 |
The causes are in the modules, not in this PR:
- The 704.275
dependent_care_deductionis per person, with onedependent_is_child_under_twoflag and one maximum per person. A parent who pays for two children gets at most $200, not $175 + $175 ("per dependent child"). - Two members can each claim up to the $200 maximum for the same child, so one child under two can give $250.
tafdc_member_countable_earned_incomefloors each member at zero, so the unit total depends on which earner is entered as the payer. 704.500(A) Step 3 doesn't say how a unit's deduction is split between earners.
The module matches this PR for one earner, and for two earners when one earner with enough earnings is entered as the payer. It doesn't match the other multi-earner and multi-child cases, and no entry of the payer gives 150 for the two-child case. rulespec-us#1943 (pe-parity) has the law, the required outputs and eight companion cases hand-computed from 704.275(A) and 704.500(A). The test files are hashed in their signed manifests, so I didn't append the cases by hand. The blocker is the approval of a billed signed-encoder run. No encoder run was started and no RuleSpec was written.
Suggestion 1: two-earner, two-child case below the cap — added
"Two earners with two children below the cap share the deduction by earnings": $1,000 and $400 a month, children 1 and 5, care $4,200 a year. Deduction $175 + $175 = $350; result [120, 30, 0, 0] (main [50, 0, 0, 0]), as you computed.
I also added your second option, "Two earners whose earnings after the disregard are below the deduction": two $300 earners, $50 each after the disregard, deduction $200, result [0, 0, 0]. It passes on main too; it pins the multi-earner floor.
On main's formula 6 of the 8 new cases fail; the single-parent control and the floor case pass. ma/dta has 171 passed, and test_source_conflicts.py passes.
Suggestion 2: cite 704.500(A) — done
The 704.500 link is in the reference tuple, and the comment now says that 704.500(A) Steps 2-4 apply the work expense and the 50% disregard per member, then the dependent care deduction, then total the members.
Suggestion 3: pre-existing gaps — filed as #10489
I checked each one against main: the hours band from the SPM unit's summed hours (and $50 / $44 at zero hours), the unit-wide 100% disregard test, no rounding or $10 minimum in ma_tafdc_potential_main_benefit, and the "unearned income" wording in the two parameter descriptions. All four are in #10489. They are outside this diff, so this PR doesn't change them.
PR Review (round 2): Subtract the Massachusetts TAFDC dependent care deduction once per unitSummaryThis round covers one author commit since our round-1 review at
Prior findings
New findingsCritical: none. Should address: none. Suggestions: none. Verified
Axiom line assessment
CI statusThe run at
Branch statusThe branch is 3 commits ahead of main and 70 behind.
Verdict: APPROVE |
|
@PavelMakarchuk, could you link the Massachusetts rule or an authoritative worked example supporting allocation of the unit's dependent-care deduction across earners, including when the client paying for care has insufficient earnings left after the work-expense deduction and 50% disregard? DTA's expense-entry guidance ties the deduction to the client incurring the expense. I could not establish from 106 CMR 704.275/704.500 whether an unused portion may reduce another earner's income. For example, with post-work/50% earnings of $400 and $100 and an allowable $200 care expense paid by the lower earner, this PR produces $240 and $60. What source supports pooling the deduction in that case, or otherwise establishes that the proportional allocation gives the legally correct unit total? The current input records the unit's expense without identifying its payer. The reported lost/duplicated-deduction cases are addressed; this source question is the remaining point I need clarified before approving. |
106 CMR 704.275(A) gives the deduction to the employed applicant or client for the expenditure on care, and DTA's BEACON help applies it "as a deduction for the client incurring the expense". No source lets an unused part reduce another earner's earnings. So the unit's deduction now comes off once, from the payer's earnings after the 50% disregard, instead of being shared among earners by their earnings. The care expense input does not record who pays, so a new input, ma_tafdc_dependent_care_payer, names the payer. By default it is the head or spouse with the highest gross earnings (the first one when earnings are equal). If more than one member is set as a payer, they share the deduction equally. Tests: the reviewer's case ($400 and $100 after the disregard, $200 deduction paid by the lower earner) gives $400 and $0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks, @hua7450. I could not find a source that supports pooling. The sources give the deduction to the employed client who pays for the care. None of them lets an unused part reduce another earner's income. So I changed the PR: the deduction now comes off the payer's earnings only. New head: What the sources say
I also read the BEACON pages on the dependent care deduction, the 50% disregard, the need and payment standards and the Interview Wrapup financial tab. I also checked the memos and Transitions items listed on the Employment policy page and the Mass Legal Services TAFDC training. None of them has a two-earner budget example, and none of them moves a deduction to another earner. I could not open the TANF State Plan on mass.gov (HTTP 403). What the sources do not sayNo sentence says what happens to the part of the deduction that is more than the payer's earnings. But the deduction is "from income" of the client who receives it, Step 3 comes before the Step 4 total, and no rule moves an unused part to another member. So I read the rule as: the payer's countable earned income stops at $0, and the rest of the deduction is not used. What this means for the proportional splitThe proportional split gives the correct total in two cases only. One is when the payer's earnings after the disregard cover the whole deduction, because then every split gives The change
Your example under the new code$400 and $100 after the work expense and the 50% disregard, $200 deduction:
For the full year (100% disregard for 6 months, then 6 months at these amounts), the parent2-pays case gives Test changes
Not in this PR
🤖 Addressed by Claude Code |
hua7450
left a comment
There was a problem hiding this comment.
Thanks for replacing proportional pooling with a payer-specific deduction and adding explicit lower-earner-payer cases. The rewrite addresses my allocation-source question; the verified 18-case CI execution includes the final grant path. Approving within #9983's scope. The preexisting payer-specific financial-eligibility treatment is now explicitly tracked in section 5 of #10489.
Summary
ma_tafdc_partially_disregarded_earned_income(Person) subtracted the SPM unit's wholema_tafdc_dependent_care_deductionfrom each member's half-disregarded earnings, or half of it for each member on a joint return. It then floored each member's result at zero. As a result:106 CMR 704.275(A) says the deduction "is made after the 50% disregard has been deducted". It also says: "In all situations, the amount allowed for dependent care is the actual expenditure for dependent care ... or the maximum allowable deduction, whichever is less". So the unit's deduction comes off once. 106 CMR 704.500(A) Steps 2-4 apply the work expense and the 50% disregard to each member, then the dependent care deduction, then total the members.
With this PR, the unit's deduction is subtracted once, from the earnings (after the 50% disregard) of the member who pays for the care:
max(0, e_payer - D). 704.275(A) gives the deduction to "an employed applicant or client", and DTA's BEACON help applies it "as a deduction for the client incurring the expense"; no source moves an unused part to another earner, so it is not used. A new input,ma_tafdc_dependent_care_payer(Person, YEAR), names the payer, because the SPM unit's care expense does not record who pays. Its default is an assumption: the head or spouse with the highest gross earnings (the first on a tie). If more than one member is set as payer, they share the deduction equally. The variable stays person-level, soma_tafdc_countable_earned_incomeand the six-month full disregard are unchanged. The filing-status split is removed.The issue's examples, now matching the expected values:
ma_tafdcis $9,878 instead of $9,278.ma_tafdcis $9,278 instead of $10,478.The single-earner, single-return case is unchanged.
Interaction with #9477: #9477 (the work-related expense deduction, #9469) changes
ma_tafdc_work_related_expense_deductionandintegration.yaml, which this PR does not touch. Its diff applies cleanly on top of this branch. With both applied,ma/dtahad 178 tests and all passed (2026-10-23, before the two cases added on 2026-10-27). The new cases here have no expectations on the financial eligibility test, which is the part #9477 moves.Tests
Cases are added to
ma_tafdc_partially_disregarded_earned_income.yaml, andma_tafdc_dependent_care_payer.yamlhas four cases for the default payer (one earner, the higher earner listed second, equal earners, a dependent teen with higher earnings who is not the payer). Unless a row says otherwise: 2026, full-time work, child age 1, $250/month care, so the deduction is $200.ma_tafdc$10,112ma_tafdc$9,512ma_tafdc$8,912The grants are ($901 - countable/12) x 12, plus the $500 clothing allowance.
ma/dta: 178 passed.Axiom
axiom: TheAxiomFoundation/rulespec-us#1943 queued
us-ma/regulations/106-cmr/704/500/block-1.yamlencodes Steps 2-4 with no filing-status split, but its.test.yamlhas no case with two earning members or two dependents. Its 704.275 import computes the deduction per person, with one dependent's maximum per person, and the grant step floors each member at zero.axiom-encode test, rulespec-usmain021d96906, a local engine build) used the proportional split this PR first had. With the payer rule, the cost on the lower earner gives 400, as the module does; the other two-earner cases need a new run. rulespec-us#1943 is updated with the payer rule.pe-parity) has the law, the required outputs and eight companion cases. The blocker is the approval of a billed signed-encoder run.Fixes #9983
🤖 Generated with Claude Code