Skip to content

Pay Virginia TANF-UP units the TANF standards of assistance in every year - #10253

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

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

Conversation

@PavelMakarchuk

@PavelMakarchuk PavelMakarchuk commented Oct 16, 2026 •

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 Section 304, Appendix 3 "Standards of Assistance - TANF-UP" schedule (7/20: Group II $197, $289, $363, ...), times the standard multiplier, capped at the TANF-UP maximum ($544 Group II, $648 Group III, scaled). va_tanf_income_eligibility also screened these units at the TANF-UP standard. Other units get va_tanf_grant_standard (Appendix 2).

Two-parent units get the TANF standards in every year:

  • The Appropriation Act sets a floor. 2020 Act (HB 30, Chapter 1289), Item 350 C, and the same sentence in the 2024 Act (HB 6001, Chapter 2), Item 325 C: "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."
  • The separate schedule existed for one year. Transmittal 68 (July 1, 2020), PDF p. 6: "We added Appendix 3 to provide the Standards of Assistance for TANF-UP families. Unlike TANF payments, there is no increase in TANF-UP or TANF-UP/VIEW payments." Transmittal 71 (July 1, 2021), PDF pp. 3–4: "We removed Appendix 3 that provided the Standards of Assistance for TANF-UP families. There will no longer be different payment amounts for TANF-UP families in comparison to TANF families."
  • July 2020 – June 2021. Appendix 3 kept the 2019 amounts while TANF payments rose 15% (Item 350 O), so it paid less than the TANF schedule. Under CONTRIBUTING's statute-first rule the Act's floor governs. The same manual's Chapter 900, Appendix II, Example 6 (a TANF-UP household of four in Group II, 7/20, Transmittal 68 PDF p. 85) uses the $499 TANF standard. The agency schedule is recorded as backlog item us-va:tanf-up-standards-below-tanf in source_conflicts/candidates.yaml (follows: statute).

This PR adds gov.states.va.dss.tanf.payment.up_grant_standard.in_effect, false in every year. 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 (the Appendix 3 schedule) are unchanged.

Example (the issue's repro, two parents and a child, Group II, no income): January 2021 va_tanf = $417 (the 7/20 Appendix 2 standard) instead of $363 (Appendix 3); January 2025 = $481.64 (417 x 1.155) instead of $419.27 (363 x 1.155).

Tests

All expected amounts at the standards and maximums are the printed Appendix 2 values.

  • va_tanf.yaml: a 2021 and a January 2020 case (a TANF-UP unit gets the TANF grant standard); January 2022 TANF-UP caps at the TANF maximum, $820 (Group III) and $688 (Group II), the 7/21 Appendix 2 maximums; January 2025 cases (the TANF grant standard, the $861 Group III maximum from the 7/22 Appendix 2, and a single-parent control).
  • va_tanf_income_eligibility.yaml: TANF-UP units are screened at the TANF standard in 2019, 2021 and 2023.
  • integration.yaml: the two January 2021 TANF-UP households now get the 7/20 Appendix 2 standards ($589 Group III size 4, $417 Group II size 3); a two-parent family of eight in Group III in January 2025 gets the $861 TANF maximum.
  • policyengine-core test policyengine_us/tests/policy/baseline/gov/states/va/dss/tanf: 113 passed. With in_effect set to true, 15 of them fail.

Known limitation, not changed here: the model scales the 7/20 tables by a cumulative multiplier, so from July 2022 it gives $722 for the Group II maximum where the 7/22 Appendix 2 prints $723, and standards up to $1 below the printed amounts (VDSS rounds up after each year's increase). This applies to all units.

Overlap: the fix PR for #9985 (Virginia's $10 minimum payment) also edits va_tanf.py, va_tanf.yaml and integration.yaml; the fix PR for #9986 (standard deduction) edits other files.

Fixes #9987

axiom: TheAxiomFoundation/rulespec-us#1921 queued (open, pe-parity; the Appropriation Act items and Transmittals 68 and 71 must be ingested into the corpus first, and the signed encoder dispatch needs approval)

🤖 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 (9bb2dc4).
⚠️ Report is 665 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.

- Set up_grant_standard.in_effect false in every year. Transmittal 68
  (July 1, 2020) added the separate TANF-UP schedule (Section 304,
  Appendix 3) and Transmittal 71 (July 1, 2021) removed it. In that year
  it paid less than the TANF schedule, below the Appropriation Act's floor
  (2020 Item 350 C): the two-parent payment "shall not be less than what
  they would have received under TANF".
- Record the July 2020 - June 2021 agency schedule as source-conflict
  backlog item us-va:tanf-up-standards-below-tanf (follows: statute).
- Tests: 2021 and January 2022 TANF-UP cases now expect the TANF
  standard and maximum ($820 / $688, the 7/21 Appendix 2 maximums); the
  January 2021 integration cases expect the 7/20 Appendix 2 standards
  ($589, $417); new cases before July 2020; the 2025 family of eight is
  in Group III ($861, the 7/22 Appendix 2 maximum).
- Cite the transmittals and the 2020 Act; use the "if this is true"
  description form.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk PavelMakarchuk changed the title Pay Virginia TANF-UP units the TANF standards of assistance from July 2022 Pay Virginia TANF-UP units the TANF standards of assistance in every year Oct 26, 2026
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator Author

Thanks, David. Commit 9bb2dc4 addresses the review. policyengine-core test policyengine_us/tests/policy/baseline/gov/states/va/dss/tanf gives 113 passed; with in_effect set to true, 15 of them fail. The source-conflict and parameter code-health tests pass (257).

Critical 1 and Should 1, the dates. I took the statute-first option: in_effect is now 1996-01-01: false, so TANF-UP units get the TANF standards and the TANF maximum in every year. I checked the sources you cited:

  • Transmittal 71 (July 1, 2021), PDF p. 3–4: "We removed Appendix 3 that provided the Standards of Assistance for TANF-UP families. There will no longer be different payment amounts for TANF-UP families in comparison to TANF families." The 10/21 manual's Chapter 300 contents (PDF p. 122) list only Appendices 1 and 2.
  • Transmittal 68 (July 1, 2020), PDF p. 6: "We added Appendix 3 to provide the Standards of Assistance for TANF-UP families. Unlike TANF payments, there is no increase in TANF-UP or TANF-UP/VIEW payments."
  • 2020 Act (Chapter 1289), Item 350 C: "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." Item 350 O: "increase the Temporary Assistance for Needy Families (TANF) cash benefits and income eligibility threshold by 15 percent effective July 1, 2020."

The July 2020 – June 2021 Appendix 3 schedule is recorded as us-va:tanf-up-standards-below-tanf in source_conflicts/candidates.yaml (follows: statute). It has no marker, because the entry is not in the register yet. The in_effect.yaml references now cite both transmittals and the 2020 and 2024 Act items.

Tests:

  • The January 2022 caps are now TANF maximums: 820 (Group III) and 688 (Group II), the 7/21 Appendix 2 maximums (10/21 manual, PDF pp. 146–147).
  • The 2021 cases in va_tanf.yaml and va_tanf_income_eligibility.yaml now expect the TANF standard.
  • The two existing January 2021 integration households now get the 7/20 Appendix 2 standards: $589 (Group III, size 4; Appendix 3 gave $513) and $417 (Group II, size 3; Appendix 3 gave $363). For the household of three you suggested, I used January 2021 instead of January 2022: at 7/20 the model has no rounding gap, so $417 is the printed amount, whereas the January 2022 model value is 458.70 against the printed $459.
  • New cases before July 2020: a January 2020 va_tanf case and 2019 income-screen cases at the TANF standard.

Should 2, $722 against $723. I did not change the rounding. Storing the 7/21 and 7/22 Appendix 2 tables changes every unit's standard and maximum, and the need standard reads the same multiplier, so it is a separate fix. Instead, no new expectation in this PR pins a value that differs from Appendix 2: I removed the January 2025 Group II cap case (the January 2022 Group II case covers $688), and the family of eight is now in Group III, where min($1,079, $861) = $861 at 7/22 (Transmittal 74, PDF pp. 29–30). The PR body notes the limitation. A separate issue for the step-by-step rounding still needs to be filed.

Should 3, the axiom: line. Still open. rulespec-us has no Virginia TANF module or issue, and the corpus holds the 7/24 manual but not the 2020 or 2024 Act items or Transmittals 68 and 71. A pe-parity issue is drafted with the module path, the verbatim Act and transmittal text, the 7/20, 7/21 and 7/22 Appendix 2 amounts and the Example 6 companion cases. I will add the line when it is filed.

Suggestions. 1: the description now ends "if this is true". 2: the references now cite Transmittals 68 and 71 instead of the 11/20 manual.

@DTrim99

DTrim99 commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Pay Virginia TANF-UP units the TANF standards of assistance in every year

Summary

Commit 9bb2dc4f7f resolves every round-1 finding. Pavel took the statute-first option: up_grant_standard.in_effect is now 1996-01-01: false, so two-parent (TANF-UP) units get the TANF standard of assistance and the TANF maximum in every year. That fixes the July 2021 – June 2022 window (Critical 1) and the backward extrapolation before July 2020 (Should 1) together.

I hand-checked all 14 new or changed expectations. Three optional suggestions remain.

Prior findings

Finding Status Evidence
C1. The TANF-UP schedule should end 2021-07-01, not 2022-07-01 Fixed in_effect.yaml is false in every year, so from July 2021 to June 2022 a TANF-UP unit gets the TANF standard × 1.1. Hand traces for January 2022, Group II, no income: a family of three gets 417 × 1.1 = 458.70 (the 7/21 Appendix 2 prints $459, which is the pre-existing rounding gap now in #10450). A family of eight gets min(822 × 1.1 = 904.20, ceil(625 × 1.1) = 688) = 688, matching the $688 maximum. The January 2022 tests now expect 820 (Group III, ceil(745 × 1.1) = ceil(819.5)) and 688 (Group II, ceil(687.5)), the 7/21 Appendix 2 maximums. The 2021 cases in va_tanf.yaml and va_tanf_income_eligibility.yaml now expect the TANF standard. The references cite Transmittal 71 (PDF pp. 3–4) and Transmittal 68 (PDF p. 6).
S1. The 2020-07-01 flag extrapolated backward, and the July 2020 – June 2021 schedule broke Item 350 C Fixed The flag is false in every year, including before July 2020. The conflict is recorded in source_conflicts/candidates.yaml as us-va:tanf-up-standards-below-tanf: follows: statute, years 2021 state-fiscal (Virginia FY2021 runs July 2020 – June 2021), and two sources (the 2020 Act Item 350 C as statute, Transmittal 68 Appendix 3 as manual). It also has both readings, an example ($417 against $363, January 2021) and all three code paths. Leaving out the marker is correct for now: the ratchet rejects a marker whose id isn't in the pinned register, and CONTRIBUTING step 2 applies once rulespec-us registers the entry. New pre-July-2020 coverage: a January 2020 va_tanf case and 2019 income-screen cases (Cases 11 and 12).
S2. The Group II tests pinned $722 where the 7/22 Appendix 2 prints $723 Fixed (in scope) Both $722 expectations are gone. The January 2025 Group II cap case is deleted (the January 2022 Group II case covers $688 instead), and the family of eight moved to Arlington (Group III), where the code and the printed table agree: min(933 × 1.155 = 1,077.615, 861) = 861, against the 7/22 Appendix 2's min($1,079, $861). Every standard or maximum the PR now expects is the printed amount. The pre-existing multiplier rounding is noted in the PR body under "Known limitation" and filed as #10450 (open), which tabulates the 7/20, 7/21 and 7/22 Appendix 2 rows.
S3. No axiom: line Fixed The body now reads axiom: TheAxiomFoundation/rulespec-us#1921 queued, naming the corpus-ingestion and encoder-approval blockers. Issue status is under "Axiom line assessment" below.
Suggestion 1. Boolean description template Fixed The description now ends "…program if this is true."
Suggestion 2. Cite the transmittals instead of the 11/20 manual Fixed The references are now the 2020 Act Item 350 C, the 2024 Act Item 325 C, Transmittals 68 and 71, and 7/24 Section 304.1. The 11/20 Appendix 3 and 7/22 Appendix 2 references were dropped.

New findings

Critical: none.

Should address: none.

Suggestions

  1. Reference title format (in_effect.yaml, Transmittal 71 entry). The title ends "…Appendix 3 removed, page 3-4". For a multi-page citation, the repo convention is a quoted title ending #page 3-4, for example title: "Virginia TANF Manual Transmittal 71 (July 1, 2021), Section 304, Appendix 3 removed #page 3-4". The href (#page=3) is already right.
  2. Link the follow-up issue in the body. The "Known limitation" paragraph could cite Virginia TANF standards of assistance fall up to $1.59 a month below the printed Appendix 2 amounts from July 2021 (Group II maximum $722 vs $723) #10450. It was filed at 14:31 UTC, after the author's reply that says the issue "still needs to be filed".
  3. Optional: pin the in_effect: true branch. No baseline test reaches the TANF-UP schedule path any more. The author's local check (15 failures with the flag flipped) shows that the tests can tell the two paths apart. If the toggle is meant to stay usable as a reform, consider one case with a single parameter override, for example January 2021, Group II, family of three, in_effect: true → 363. Keep it to one override value, because each distinct override builds a separate system copy in CI. Dropping the branch entirely, as round 1 offered, would also be fine.

Verified

  • Code. Since round 1, va_tanf.py and va_tanf_income_eligibility.py changed only in comments. The scalar flag combined with a vectorized boolean (up_tanf_eligibility & p_up.in_effect) still switches the payment, the maximum and the step-2 income screen together. There is no state-gated key variable, so the NH Add New Hampshire state supplementation for 2026 #10156 pattern doesn't apply.
  • Hand-checked expectations (all 14 new or changed), against the head's own logic and the printed tables:
    • va_tanf.yaml:
      • 2021, Arlington: grant 2,400 / 12 = 200 a month, minus countable 100, gives 100 a month. That is under the caps of 745 (January–June) and 820 (July–December), so the year totals 1,200 (the TANF-UP path would give 600).
      • January 2020, Pittsylvania: 400 − 100 = 300, under ceil(625 × 0.8696) = 544 (the TANF-UP path would give 200).
      • January 2022: Group III 820 and Group II 688, as traced in the C1 row.
      • January 2025: Group III cap ceil(745 × 1.155) = ceil(860.475) = 861. Only the comment changed, and it now cites the printed $861.
    • va_tanf_income_eligibility.yaml (gross 8,000 ≤ need 12,000 throughout). Every case flips if the TANF-UP standard were used.
      • Case 5 (2021): 5,500 ≤ 6,000 → true (above the TANF-UP standard of 5,000).
      • Case 6 (2021): 6,500 > 6,000 → false (the TANF-UP standard is 7,000).
      • Case 11 (2019): 6,000 ≤ 6,000 → true (TANF-UP 5,000).
      • Case 12 (2019): 6,001 > 6,000 → false (TANF-UP 7,000).
    • integration.yaml:
      • January 2021, Group III, size 4: new output va_tanf_grant_standard = 589 × 1.0 = 589, and va_tanf = 589 − 0 = 589 (cap 745). This matches the 7/20 Appendix 2 $589; Appendix 3 gave $513.
      • January 2021, Group II, size 3: va_tanf_grant_standard 417, and va_tanf = 417 (cap 625), matching the 7/20 Appendix 2 $417; Appendix 3 gave $363.
      • January 2025, family of eight in Group III: 861, as traced in the S2 row. Arlington is in localities/group3, max_unit_size is 10, and group3.main[8] = 933.
  • Monthly periods. The new or changed monthly cases are 2020-01, 2021-01, 2022-01 and 2025-01, all January, so the non-January month period with YEAR inputs (county_str) doesn't arise.
  • Source-conflict ratchet (Tie source-conflict markers to the register shared with Axiom #10287). The rewritten comments in in_effect.yaml, va_tanf.py and va_tanf_income_eligibility.py match neither CONFLICT_COMMENT_RE nor ATTEMPT_RE ("requires", "was below", "unless … in effect"). The test YAMLs are outside the scanned roots.
  • Candidate entry. It passes test_candidate_fields:
    • required keys present, with state: unreviewed, follows: statute and type: state-fiscal;
    • https URLs only, and code paths tracked at the head;
    • a valid PR URL, and an id that matches GLOBAL_ID;
    • nothing matching the privacy patterns, and alphabetical order is kept.
  • Ratchet on the merged tree. On the tree merged with current main (where main rewrote candidates.yaml and bumped the register):
    • the entry appears once among 266 unique ids;
    • it is not in the vendored register, so test_candidates_are_not_yet_registered holds;
    • main's change to test_source_conflicts.py only edits unrelated KNOWN_UNMARKED rows.
  • Changelog. fix-9987-va-tanf-up-standards.fixed.md now says "in every year", matching the head.
  • PR body. The body's example (417 × 1.155 = 481.64; 363 × 1.155 = 419.27) and its test list match the head.
  • Partner tests. No files under tests/policy/baseline/partners/** are touched.

Axiom line assessment

axiom: TheAxiomFoundation/rulespec-us#1921 queued is valid:

  • Status. The issue is OPEN and labelled pe-parity. It was created at 2026-10-26 14:27 UTC, after the head commit.
  • Dispatch-ready:
    • a proposed module, us-va/policies/dss/tanf-manual/304.yaml, plus the Act item;
    • the corpus state (the 7/24 manual is held; the 2020 and 2024 Act items, Transmittals 68 and 71, and the 11/20 and 10/21 manuals are not), with ingestion recorded as the blocker;
    • verbatim text of Item 350 C and O, Item 325 C, and Transmittals 68 and 71;
    • required outputs: the standards and maximum by edition and locality group, and the TANF-UP amount equal to TANF in every period;
    • a pasteable review_finding.
  • Companion cases. They come from the printed Appendix 2 tables and Chapter 900 Example 6, not from PolicyEngine output. The issue says explicitly not to reproduce PolicyEngine's $722 / $458.70 rounding.
  • Match with the head. The issue matches the head's behaviour: the Appendix 3 schedule is never applied.

CI status

All 35 checks pass at 9bb2dc4f7f (gh pr checks 10253; workflow run created 2026-10-26 14:23 UTC on that SHA, after #10287 and #10334). None is pending or failing. The PR validation job (guard tests, including the source-conflict tests) and codecov patch/project are green.

Branch status

The branch is 3 commits ahead of main and 46 behind. git merge-tree --write-tree PolicyEngine/main 9bb2dc4f7f merges cleanly. Main hasn't changed any Virginia TANF file since the merge base, and its source_conflicts/ changes merge without conflict.

Sibling checks (branch notes only):

Verdict: APPROVE

@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.

Round 2: the critical is fixed. TANF-UP units now get the TANF standards in every year, so January 2022 caps are 820/688 per the 7/21 Appendix 2. The statute-first conflict is recorded in candidates.yaml, the $722 cases are gone (the rounding gap is filed as #10450), and rulespec-us#1921 is valid. All 14 new or changed expectations hand-check, and CI is 35/35 green. Three small suggestions. 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