Skip to content

Update DC TANF FY2026 payment levels, two-thirds earnings disregard and full child support disregard - #10250

Open
PavelMakarchuk wants to merge 3 commits into
mainfrom
fix-10207-dc-tanf-fy2026
Open

PavelMakarchuk wants to merge 3 commits into
mainfrom
fix-10207-dc-tanf-fy2026

Conversation

@PavelMakarchuk

@PavelMakarchuk PavelMakarchuk commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Three DC TANF parameters were out of date or wrong, and the child support disregard counted a GAC child's support twice.

  1. Payment levels. standard_payment/amount.yaml stopped at the FY2025 levels (October 1, 2024). D.C. Code § 4-205.52(d-1)(2) adjusts the levels every October 1 by the prior calendar year's CPI-U, and (d-1)(1)(D) suspends the adjustment for FY2027-FY2030. This PR adds the FY2026 levels for household sizes 1-10 from 2025-10-01: $504, $629, $803, $983, $1,136, $1,335, $1,532, $1,691, $1,863, $2,024 (FY2025 × 1.029, rounded down). Because FY2027 has no adjustment, the same levels apply from October 2026.
  2. Earned income disregard. earned_income_disregard/percentage.yaml was 0.67. This PR changes the value to 2/3. D.C. Code § 4-205.11(a)(4A)(A) lets the Mayor set the percentage by rule, and every source says "two thirds":
  3. Child support disregard. child_support.yaml stayed at $150 a month. Under D.C. Code § 4-205.11(a)(8), starting October 1, 2025, DC disregards "the full current monthly child support obligations and voluntary child support payments" (D.C. Law 26-55, the FY2026 Budget Support Act). The 2026 State Plan, Section 4(4)(e), pp. 24-25 says the same. This PR sets the cap to .inf from 2025-10-01, so all child support received is disregarded.
  4. GAC child's child support. dc_tanf_countable_unearned_income disregarded child support received by every SPM unit member, including an unrelated child who gets GAC. dc_tanf_countable_income then also subtracted dc_gac_countable_income, which already includes that child's child support. So the support came off twice, and the .inf cap in item 3 made the overstatement larger. The formula now disregards only TANF members' child support (members who are not dc_gac_eligible_child).

Not changed: sizes 11-19 still stop at the FY2024 levels. DHS publishes only sizes 1-10 (on its TANF page and in the 2026 State Plan). The § 4-205.52(c) table in the D.C. Code still shows FY2024 amounts, and the ESA Policy Manual exhibit dates from 2017. The FY2025 increase was not one uniform factor across sizes 1-10, so I did not extrapolate a table. A comment in amount.yaml records the gap, and #10207 stays open for sizes 11-19.

Tests

  • dc_tanf_standard_payment.yaml: size 3 gets $781 in September 2025 (control) and $803 in October 2025. Size 10 gets $2,024 in October 2026 (no FY2027 adjustment).
  • dc_tanf_countable_unearned_income.yaml: with $500 a month of child support, $350 counts in September 2025 (control) and $0 in October 2025. In January 2026, child support is fully disregarded and pension income still counts.
  • integration.yaml:
    • Case 5: an enrolled parent of two with $12,000 of earnings in 2025 has countable income of (1,000 − 160) × 1/3 = $280 a month, so dc_tanf = 9 × (781 − 280) + 3 × (803 − 280) = $6,078.
    • Case 6: with no income in 2026, dc_tanf = 12 × 803 = $9,636.
    • Case 7: an enrolled parent earning $1,000 a month, her child and an unrelated GAC child who gets $400 a month of child support. Countable income is $280 a month, and dc_tanf = 12 × (629 − 280) = $4,188. The old formula gave countable income $0 and dc_tanf $7,548.
  • Two existing tests that used 0.67 now expect the two-thirds result. For $4,020 a year of earnings: (335 − 160) × 1/3 × 12 = $700, not $693, and Case 3 dc_tanf is $5,624.

With this PR, policyengine_us/tests/policy/baseline/gov/states/dc/dhs passes, as do gov/hhs/tanf/cash and tests/core/test_dc_tanf_work_sanction.py.

Follow-ups

Part of #10207

axiom: TheAxiomFoundation/rulespec-us#1942 queued

🤖 Generated with Claude Code

…isregard

Add the FY2026 payment levels for sizes 1-10 from October 1, 2025 (D.C. Code
4-205.52(d-1); no adjustment for FY2027-FY2030), disregard two thirds of
earnings above $160 instead of 0.67 (DC TANF State Plan, Section 4(4)(a)), and
disregard all child support received from October 1, 2025 (D.C. Code
4-205.11(a)(8)).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk
PavelMakarchuk marked this pull request as ready for review October 23, 2026 17:03
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@DTrim99

DTrim99 commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Update DC TANF FY2026 payment levels, two-thirds earnings disregard and full child support disregard

Summary

The PR changes three DC TANF parameters and makes no formula changes:

  • Payment levels. It adds the FY2026 levels for sizes 1-10 from 2025-10-01.
  • Earned income disregard. It changes the recipient disregard from 0.67 to exactly 2/3.
  • Child support. It sets the child support disregard to .inf from 2025-10-01.

All three values are right under current law:

  • Payment levels. D.C. Code § 4-205.52(d-1)(2) adjusts the levels by the prior calendar year's CPI-U, and (d-1)(1)(D) freezes them for FY2027-FY2030. The DC TANF State Plan effective October 1, 2026 prints the $504 … $2,024 table as the FY2026 levels that "shall remain" through FY2030. Each new value equals floor(FY2025 × 1.029).
  • Two thirds. The 2020, 2023 and 2026 State Plans and the ESA Policy Manual all say "two thirds". The manual's worked example uses exact thirds.
  • Child support. § 4-205.11(a)(8), as amended by D.C. Law 26-55 § 5132(a), disregards "the full current monthly child support obligations and voluntary child support payments" beginning October 1, 2025.

Other checks:

  • Tests. I hand-checked 11 expectations, and all are correct. The non-January monthly cases key every YEAR input by year, so the rolling-year crash doesn't arise.
  • Code. No formula changed, and every touched path stays vectorized.
  • CI. 27/27 checks pass.

Three things need fixing:

  • Fixes #10207 would close the issue while sizes 11-19 stay at FY2024. The issue's "Expected" includes them.
  • The references for the changed 2/3 value don't show it.
  • The axiom: line is missing.

The suggestions are optional. They cover:

  • a direct citation for the FY2026 table;
  • a stale test name;
  • a GAC double-subtraction that the .inf makes larger;
  • three pre-existing defects worth separate issues (benefit-computation gaps against the ESA Manual, and the work sanction rate starting a year early).

Critical (must fix)

None.

Should address

1. Don't close #10207 while sizes 11-19 are still unchanged.

standard_payment/amount.yaml gets 2025-10-01 values for sizes 1-10 only. Sizes 11-19 still stop at 2023-10-01 (FY2024). In FY2026 the table runs:

  • size 10: $2,024;
  • size 11: $1,884;
  • size 12: $2,024;

so an 11-person unit gets less than a 10-person one. The PR body says this openly ("I did not extrapolate one"), and that is a fair scope choice. The statute still covers these sizes. § 4-205.52(d-1)(1) says "the assistance levels set forth in subsection (c) of this section shall be adjusted annually for the rate of inflation", and subsection (c) lists sizes 1 through 19 (D.C. Code § 4-205.52). DHS publishes only sizes 1-10, both on its TANF page and in the 2026 State Plan table (file page 40).

The problem is tracking. The body ends Fixes #10207, and #10207's "Expected" reads: "standard payment from 2025-10-01 = the FY2026 table above (sizes 11-19 also updated)". Merging would close the only issue that records the sizes 11-19 gap.

Fix (either):

  • (a) Change Fixes #10207 to Part of #10207, and comment on the issue to narrow it to sizes 11-19.
  • (b) Open a new issue for sizes 11-19 and link it from the body.

Either way, a short comment at size 11 in amount.yaml would help a future reader, for example # DHS publishes FY2025+ levels for sizes 1-10 only; sizes 11-19 keep the FY2024 table (#<n>).

One data point for that issue: the FY2026 levels for sizes 1-10 are exactly floor(FY2025 × 1.029) for all ten sizes (490 → 504.21 → 504, 612 → 629.75 → 629, …, 1,967 → 2,024.04 → 2,024). So DHS truncates rather than rounds. A follow-up could apply the same rule to sizes 11-19 once a FY2025 base is confirmed.

2. The references for the changed disregard value don't show two thirds.

The PR changes earned_income_disregard/percentage.yaml from 0.67 to 2/3, but none of its three references shows that value at the cited location:

  • Both State Plan references anchor at #page=22. In both the 2020 (TANF_Announcement_StatePlan_ForComment_01072020.pdf) and October 2023 (DC TANF State Plan_Oct-2023.pdf) plans, file page 22 has only the applicant sentence ("the first $160 of earnings for work expenses"). The recipient sentence, "a $160 work expense deduction is applied and then an additional two thirds of remaining earned income is deducted", is on file page 23.
  • § 4-205.11(a)(1) is the wrong paragraph. That paragraph is the work-expense deduction. The percentage disregard is authorised by (a)(4A)(A): "For individuals otherwise found eligible to receive TANF, disregard from the individual's earned income a specific dollar amount and/or a percentage of the earned income. The Mayor shall establish, through rulemaking, the amount and/or percentage".

Fix: point the two State Plan hrefs at #page=23 and the code reference at #(a)(4A)(A). Consider adding the current sources too:

  • DC TANF State Plan effective October 1, 2026, Section 4(4)(a). It carries the same "two thirds" sentence on file page 22 (link).
  • ESA Policy Manual, Part VI, Chapter 6, § 6.3. It says "Disregard two-thirds (2/3) of the earnings not already disregarded due to the Work Expense Deduction" (file page 298, link).

3. Add the axiom: line to the PR body.

The body has no line starting with axiom in any format. Pavel is staff, so the line is required, and axiom: needed isn't available. See "Axiom line assessment" for the recommended queued line.

Suggestions

  1. Cite the FY2026 table directly. The 2025-10-01 values are corroborated only by inference: the DHS page labels them "Effective October 1, 2026 – September 30, 2027", and (d-1)(1)(D) freezes FY2027 at FY2026. The October 2026 State Plan states it outright on file page 40: "D.C. code provides for no annual increase in the TANF cash grant based on the change in the Consumer Price Index (CPI) for Fiscal Years 2027 through 2030. This means that payment levels and standards of assistance for the TANF program shall remain at the Fiscal Year 2026 levels". The table that follows lists the ten new values.

    • For child_support.yaml, the same plan's Section 4(4)(e) covers the change on file pages 24-25 (cite #page=24 with a title ending #page 24-25): "Effective October 1, 2025, DHS must disregard the full current monthly child support obligations and voluntary child support payments the assistance unit receives".
    • Optionally note in amount.yaml that CPI-U adjustments resume for FY2031 (October 2030). The model holds FY2026 levels after that.
  2. Stale test name. In dc_tanf_earned_income_after_disregard_person.yaml, the third case is still named "Earned income $4,020, recipient, $330 * 12 per year after deduction". It now expects 700 a year ($58.33 a month). Rename it, for example to "…recipient, $700 per year after deduction".

  3. A GAC child's child support is subtracted twice, and .inf makes the overstatement larger.

    • The two subtractions:

      • dc_tanf_countable_unearned_income sums child_support_received over every SPM member and disregards it, including an unrelated (GAC-eligible) child.
      • dc_tanf_countable_income then also subtracts dc_gac_countable_income, which already includes that child's gross unearned income, child support included.
    • Example. A parent, her child and an unrelated GAC child who gets $400 a month in child support; the parent is enrolled and earns $1,000 a month.

      • The correct TANF countable income is 280.
      • In September 2025 the model gives max(280 + (400 − 150) − 400, 0) = 130.
      • From October 2025 it gives max(280 + 0 − 400, 0) = 0, so the benefit is $629 instead of $349.
    • Fix. Disregard only the TANF members' child support, for example:

      person = spm_unit.members
      tanf_member = ~person("dc_gac_eligible_child", period)
      child_support = spm_unit.sum(
          add(person, period, ["child_support_received"]) * tanf_member
      )

    This is rare, because survey data usually records child support on the custodial adult. The structure is pre-existing, so a follow-up issue is fine.

  4. Pre-existing benefit-computation gaps against the ESA Policy Manual (follow-up issue). These are outside this diff. The PR's 2/3 change only reaches the enrolled branch, so they are worth tracking. All three passages are in ESA Policy Manual Part VI, Chapter 6, § 6.3, file pages 296-298, except the rounding rule (file page 328):

    • Applicants' benefit. "When determining level of benefits, recipient disregards are always used, even for new cases. Applicant disregards are only used to determine initial eligibility for new applicants" (file page 296). § 4-205.11(a)(3) and (a)(4A)(A) say the same. dc_tanf_earned_income_after_disregard_person uses where(enrolled, …, earnings_after_flat_exclusion), and dc_tanf reads that same countable income. So an eligible unit that isn't enrolled is paid on the $160-only figure. This is the same pattern as NH FANF He-W 654.13(d) in New Hampshire FANF: recipient_rate gives every recipient the 75% Cliff Effect pilot disregard from September 2022; He-W 654.13(e) and FAM 603.01 set 50% #9984.
    • Child care. "Child care costs can only be subtracted from earned income … No deductions to unearned income can be made based on child care or work expenses" (file pages 297-298). dc_tanf_countable_income subtracts the child care deduction from earned plus unearned income.
    • Rounding. "Round the result to the next lowest whole dollar" (file page 328). dc_tanf isn't floored. The manual's example also confirms exact thirds: 537.50 − 160 = 377.50, two thirds is 251.67, and net earned income is 125.83.
  5. The work sanction rate starts a year early (pre-existing, follow-up issue). work_requirement/sanction/rate.yaml on main has 2026-10-01: 0.25. The sources put the change at October 1, 2027:

    • DC Code. § 4-205.19f's note says: "Section 5063 of D.C. Law 26-55 provided that the amendments made to this section by section 5062 of D.C. Law 26-55 shall apply as of October 1, 2027". The codified (g)(3) still reads "a 30% reduction of the portion … designated for the adult", which is 6% of the grant.
    • DHS. The TANF Program Update (updated August 12, 2026) says "Beginning October 1, 2027 … increasing the failure-to-work sanction from 6% to 25%".
    • State Plan. The plan effective October 1, 2026 still says "leads to a 6% reduction of the TANF grant" (file page 23).

    Today, an enrolled DC unit that fails the work test loses 25% instead of 6%. This PR's cases all meet the work test, so they don't reach it.

Verified correct

  • Payment levels (2025-10-01, sizes 1-10).
    • Statute. § 4-205.52(d-1)(2): "the prior year's assistance level shall be increased by an amount equal to the prior year's assistance level multiplied by the CPI-U for all items from the preceding calendar year". (d-1)(1)(D): "For Fiscal Years 2027, 2028, 2029, and 2030, the assistance level shall not be adjusted for inflation".
    • Sources. The DHS TANF page lists $504, $629, $803, $983, $1,136, $1,335, $1,532, $1,691, $1,863 and $2,024. So does the 2026 State Plan table (file page 40), which it labels the FY2026 levels.
    • Check. All ten equal floor(FY2025 × 1.029); 2.9% is the 2024 CPI-U change.
    • In effect during FY2026. Legal Aid DC's FY2027 budget testimony (April 2026) says the family-of-three maximum "is currently $803 per month" (file page 3) and the COLA "currently is at a modest 2.9%" (file page 4).
    • FY2027. Leaving out a 2026-10-01 entry correctly carries $803 into FY2027.
  • Two thirds. The parameter is 0.6666666666666666 from 2001-10-01; the PR changes the value and keeps the date. "Two thirds" is the wording in the 2020 plan (file page 23), the 2023 plan (file page 23) and the 2026 plan (file page 22), and in ESA Manual § 6.3 (file page 298).
    • The manual example on file page 328 (377.50 → 251.67) uses exact thirds. With 0.67 it would be 252.93.
    • The DHS "Maximum Monthly Earnings at Application" column (payment level + $160) matches the applicant test in § 4-205.11(a)(3).
    • D.C. Code § 4-205.52a doesn't exist (the code site returns 404). The disregard is set by rule under § 4-205.11(a)(4A)(A).
  • Child support. § 4-205.11(a)(8) as codified now reads: "beginning on October 1, 2025, disregard the full current monthly child support obligations and voluntary child support payments the assistance unit receives from an absent parent or spouse".
    • It was enacted by D.C. Law 26-55 § 5132(a), effective December 6, 2025. Before that it was in force through the FY2026 Budget Support Emergency Act (D.C. Act 26-146, September 3, 2025) and the Congressional Review Emergency Act (D.C. Act 26-210), so the October 1, 2025 date was live law on that date.
    • min_(child_support, .inf) disregards it all.
    • The 2026 State Plan adds that families keep only the first $200 a month and assign the rest to the District. That governs collection, not countable income ("No matter how much child support the family receives, it will be disregarded in determining their need for TANF", file page 25).
    • The model can't separate current support from arrears, so .inf is the right approximation.
  • Code. No formula changed.
    • p.amount[capped_unit_size] and min_(child_support, p.deductions.child_support) are vectorized.
    • No new parameter key or state-gated key variable was added, so the NH Add New Hampshire state supplementation for 2026 #10156 pattern doesn't apply.
    • The order is unchanged: $160 per earner, then 2/3 for enrolled units, then add unearned income net of the child support disregard, then subtract GAC income and child care (but see Suggestion 4).
    • dc_power and dc_gac_standard_payment read the same payment level and countable income, as § 4-205.52(a) requires for TANF, POWER and GAC.
  • Monthly periods. The new non-January cases are standard payment 2025-09, 2025-10 and 2026-10, and unearned income 2025-09 and 2025-10.
    • Each one keys its YEAR inputs by year (state_code: {2025: DC}, child_support_received: {2025: 6_000}), and the only unkeyed input, dc_tanf_assistance_unit_size, is a MONTH variable. So nothing is stored under a rolling-year key.
    • The 2026-01 case is January, and the integration cases are annual.
    • CI ran all of them green.
  • Hand-checked expectations (11):
    • dc_tanf_standard_payment.yaml:
      • 2025-09, size 3: the FY2025 level, 781.
      • 2025-10, size 3: floor(781 × 1.029 = 803.65) = 803.
      • 2026-10, size 10: still the FY2026 level, 2,024 (floor(1,967 × 1.029 = 2,024.04)).
    • dc_tanf_countable_unearned_income.yaml:
      • 2025-09: 6,000 / 12 = 500, and 500 − 150 = 350.
      • 2025-10: 500 − min(500, ∞) = 0.
      • 2026-01: child support 500 plus pension 100, minus 500 = 100.
    • dc_tanf_earned_income_after_disregard_person.yaml (2023, enrolled, $4,020): (335 − 160) × 1/3 × 12 = 700. Main's 0.67 gives 693.
    • integration.yaml:
      • Case 3 (2022): earned income after disregard [700, 0]; countable 700; standard 521 × 9 + 545 × 3 = 6,324; benefit 6,324 − 700 = 5,624. Every month is positive (521 − 58.33).
      • Case 5 (2025): (1,000 − 160) / 3 = 280 a month, so countable is 3,360.
      • Case 5 benefit: 9 × (781 − 280) + 3 × (803 − 280) = 4,509 + 1,569 = 6,078. The unit is income eligible (280 ≤ 781). With 40 hours against the 20-hour requirement (youngest child 2), there is no sanction.
      • Case 6 (2026): 12 × 803 = 9,636. October-December use the frozen level. The parent meets the work test, so the 0.25 rate from Suggestion 5 isn't reached.
  • PR body.
    • The body says the 8 new or updated cases fail on main. They are: standard payment ×2, unearned ×2, disregard ×1, and integration Cases 3, 5 and 6. Each moves with the parameter changes. For example, Case 5 on main gives 840 × 0.33 = 277.20 a month and the $781 level all year.
    • The formulas and citations in the body match the head.
  • Source-conflict ratchet (Tie source-conflict markers to the register shared with Axiom #10287). The two added comments (# two thirds and # From October 1, 2025, the full current monthly child support received is disregarded.) match neither CONFLICT_COMMENT_RE nor ATTEMPT_RE. No comment is removed, and no DC file is in KNOWN_UNMARKED. Main's only change to test_source_conflicts.py since the merge base edits unrelated KNOWN_UNMARKED rows (CA premium subsidy, QBI and local sales tax).
  • Changelog. changelog.d/fix-10207-dc-tanf-fy2026.fixed.md is a top-level fragment with the fixed type, and its text matches the change.
  • Partner tests. No files under tests/policy/baseline/partners/** are touched, and Household API Partners passes.

Axiom line assessment

The body has no axiom: line (Should 3). encoded-correct isn't available:

  • 4-205.52. rulespec-us us-dc/statutes/4/4-205/52.yaml encodes:

    • the § 4-205.52(c) table as values effective 1998-02-01;
    • the (c-2) and (c-3) reductions, which the current code shows as repealed;
    • the FY2017-FY2019 increases.

    It has no (d-1)(1)(D) freeze and no (d-1)(2) CPI-U path, and every payment output is deferred. 52.test.yaml has no cases.

  • 4-205.11. There is no module for § 4-205.11 and no DC TANF policy module.

  • Existing issues. Searches of rulespec-us issues for "DC TANF", "District of Columbia TANF", "4-205.52", "4-205.11", "10207" and "10250" find no parity issue.

Recommended line. File a dispatch-ready pe-parity issue and use axiom: TheAxiomFoundation/rulespec-us#<n> queued. The issue should have:

  • Modules.

    • Update us-dc/statutes/4/4-205/52.yaml with (d-1)(1)(D), (d-1)(2) and the repeal of (c-2)/(c-3).
    • Add us-dc/statutes/4/4-205/11.yaml for (a)(8).
    • Add a policy module for the rule-set $160 and two-thirds disregards under (a)(1) and (a)(4A)(A), for example us-dc/policies/dhs/tanf-state-plan/….
  • Blocker. The corpus needs refreshing to the post-D.C. Law 26-55 text; the existing module still treats (c-2)/(c-3) as live, which suggests a stale corpus copy. The State Plan and ESA Manual also need ingest. Then the billed encoder run needs approval.

  • Law. The verbatim text of § 4-205.52(d-1)(1)(D) and (d-1)(2), § 4-205.11(a)(8) and (a)(4A)(A), and State Plan Section 4(4)(a).

  • Required outputs.

    • The payment level by family size and fiscal year, frozen for FY2027-FY2030.
    • The child support disregard: up to $150 through September 2025, and in full from October 2025.
    • Recipients' net countable earned income.
  • Companion cases. Take them from external sources, not PolicyEngine output:

    • The 2026 State Plan table (file page 40): size 3 → $803 and size 10 → $2,024 for FY2026 and FY2027.
    • The ESA Manual example (file page 328): earnings of $537.50 → net earned income $125.83; with $150 of unearned income, countable income $275.83.
    • § 4-205.11(a)(8): $500 of current support counts $350 in September 2025 and $0 from October 2025.

    Also note the sizes 11-19 gap (Should 1) so the encoder doesn't copy the FY2024 values forward as FY2026.

CI status

All 27 checks pass at 920dfd6be8 (gh pr checks 10250). The workflow run on that SHA was created 2026-10-23 18:41 UTC, after #10287 and #10334. That includes:

  • the Baseline states shards;
  • Household API Partners;
  • PR validation (lock, guard tests, lint, changelog);
  • Microsimulation;
  • Quick Feedback.

None is pending or failing.

Branch status

The 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. git merge-tree --write-tree PolicyEngine/main 920dfd6be8 merges cleanly. Main hasn't changed any DC file since the merge base. No other open PR touches DC TANF.

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All three values are right: the FY2026 levels are floor(FY2025 x 1.029) for all 10 sizes under s. 4-205.52(d-1), the full child support disregard comes from s. 4-205.11(a)(8) via D.C. Law 26-55, and the 2/3 disregard matches the State Plans and ESA Manual; all 11 expectations hand-check. Three should-address items: (1) 'Fixes #10207' would close the issue, but sizes 11-19 stay at FY2024 (size 11 $1,884 is below size 10's $2,024), so say 'Part of' or open a follow-up; (2) the percentage.yaml references don't show 2/3 (the value is on p.23, not #page=22; cite s. 4-205.11(a)(4A)(A)); (3) there's no axiom line. Five suggestions. Full report in the comment above.

- Point the two-thirds disregard references at the pages that state it
  (2020 and 2023 State Plans p. 23), cite D.C. Code 4-205.11(a)(4A)(A)
  instead of (a)(1), and add the 2026 State Plan and ESA Policy Manual 6.3.
- Cite the 2026 State Plan for the FY2026 payment table (p. 40) and the
  October 2025 child support disregard (pp. 24-25).
- Note in amount.yaml that sizes 11-19 keep the FY2024 table (#10207)
  and that the FY2031 CPI-U update is not modeled.
- Disregard only TANF members' child support, so a GAC child's support
  is not subtracted twice; add integration Case 7.
- Rename the stale $4,020 disregard test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

Thanks @DTrim99. All three should-address items and all five suggestions are handled in 866075c.

Should address

  1. Fixes #10207 while sizes 11-19 are unchanged. Fixed (option a). The body now says Part of #10207, and I commented on DC TANF: payment levels miss the October 2025 (FY2026) update, the earned income disregard is 0.67 instead of two thirds, and the child support disregard stays $150 after October 2025 #10207 to narrow it to sizes 11-19. amount.yaml has a comment above size 11: "DHS publishes FY2025 and later levels for sizes 1-10 only. Sizes 11-19 keep the FY2024 § 4-205.52(c) table (DC TANF: payment levels miss the October 2025 (FY2026) update, the earned income disregard is 0.67 instead of two thirds, and the child support disregard stays $150 after October 2025 #10207)." I did not extrapolate sizes 11-19: the FY2025 increase over FY2024 was not one factor (×1.089 for size 1, ×1.101 for size 10), so there is no confirmed FY2025 base to apply floor(× 1.029) to.
  2. percentage.yaml references don't show two thirds. Fixed. The 2020 and 2023 State Plan hrefs now open #page=23, and the code reference is § 4-205.11(a)(4A)(A) (#(a)(4A)(A)) instead of (a)(1). I added the 2026 State Plan Section 4(4)(a) (#page=22) and ESA Policy Manual Part VI, Chapter 6, § 6.3 (#page=298). I checked each "two thirds" sentence on those file pages.
  3. No axiom: line. Fixed. I filed Encode DC TANF FY2026 payment levels and FY2027-FY2030 freeze, the two-thirds earned income disregard and the full child support disregard (D.C. Code 4-205.52(d-1), 4-205.11(a)(4A)(A), (a)(8)) (PE-US #10250 parity) TheAxiomFoundation/rulespec-us#1942 (pe-parity) with the module paths, corpus locks, verbatim law, required outputs and companion cases from the 2026 State Plan, § 4-205.11(a)(8) and the ESA Manual example. The blocker is recorded there: confirm that the title-4 corpus lock holds the D.C. Law 26-55 text, ingest the 2026 State Plan, then an approved encoder run. The body now has axiom: TheAxiomFoundation/rulespec-us#1942 queued.

Suggestions

  1. Cite the FY2026 table directly. Done. amount.yaml cites the 2026 State Plan #page=40, and child_support.yaml cites its Section 4(4)(e) at #page=24 with the title ending #page 24-25. A comment in amount.yaml says the FY2026 levels hold through FY2030 and that the FY2031 CPI-U update is not modeled yet.
  2. Stale test name. Fixed: "Earned income $4,020, recipient, $700 per year after deduction."
  3. GAC child's child support subtracted twice. Fixed here rather than in a follow-up, because this PR's .inf makes it larger. dc_tanf_countable_unearned_income now disregards only the child support of members who are not dc_gac_eligible_child, as you proposed. New integration.yaml Case 7 uses your example in 2026: countable income $280 a month and dc_tanf = 12 × (629 − 280) = $4,188. It fails on the old formula (countable income $0, dc_tanf $7,548).
  4. ESA Manual benefit-computation gaps. Follow-up: DC TANF benefit computation: applicant disregards for new eligible units, child care deducted from unearned income, and no rounding down (ESA Policy Manual §§ 6.3, 8.5) #10488 (applicant disregards for new eligible units, child care against unearned income, rounding down).
  5. Work sanction rate starts a year early. Follow-up: DC TANF work sanction rate rises to 25% from October 2026; D.C. Law 26-55 § 5063 sets October 1, 2027 #10487. I confirmed the § 5063 applicability note on § 4-205.19f and the 6% in the 2026 State Plan (file page 23).

Tests

Locally at 866075c: policyengine_us/tests/policy/baseline/gov/states/dc/dhs (215 passed, via test_batched.py --mode per-subdir), gov/hhs/tanf/cash (36), tests/core/test_dc_tanf_work_sanction.py with code_health/test_source_conflicts.py (104), and the reference-URL and parameter-key code-health checks (155) all pass.

The changelog fragment now also mentions the GAC fix.

@codecov

codecov Bot commented Oct 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (909176a) to head (866075c).
⚠️ Report is 692 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main    #10250   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         1    -3     
  Lines           76        17   -59     
  Branches         2         0    -2     
=========================================
- Hits            76        17   -59     
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 Harness.
📢 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.

This branch has not been deployed

No deployments
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.

2 participants