Skip to content

Pay Virginia TANF-UP units the TANF standards of assistance from July 2022 - #10253

Open
PavelMakarchuk wants to merge 2 commits into
mainfrom
fix-9987-va-tanf-up-standards
Open

PavelMakarchuk wants to merge 2 commits into
mainfrom
fix-9987-va-tanf-up-standards

Conversation

@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

Summary

va_tanf paid units with two able-bodied parents (va_up_tanf_eligibility) va_tanf_up_grant_standard, the 11/20 manual's Section 304, Appendix 3 "Standards of Assistance - TANF-UP" (dated 7/20: Group II $197, $289, $363, ...), times the 1.155 multiplier, capped at ceil(544 x 1.155) = $629 (Group II). va_tanf_income_eligibility also screened these units at the TANF-UP standard. Other units get va_tanf_grant_standard (Appendix 2), capped at $722.

Virginia's current rules give two-parent units the TANF standards:

  • Virginia TANF Manual (7/24), Chapter 300, 304.1: "The monthly standards of assistance, based on the number of eligible persons in the assistance unit and the locality group in which the assistance unit resides, are shown in Appendix 2 to Section 304." Section 304 has Appendix 1 (grouping of localities) and Appendix 2 (pages dated 7/22, Transmittal 74: Group II $262, $385, $482, ...; maximum reimbursable payment $723 / $861) and no TANF-UP schedule. Chapter 701 (TANF-UP) applies the TANF conditions of eligibility and has no separate standard.
  • Appropriation Act, Item 325 C (2024 Special Session I, HB 6001, Chapter 2; the same text since at least 2018): "the basic benefit payment for which two-parent families are eligible under the separate state program shall not be less than what they would have received under TANF."

This PR adds gov.states.va.dss.tanf.payment.up_grant_standard.in_effect (true from 2020-07-01, false from 2022-07-01). While it is false, va_tanf and va_tanf_income_eligibility use the TANF standard and the TANF maximum for TANF-UP units. va_up_tanf_eligibility and va_tanf_up_grant_standard are unchanged.

Example (the issue's repro, two parents and a child, Group II, no income, January 2025): va_tanf = $481.64 (417 x 1.155) instead of $419.27 (363 x 1.155).

Effective date: please check. I could not find the transmittal that removed Appendix 3. The 11/20 manual has it. The current manual (7/24) and the Transmittal 78 manual on Town Hall (9/24) have no Appendix 3 pages; the Chapter 300 table of contents revised in Transmittal 76 (12/22) lists Section 304 Appendices 1 and 2 only (the main table of contents still names Appendix 3). I used 2022-07-01, the date of the Appendix 2 schedule that the current manual applies to every unit. The 11/20 manual is only on the Wayback Machine, which I could not open from here.

Tests

  • va_tanf.yaml: four new monthly cases for January 2025 (a TANF-UP unit gets the TANF grant standard; Group III and Group II TANF-UP units are capped at the TANF maximum, $861 and $722; a single-parent control). The two TANF-UP cap cases and the TANF-UP payment case move to periods before July 2022 (January 2022 caps: ceil(648 x 1.1) = 713, ceil(544 x 1.1) = 599).
  • va_tanf_income_eligibility.yaml: two new 2023 cases (a TANF-UP unit is screened at the TANF standard); the four TANF-UP cases move to 2021.
  • integration.yaml: a two-parent family of eight in Group II, January 2025: $722 (TANF maximum) instead of $629.
  • The six new non-control cases fail on main. policyengine-core test policyengine_us/tests/policy/baseline/gov/states/va/dss/tanf: 113 passed.

Overlap: the fix PR for #9985 (Virginia's $10 minimum payment) also edits va_tanf.py, va_tanf.yaml and integration.yaml, in different lines; the fix PR for #9986 (standard deduction) edits other files. The new tests here use whole-dollar results, so they hold with the #9985 rounding.

Fixes #9987

🤖 Generated with Claude Code

Virginia's TANF Manual has one schedule of standards of assistance for all
units (Section 304, Appendix 2, dated 7/22) and no TANF-UP schedule; the
Appropriation Act requires two-parent payments of at least the TANF amount.
A new in_effect parameter ends the 2020 TANF-UP schedule and maximum on
2022-07-01 in va_tanf and va_tanf_income_eligibility.

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

codecov Bot commented Oct 23, 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 (8738598).
⚠️ Report is 622 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main    #10253   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         2    -2     
  Lines           76        48   -28     
  Branches         2         0    -2     
=========================================
- Hits            76        48   -28     
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.

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

DTrim99 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Pay Virginia TANF-UP units the TANF standards of assistance from July 2022

Summary

The PR adds gov.states.va.dss.tanf.payment.up_grant_standard.in_effect (2020-07-01: true, 2022-07-01: false). While it is false, va_tanf and va_tanf_income_eligibility give two-parent (TANF-UP) units the TANF standard of assistance and the TANF maximum instead of the TANF-UP schedule. It moves the existing TANF-UP cases before July 2022 and adds 2023 and January 2025 cases plus a family-of-eight integration case.

  • Direction. Paying TANF-UP units the TANF standards today is right. The current manual has one schedule (Section 304, Appendix 2, 7/22), and Appropriation Act Item C says the two-parent "basic benefit payment … shall not be less than what they would have received under TANF".
  • Effective date. The body asks for this to be checked. VDSS's own transmittals settle it, and July 2022 is a year late. Transmittal 68 (July 1, 2020) added the TANF-UP Appendix 3, freezing UP payments because "the Governor's 2020 budget did not allow for an increase in TANF-UP payments". Transmittal 71 (July 1, 2021) removed it: "There will no longer be different payment amounts for TANF-UP families in comparison to TANF families." For July 2021 through June 2022, the PR therefore pays TANF-UP units the frozen schedule × 1.1, which neither the manual nor the Act supports, and its new January 2022 tests pin those amounts (Critical 1).
  • July 2020 – June 2021 and earlier. The separate schedule existed only from July 2020 to June 2021, and in that year it fell below the Act's floor. Under CONTRIBUTING's "statute first" rule, the Act governs, so TANF-UP units should get the TANF standards in every year, and the conflict should be recorded. Before July 2020 there was no separate schedule at all, but 2020-07-01: true extrapolates backward (Should 1).
  • Code. The gate is a scalar parameter combined with a vectorized boolean, with no state-gated key, so NH Add New Hampshire state supplementation for 2026 #10156 doesn't apply. Both readers of the TANF-UP standard (payment and income screen) are switched together.
  • Tests. I hand-checked all 14 new or changed expectations. They match the code, but four of them pin the wrong date (Critical 1). The two Group II $722 cases sit $1 below the $723 maximum that the cited Appendix 2 shows (Should 2).
  • Axiom. There is no axiom: line (Should 3).

Critical (must fix)

1. Virginia dropped the separate TANF-UP standards on July 1, 2021, not July 1, 2022.

Files: policyengine_us/parameters/gov/states/va/dss/tanf/payment/up_grant_standard/in_effect.yaml (2022-07-01: false), plus the "before July 2022" cases in va_tanf.yaml and va_tanf_income_eligibility.yaml.

What's wrong. From July 2021 to June 2022 the PR keeps paying TANF-UP units the frozen July 2020 TANF-UP schedule scaled by the 1.1 multiplier, a schedule that never existed in that period. Two examples, January 2022, Group II, no income:

  • Two parents and one child: the PR gives 363 × 1.1 = 399.30. The TANF path gives 417 × 1.1 = 458.70, and the 7/21 Appendix 2 shows $459.
  • Two parents and six children: the PR gives min(715 × 1.1, ceil(544 × 1.1)) = 599. The TANF path gives min(822 × 1.1, ceil(625 × 1.1)) = 688, which is the 7/21 Appendix 2 maximum of $688.

The new January 2022 cases in va_tanf.yaml pin the wrong caps (Group III ceil(648 × 1.1) = 713 and Group II 599). The law gives the TANF maximums: ceil(745 × 1.1) = 820 and ceil(625 × 1.1) = 688, matching the 7/21 Appendix 2 ($820 / $688). The annual 2021 cases in both files also assume the TANF-UP standard for July–December 2021.

The sources.

  • TANF Transmittal 71, dated July 1, 2021, "effective for all TANF eligibility determinations … completed on or after July 1, 2021". The table of changes (PDF pp. 3–4) says: "We updated Appendix 3 to Section 304 to reflect the removal of Standards of Assistance for TANF-UP and TANF-UP/VIEW families. There will no longer be different payment amounts for TANF-UP families in comparison to TANF families." And: "We removed Appendix 3 that provided the Standards of Assistance for TANF-UP families."
  • The 10/21 complete manual: the Chapter 300 table of contents lists only "Appendix 1 – Grouping of Localities" and "Appendix 2 – Standards of Assistance", and Appendix 2 (7/21, PDF pp. 146–147) shows Group II $249 / $366 / $459 / … with a $688 maximum, and Group III $820.
  • Transmittal 71's Chapter 900, Appendix II, Example 6 ("TANF-UP Household", 7/21, PDF p. 65) uses "$549.00 Standard of Assistance for 4", the Group II TANF standard. The 10/22 version (Transmittal 75) uses $577.
  • The Act's floor (Item C, quoted in the body) applies in every year; see Should 1.

The body's supporting point that Chapter 701 "has no separate standard" doesn't date the change: the Chapter 701 pages (7/19 and 7/20, Transmittals 66 and 68) were the same when Appendix 3 existed.

Fix. End the TANF-UP schedule no later than 2021-07-01 (see Should 1 for the preferred form, false in every year). Cite Transmittal 71 (PDF pp. 3–4, title ending #page 3-4) and Transmittal 68 (PDF p. 6). Then fix the tests:

  • Move the "before" cases inside July 2020 – June 2021, e.g. period: 2021-01 with monthly inputs (multiplier 1.0: Group III TANF-UP cap 648, Group II 544), or delete them if Should 1 is adopted.
  • Turn the January 2022 cases into TANF-maximum cases: 820 (Group III) and 688 (Group II).
  • Add a January 2022 TANF-UP household of three in Group II with no income: 458.70.

Should address

1. Give TANF-UP units the TANF standards in every year, and record the July 2020 – June 2021 conflict.

File: in_effect.yaml. Its first value, 2020-07-01: true, extrapolates backward.

What's wrong.

  • Before July 2020 there was one schedule for all units. Transmittal 68 (July 1, 2020, PDF p. 6) says "We added Appendix 3 to provide the Standards of Assistance for TANF-UP families." The 10/19 manual has only Appendix 2. Its 7/19 maximums ($544 / $648) are the same numbers as the 7/20 "TANF-UP" schedule, which is the 2019 TANF schedule left frozen. Because the flag extrapolates backward, a 2019–20 TANF-UP unit gets 197 × 0.8696 = 171.31 for one person in Group II, where Appendix 2 (7/19) gives everyone $197.
  • July 2020 – June 2021 is a conflict between sources. Transmittal 68 says "Unlike TANF payments, there is no increase in TANF-UP or TANF-UP/VIEW payments. TANF-UP payments are solely funded by State dollars and the Governor's 2020 budget did not allow for an increase in TANF-UP payments." But the enacted 2020 Appropriation Act (Chapter 1289, Item 350 C) says "the basic benefit payment for which two-parent families are eligible under the separate state program shall not be less than what they would have received under TANF", and Item 350 O raised "TANF cash benefits" 15% from July 1, 2020. The frozen schedule ($197 against $226 for one person in Group II) is below that floor. The 7/20 manual is inconsistent on its own terms too: its Chapter 900 Example 6 (TANF-UP household of four in Group II) uses the $499 TANF standard, not Appendix 3's $434.

Recommendation. CONTRIBUTING's "Statute first" rule (2026-10-20) applies the Act over a manual or stated agency practice. So:

  • Set in_effect false in every year, or drop the TANF-UP branch and always use the TANF standard (the TANF-UP parameters and va_tanf_up_grant_standard then have no reader).
  • Record the July 2020 – June 2021 conflict (Transmittal 68 / Appendix 3 against Item 350 C) as a source_conflicts/candidates.yaml item with follows: statute, or register it in rulespec-us and put # Source conflict us-va:<id> on the deciding line. If you add a prose comment instead, avoid wording that the Tie source-conflict markers to the register shared with Axiom #10287 ratchet counts (for example "contrary to" or "conflicts with") unless the marker is present.
  • If you keep the agency's schedule for that year instead, set false before 2020-07-01, true at 2020-07-01 and false at 2021-07-01, and register the conflict with the agency reading and its basis.

Either way, add a pre-July-2020 TANF-UP case (for example January 2020, Group II, one person, no income: 226 × 0.8696 = 196.53).

2. The Group II maximum and standards don't match the Appendix 2 table that the PR cites.

Files: the new va_tanf.yaml case "From July 2022, a Group II TANF-UP unit is capped at the TANF maximum" (722) and the new integration.yaml case (722). Both pin a value from the existing va_tanf.py / va_tanf_grant_standard.py multiplier.

What's wrong. The body quotes the 7/22 Appendix 2 "maximum reimbursable payment $723", but the new tests expect $722 (ceil(625 × 1.155) = ceil(721.875)). VDSS applies each year's increase to the previous rounded figure and rounds up:

  • the maximum: 625 × 1.1 = 687.5 → $688 (7/21), then 688 × 1.05 = 722.4 → $723;
  • the size-3 standard: 459 × 1.05 = 481.95 → $482, where the model gives 417 × 1.155 = 481.64 (the body's own example);
  • the other sizes: Group II gives $262 / $385 / $577 / $681 / $761 / $851 / $951 / $1,035 / $1,127, against 261.03 / 383.46 / 576.35 / 680.30 / 759.99 / 850.08 / 949.41 / 1,033.73 / 1,126.13. Group III's $861 maximum happens to match.

This gap is pre-existing for one-parent units, but the PR adds new expectations that pin it for two-parent units.

Fix (preferred). Store the 7/21 and 7/22 Appendix 2 tables and maximums as dated values (or apply the step-by-step round-up), then expect 723 in both Group II cases. Fallback. Open an issue for the rounding, and say in the two test comments that Appendix 2 shows $723.

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

The body has no axiom line in any form, and Pavel is staff. rulespec-us has no Virginia TANF module or issue (us-va/ holds only income tax and CMS policies).

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

  • a module path for the manual's standards of assistance, e.g. us-va/policies/dss/tanf-manual/304, plus the Appropriation Act item (corpus prerequisite: neither is in the corpus yet);
  • the verbatim text of Item C, Transmittal 68 p. 6, Transmittal 71 pp. 3–4, and the 7/21 and 7/22 Appendix 2 tables;
  • required outputs: the standard of assistance and the maximum payment for a TANF-UP unit by date and locality group;
  • companion cases from the manual's own Chapter 900 Example 6 (TANF-UP household of four, Group II: $549 at 7/21, $577 at 10/22).

Suggestions

  1. Description template. If the flag stays, the house form for a boolean is "Virginia … if this is true." The current description ends "when this is true".
  2. References. If the flag stays, the 11/20 manual's Appendix 3 (PDF p. 27) shows that the schedule existed but not when it began or ended. The two transmittals do both.

Verified correct

  • The 7/20 TANF-UP schedule. The 11/20 manual, Section 304, Appendix 3 (7/20, Transmittal 68, PDF p. 27) lists Group II $197 / $289 / $363 / … and Group III $275 / $367 / $442 / …, with maximums of $544 and $648. These match up_grant_standard/group{2,3}.
  • The current schedule. The 7/24 manual 304.1 (PDF p. 19) says "The monthly standards of assistance … are shown in Appendix 2 to Section 304". Appendix 2 (7/22, Transmittal 74, PDF pp. 29–30) has no TANF-UP column.
  • Appropriation Act. The 2024 Act (HB 6001, Chapter 2) Item 325 C and the 2020 Act (Chapter 1289) Item 350 C carry the same "shall not be less than what they would have received under TANF" sentence, as the body says.
  • Code.
    • up_tanf_eligibility & p_up.in_effect combines a boolean array with a scalar parameter, so it's vectorized.
    • The payment, the maximum and the step-2 income screen all switch on the same flag, which keeps them consistent.
    • Adding in_effect.yaml under payment/up_grant_standard/ doesn't break the payment("2020-10-01") and up_grant_standard("2020-10-01") lookups, which only read group2 / group3.
  • Monthly mechanics. The flag is read with parameters(period) inside MONTH formulas, so a mid-year date (whether 2021-07-01 or 2022-07-01) switches at the start of that month, and annual tests split at the boundary. All new monthly periods are January (2022-01, 2025-01), so the non-January month-period issue with YEAR inputs (county_str) doesn't arise.
  • Hand-checked expectations (14), against the head's own logic.
    • va_tanf.yaml, 2021: (2,400 − 1,200) / 12 = 100 a month, under the Group III TANF-UP caps (648, then 713) → 1,200.
    • January 2022: Group III TANF-UP cap ceil(648 × 1.1) = ceil(712.8) = 713; Group II ceil(544 × 1.1) = ceil(598.4) = 599 (both wrong under Critical 1).
    • January 2025: TANF-UP unit 500 − 100 = 400 (cap 861); Group III cap ceil(745 × 1.155) = ceil(860.475) = 861; Group II cap ceil(625 × 1.155) = 722 (see Should 2); single parent 400.
    • va_tanf_income_eligibility.yaml, 2021 (gross 8,000 ≤ 12,000 in each case): 4,500 ≤ 5,000 → true; 5,500 > 5,000 → false; 5,000 ≤ 5,000 → true; 5,001 > 5,000 → false.
    • 2023: TANF standard 5,500 ≤ 6,000 → true; 6,001 > 6,000 → false.
    • integration.yaml, January 2025, eight people in Pittsylvania (Group II), no income: va_up_tanf_eligibility true; countable 0; standard 822 × 1.155 = 949.41; min(949.41, 722) = 722 (Appendix 2: min($951, $723) = $723).
  • Changelog. changelog.d/fix-9987-va-tanf-up-standards.fixed.md is a top-level fragment with the fixed type. Its "from July 2022" needs updating with Critical 1.
  • Source-conflict ratchet (Tie source-conflict markers to the register shared with Axiom #10287). The new comments in in_effect.yaml, va_tanf.py and va_tanf_income_eligibility.py match neither CONFLICT_COMMENT_RE nor ATTEMPT_RE, and the run started after Tie source-conflict markers to the register shared with Axiom #10287 and Count the FL and SD LIHEAP comments in the source-conflict ratchet baseline #10334. The PR validation job is green.
  • Partner tests. No files under tests/policy/baseline/partners/** are touched.

Axiom line assessment

There is no axiom: line (checked in every format), which is a SHOULD (Should 3). rulespec-us has no Virginia TANF module or issue, so encoded-correct isn't available. The recommended line is a dispatch-ready pe-parity issue for the standards of assistance and the Item C floor, marked queued, recording the corpus prerequisite.

CI status

All 29 checks pass at 8738598107 (gh pr checks 10253). None is pending or failing. Green CI doesn't catch Critical 1, because the tests pin the July 2022 date.

Branch status

The branch is 2 commits ahead of main (one change and a merge of main on 2026-10-23) and 7 behind. git merge-tree --write-tree PolicyEngine/main 8738598107 merges cleanly, and main hasn't changed any Virginia TANF file since the merge base.

Sibling checks (branch notes only):

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.

One critical: the end date should be 2021-07-01, not 2022-07-01. Transmittal 71 (7/1/2021) removed the separate TANF-UP schedule ('no longer be different payment amounts for TANF-UP families'), and the 10/21 manual has only Appendices 1-2, so July 2021-June 2022 UP units are underpaid (family of 8: 599 vs $688), and the new 2022-01 tests pin the wrong values. Three should-address items: the 2020-07-01 flag extrapolates backward and the frozen 2020 schedule conflicts with 2020 Act Item 350 C; the Group II tests pin 722 where Appendix 2 says $723 (VDSS rounds step by step); and there's no axiom line. Full report in the comment above.

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

2 participants