Skip to content

Fix Missouri TANF grants, territory SNAP limits, Hawaii CCAP income and SSI food timing - #10332

Merged
MaxGhenis merged 29 commits into
mainfrom
statute-bugs-ccap-tanf-snap-ssi
Nov 11, 2026
Merged

MaxGhenis merged 29 commits into
mainfrom
statute-bugs-ccap-tanf-snap-ssi

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Correct Missouri TANF grants, Guam and Virgin Islands SNAP income standards, Hawaii child care income, and SSI food support timing.

The affected populations include Missouri TANF units, Guam and Virgin Islands SNAP households, Hawaii child care applicants and recipients who receive TANF, and SSI recipients, including those who receive state supplements.

Missouri TANF

Missouri prints whole-dollar maximum grants in 13 CSR 40-2.310(13) and DSS Appendix B.
Use that row for the maximum grant and percentage-of-need income test: sizes 1–12 receive $136, $234, $292, $342, $388, $431, $474, $514, $554, $595, $635 and $675 before subtracting countable income.
Add $40 for each person above 12. For example, a size-16 unit receives $675 + 4 × $40 = $835; multiplying its $2,420 standard by 0.34526 gives $835.52920.
Keep the parameter's 1991-01-01 start date, matching the existing standard of need. Remove the maximum_benefit/percentage.yaml parameter, which the new formula no longer reads.
We confirmed the regulation's 2016 amendment and the manual's identical rows from July 1990 and July 1993; we did not fetch earlier regulatory editions.

Lower each payment to the whole dollar under section (14), and keep the $10 minimum. DSS also directs staff to round downward in Manual 0210.010.15.
Round the capped deficit to four decimal places before flooring. This precision choice can change deficits within $0.00005 of a whole dollar; deficits in whole cents keep their floor.
For example, with a direct countable-income input of $127.00001 and a $234 maximum, float32 stores a $106.99999237060547 deficit; the guarded floor pays $107.
A bounded arithmetic search over 5,985,732 combinations of earnings in whole cents for two new applicants found no witness, so the regression supplies countable income directly.
The search covered two earners with at least $120 each per month and combined exact countable income from $1 to $282.

SNAP in Guam and the Virgin Islands

Map GU and VI to contiguous-state poverty guidelines for SNAP income standards under 7 CFR 273.9(a).
Keep their state groups, allotments and deductions, along with main's existing large-household increment rounding.
HHS sets a $21,640 guideline for two people and a $5,680 increment in its 2026 guidelines.
For FY2027, the two-person net limit equals ceil(21,640 / 12) = $1,804; the gross limit equals ceil(1.3 × 21,640 / 12) = $2,345.
All ten territory regressions key state_code to 2026 so October calculations exercise GU or VI.

Hawaii child care

Count Hawaii TANF throughout the modeled source list, starting 2017-08-01.
Hawaii counts public assistance under HAR 17-798.2-10(b)(11), with a March 8, 2008 effective date and a December 31, 2017 compilation date.
Hawaii continues counting it under HAR 17-798.3-10(b)(11) from August 6, 2021.
Cite both chapters in the source list. Hawaii counts $1,100 for families with $1,000 earnings and $100 Hawaii TANF before and after the chapter change.

hi_ccap_tanf_income reads hi_tanf under the take-up and abolition gates. Reading national tanf would traverse other states' child care deductions back into Hawaii CCAP.
A generic tanf input does not override this source; supply hi_tanf or hi_ccap_tanf_income.
The abolition test supplies a $100 Hawaii grant and expects zero TANF income and $1,000 total CCAP income.
We keep the adult-care TANF deduction from #10254 and update its parameter metadata.

SSI monthly inputs and food timing

SSA excludes food received on or after September 30, 2024 under 89 FR 21199.
Use the second prior income month for the food parameter and transition-date flag under 20 CFR 416.420(a).
Read food receipt in that income month when it falls in the payment year. For January and February, use payment-month food receipt because one-year household inputs contain no prior-year history.
We choose this dating to match food receipt with its governing rule while retaining one-year input coverage.
For pre-exclusion years, we also shift food-only PMV timing by two months when food receipt changes within the year.
Keep shelter inputs in the payment month. Value the PMV at the payment month's federal benefit rate, consistent with section 416.420's Example 2.

Define ssi_pmv_applies, ssi_pmv_amount, ssi_shelter_support_value, ssi_in_kind_support_and_maintenance and ssi_countable_income monthly.
Callers supplying a single month's amount must supply a monthly value. Year-keyed monetary inputs split evenly across months, and annual monetary amounts sum monthly values.
We re-key supplement and CAPI inputs without changing their amounts or expected outputs, and keep the annual exclusions wrapper's annual interface.
We give ssi_shelter_support_value as a monthly amount in main's month-period tests that gave an annual one: 300 and 10 in uncapped_ssi_without_spousal_deeming.yaml, and 200 in co_ssa_in_kind_support_and_maintenance.yaml. Their expected outputs stay the same.

Under spousal deeming, SSA pays no more than the individual rate less the claimant's own countable income (20 CFR 416.1163(e)(2)). #10141 added that limit to main as uncapped_ssi_without_spousal_deeming.
Compute the limit each month from that month's ssi_pmv_applies, ssi_shelter_support_value and income.
SSA compares the deeming result with the amount the claimant's own budget-month income leaves (POMS SI 01320.400 C.2), and in that computation values ISM at the individual PMV (SI 01320.150 B.1.b).
For example, take a Florida claimant age 70 with food-only support throughout 2024 and a spouse who earns $500 a month. SSI equals $628.67 a month through November and $943 in December, $7,858.33 for the year. Main counts the food in December too.

For continuing food-only support in 2024, PMV = $943 / 3 + $20 = $334.3333. Monthly countable income equals $314.3333 in January–November and zero in December.
October and November SSI equal $628.6667; December SSI equals $943. Annual ISM equals 11 × $334.3333 = $3,677.6667, and annual SSI equals $7,858.3333.
If food support starts in October, SSA pays $943 SSI in October and November because August and September contain no food support.

Witness at f04ff49222b0c281dece50bcce569dda19a3d06f, with displayed amounts rounded to cents:

continuing_food
2024-10: food 1; ISM 334.33; countable 314.33; SSI 628.67
2024-11: food 1; ISM 334.33; countable 314.33; SSI 628.67
2024-12: food 1; ISM 0.00; countable 0.00; SSI 943.00
2024: food 1; ISM 3677.67; countable 3457.67; SSI 7858.33
food_from_october
2024-10: food 1; ISM 0.00; countable 0.00; SSI 943.00
2024-11: food 1; ISM 0.00; countable 0.00; SSI 943.00

Read monthly countable income when allocating parental resources. SSA reallocates those resources in the first month a child's eligibility changes under POMS SI 01330.200 B.
The two-child regression allocates $4,000 to each child in January and November 2024, then $2,000 each in December when the food-supported child becomes income-eligible.

When SSA charges an SSI recipient ISM, Colorado charges a matching ISM under 9 CCR 2503-5 3.520.79(B)(6).
In co_ssa_in_kind_support_and_maintenance, which #10183 added to main, read SSA's ISM for the same month instead of a twelfth of the year's.
For example, Colorado counts $334.33 in January 2024 and nothing in December for an SSI recipient with food-only support all year, where main counts $334.33 in both months.

Validation and invariants

  • Pull request run 43030162272 at e2aa913f4d passed all 36 jobs on GitHub's merge with main 06c0dcbc54. Before the merge of main, Pull request run 42159523214 passed every case in the 33 test files the PR changed at f04ff49222: 457 YAML cases and 236 Python cases, 693 in all.
  • All twelve mutation checks failed their intended regressions, and the runner restored every original file. M1–M8 cover food-policy dates, PMV units, annual ISM averaging, cross-year food reads, deficit rounding, territory mapping, TANF abolition and concurrent food dating. Three added mutations replace Missouri's table with a product, remove its $40 increment, and remove TANF from Hawaii's 2017 list. The final mutation restores the annual-average resource reader; the December two-child case catches it.
  • Final inputs fail on main: SNAP gross 3 failed/15 passed, net 3 failed/17 passed, FPG 2 failed/2 passed, and Missouri payments 9 failed/5 passed. Those files pass all 18, 20, 4 and 14 cases respectively in run 42159523214. Hawaii's three households dated before September 2021 (Cases 11, 13 and 16: January 2021, August 2021 and August 2017) count $1,000 on main versus the required $1,100; all three pass in the 16-case file in that run. The main Hawaii comparison omits the new helper's output assertion because main lacks that variable.
  • Each month's section 416.1163(e)(2) limit uses that month's PMV status, shelter value, living arrangement and countable income, a twelfth of each annual income input, and the year's deeming status. Apart from the second prior month's food rules and inputs, which ssi_pmv_applies reads, no other month enters.
  • When the PMV or deeming doesn't apply, the limit equals the individual rate less own countable income, as before. When both apply, ISM never exceeds the individual PMV, and the limit never exceeds the individual rate.
  • When PMV status, shelter value and income hold steady across a year, each month equals the result of reading the year, so main's five 2026 cases keep their expected values. A year query sums the twelve months.
  • From March 2014, Colorado's matching ISM for an SSI recipient under the PMV rule equals SSA's ISM for the same month, halved under a couple computation.

The committed SSI properties check annual input conversion, sums of monthly amounts, monthly PMV bounds, income-month food reads, couples, shared-resource children, and each state supplement against independent January 2026 reference inputs.
The couple property also checks the section 416.1163(e)(2) limit for a claimant under deeming in January, February, October, November and December 2024.
Five 2024 cases in uncapped_ssi_without_spousal_deeming.yaml pin that limit at $628.67 in November, $943 in December and $7,858.33 for the year. It stays at $943 in November when all September food arrived on September 30, and in March when shelter support starts in July.
Cases 20 and 21 in co_ssa_in_kind_support_and_maintenance.yaml pin Colorado's matching ISM for a food-only SSI recipient at $334.33 in January 2024 and $0 in December. Case 22 pins the 2002–2006 formula at $208 in August 2004 for shelter support that starts in July. The file's other cases keep their expected values.
We compare with independent January 2026 inputs; we do not use historical main outputs.
We compared four separate Texas households across all twelve 2024 months against main 040fe5686c956dfce960f7c55fa263687a5bf669.
SSI, countable income and ISM each differ in 23 of 48 person-months, using a one-cent tolerance. The household without support matches in every month.
For continuing support, only December changes: annual SSI rises from $7,544 to $7,858.33, and annual ISM falls from $4,012 to $3,677.67.
Main counts August-start and October-start food throughout 2024. This PR counts August-start food in October and November, and excludes October-start food from every 2024 payment.
We haven't compared 2024 populations or state supplements with main.

Missouri properties retain caretaker and dependent-parent checks against the printed row. SNAP regressions cover territory thresholds, one-dollar excesses and large households.

Not in this PR

  • An otherwise eligible recipient first entitled in October 2024 with food-only support receives $943 under section 416.420(b)(1). The model treats that recipient as continuing.
  • The model uses one monthly income figure for eligibility and payment, so October and November eligibility tests still count continuing food support.
  • Other SSI income sources retain current-month accounting. We do not implement the first-month, second-month, assistance-income and COLA exceptions. The model holds neither eligibility history nor prior-year inputs for a one-year household.
  • We estimated population impacts for 2026 only, not for 2021 or 2024.

Follow-ups

Read monthly ISM for California split SSI/CAPI couples

ca_state_supplement_person still reads ISM at period.this_year for split couples and averages the 2024 change across months.
Add a split-couple witness and read ISM for the same month.

Read monthly ISM for Maryland PAA

md_paa_countable_income counts the year's ISM, and md_paa and md_paa_imputed_federal_ssi take a twelfth of that yearly income each month, so Maryland PAA also averages the 2024 change across months.
Add a 2024 witness and count each month's ISM in that month.

Verify Guam and Virgin Islands BBCE gross poverty standards

tanf_non_cash_fpg still indexes the territories' zero placeholders for BBCE gross standards.
Confirm the governing territorial rule before extending the SNAP mapping to that reader, and update its comment about keeping the two guideline readers in sync.

Move the SNAP territory guideline list to a parameter

SNAP_CONTIGUOUS_US_GUIDELINE_AREAS lists Guam and the Virgin Islands in Python.
A list parameter under gov.usda.snap.income.limit, citing 7 CFR 273.9(a)(1)(i), would let reforms change it.

Document SSI's remaining retrospective accounting rules

ssi_countable_income's documentation doesn't yet say that other income sources use current-month accounting.
Add that sentence, and open a tracking issue for the section 416.420 exceptions listed under "Not in this PR".

Reconcile SSI period changes when overlapping PRs land

Open #10146 overlaps the exclusions helper, ISM, PMV, countable income and parental resource reader; #10639 overlaps the resource reader and its YAML.
Whichever PR lands second must reconcile the monthly definitions. We changed no sibling branch.
This branch's merge of main brought in #10141 and #10183. 4f3b5101d0 converts the annual inputs in their month cases, 2a132f7df1 computes #10141's section 416.1163(e)(2) limit by month, 75a5e4e618 makes #10183's Colorado matching ISM read the month, and a6e025d84b adds Case 22 for its 2002–2006 formula. e2aa913f4d reads food_counts as one parameter at the income month's two dates, so ssi_pmv_applies builds no parameter tree for a month's last day. On dc_ptc.yaml the earlier read built trees for 32 dates where main builds 18.

Microsimulation impact

We estimate that this PR lowers Missouri TANF by $19,685 (0.02%) and raises Hawaii child care countable income by $29.5m (0.04%) in 2026 on the default dataset. We compared main at 1cbce6a238 with this branch at e2aa913f4d.

Missouri TANF rises for 4 sampled SPM units (11,946 weighted) and falls for 4 (21,482 weighted), by at most $9.63 a year each. Hawaii child care countable income rises for 5 sampled SPM units (2,673 weighted), by at most $13,435 a year each; we didn't measure the hi_ccap subsidy itself. Household benefits rise by $1,246 and household net income by $1,183, for 2 and 4 sampled households (19,311 and 23,001 weighted), by at most $3.64 each. SSI changes by less than a cent for every sampled person, SSI countable income changes by at most $0.25, and SSI in-kind support and maintenance and Colorado's state supplement each total $0 on both sides. SNAP and federal and state income tax don't change.

Output Main total Change Records changed (weighted)
mo_tanf $109.8m −$19,685 8 (33,428)
hi_ccap_countable_income $71.10bn +$29.5m 5 (2,673)
snap $95.07bn $0 0 (0)
ssi $56.99bn −$55 0 (0)
ssi_countable_income $4,302.4bn +$1,391 9,633 (16,739,838)
ssi_in_kind_support_and_maintenance $0 $0 0 (0)
co_state_supplement $0 $0 0 (0)
state_income_tax $577.2bn $0 0 (0)
income_tax $2,594.9bn $0 0 (0)
household_benefits $2,060.4bn +$1,246 2 (19,311)
household_net_income $17,199.2bn +$1,183 4 (23,001)

This PR adds hi_ccap_tanf_income, so main has no total to compare.

impact: Missouri TANF −$19,685 (−0.02%) and Hawaii child care countable income +$29.5m (+0.04%) in 2026 (8 and 5 sampled SPM units; 33,428 and 2,673 weighted); household net income +$1,183; SNAP and income taxes don't change

axiom: TheAxiomFoundation/rulespec-us#1444 queued, extended with two comments (MO TANF rounding and printed maximum grants; re-pin and encoder approval); TheAxiomFoundation/rulespec-us#1394 queued, extended with a comment (SNAP GU/VI FY2027 companions; signed encoding and HHS source admission); TheAxiomFoundation/rulespec-us#1757 queued, extended with two comments (HI CCAP TANF income from August 2017; re-pin and encoder approval); TheAxiomFoundation/rulespec-us#1865 carried by #10254 (no HI TANF deduction change here); TheAxiomFoundation/rulespec-us#1866 queued, extended with a comment (SSI food ISM by income month; historical corpus ingestion, re-pin and encoder approval).

🤖 Generated with Claude Code

MaxGhenis and others added 7 commits October 20, 2026 20:45
13 CSR 40-2.310(14): "In the payment of TA benefits, the amount shall
always be lowered to the nearest dollar interval", and no payment is made
below $10. Floor the capped grant before the minimum-payment test and
update tests that expected cents.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in Islands

7 CFR 273.9(a)(1)(i) and (a)(2)(i) set the Guam and Virgin Islands income
eligibility standards at the 48 contiguous States' poverty guidelines.
snap_monthly_fpg_amounts now maps GU and VI to CONTIGUOUS_US instead of
their zero HHS placeholders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n to incapacitated adults

HAR 17-798.3-10(b)(11) (eff. 2021-08-06) counts Hawaii public assistance
payments before overpayment recovery. Add hi_ccap_tanf_income (hi_tanf
under the TANF take-up gate, which equals tanf for Hawaii households
without the cross-state cycle tanf would create) to the CCAP sources from
2021-08-06.

HAR 17-676-54.1(c)(4),(d)(4) deduct the actual cost of care of each
incapacitated adult receiving assistance, capped at $175 (full time) or
$165. Replace the child-care and generic care_expenses path with a new
per-person input, hi_tanf_qualifying_incapacitated_adult_care_expenses,
capped per adult. This also removes the CCAP-TANF dependency through
childcare_expenses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
89 FR 21199 removed food from in-kind support and maintenance effective
September 30, 2024. The PMV trigger, PMV amount, actual shelter value, ISM
and SSI countable income were YEAR-defined, so the January 1 lookup kept
food counting through December 2024. Make them MONTH-defined (annual
queries sum the months), date the parameter 2024-09-30, add a monthly
exclusion helper alongside the annual one, and add an input for September
2024 food received only on or after September 30.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sed CCAP test input

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…January test months

Hawaii TANF reads employment_income_before_lsr, so tests that set
employment_income saw zero TANF earnings and the maximum TANF grant, which
CCAP now counts. Expected values are unchanged. Year-defined inputs are not
read in a non-January test month, so the new cases use January.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 21, 2026 02:51
@MaxGhenis MaxGhenis closed this Oct 21, 2026
@MaxGhenis MaxGhenis reopened this Oct 21, 2026
@PavelMakarchuk

Copy link
Copy Markdown
Collaborator

@MaxGhenis — heads-up on an overlap. #10254 (merged today as 52abee5, fixes #10208) limits the Hawaii TANF dependent care deduction to incapacitated adults (HAR 17-676-54.1(c)(4), (d)(4)), the same rule as this PR's "HI TANF care deduction covers incapacitated adults only" item, in the same files (hi_tanf_dependent_care_deduction.py, dependent_care/amount.yaml and their tests). An independent check found both give the same result through different inputs.

So the HI TANF part of this PR is now on main and will conflict. Could you drop it from this PR (keeping the MO TANF rounding, SNAP GU/VI, HI CCAP and SSI items), or rebase it onto main?

🤖 Posted by Claude Code

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Picking this up for the US hub. I'll post a hand-off comment here when it's ready.


Generated by Claude Code

Main's #10254 already limits the Hawaii TANF dependent care deduction to
incapacitated adults' care, reading care_expenses for disabled adults. Keep
main's implementation and tests and drop this branch's separate input
variable, which nothing else reads. In the source-conflict ratchet, keep
main's FL LIHEAP entry and this branch's removal of the HI CCAP entry.

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

ssi_countable_income and ssi_in_kind_support_and_maintenance are now
MONTH-defined. Year-keyed inputs are still split evenly across the months, but
the YAML runner sets a bare input at the test's own period, so tests that
entered an annual amount in a monthly case now supplied that amount for one
month. That is why the IN, FL, MT and LA supplement tests failed, and why CA
CAPI cases from main fail after the merge. Key those inputs to their year so
they keep their annual meaning; no expected value changes.

Add property tests: with nothing changing within a year, every month gives the
same countable income, ISM, SSI and state supplement, annual countable income
is twelve months, and ISM stays within the monthly PMV; in 2024 only food-only
support changes, from October.

Drop the Hawaii TANF clause from the changelog: main's #10254 made that change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Give each randomized person their own tax, SPM, family and marital unit so no
income is shared, and run the annual countable income input in its own
simulation: an input sets the variable for every person, which had zeroed
2025 countable income for the rest. Add the invariant that an eligible
individual's monthly countable income is that month's ISM less the $20
general exclusion, which catches annual ISM reaching the monthly computation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main now lists military_retirement_income, which adds Survivor Benefit Plan
annuities to retirement pay, in the 2017 list, and its code-health guard
rejects the raw military_retirement_pay input in benefit source lists. The
2021-08-06 list added here was copied from the older 2017 list; it is now
main's 2017 list plus hi_ccap_tanf_income.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Unify the source list under both Hawaii rule chapters and cover the first modeled month and TANF abolition. Update the changelog for the grant table, SSI dating and monthly input contract.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis MaxGhenis changed the title Fix four statute-first benefit bugs: MO TANF rounding, SNAP GU/VI limits, HI CCAP TANF income, SSI food ISM date Fix Missouri TANF grants, territory SNAP limits, Hawaii CCAP income and SSI food timing Nov 6, 2026
@MaxGhenis MaxGhenis closed this Nov 10, 2026
@MaxGhenis MaxGhenis reopened this Nov 10, 2026
@MaxGhenis MaxGhenis closed this Nov 10, 2026
@MaxGhenis MaxGhenis reopened this Nov 10, 2026
MaxGhenis and others added 6 commits November 10, 2026 17:12
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests that main added since this branch began set ssi_shelter_support_value and ssi_countable_income in month-period cases as annual amounts, and this branch reads both inputs by month.

Two Colorado ISM cases and two uncapped SSI cases now give the monthly shelter value: 200 for 2_400, 300 for 300 * 12 and 10 for 10 * 12. Four California CAPI cases key every ssi_countable_income input to 2026, as this branch's own CAPI cases do, so each amount splits into twelve months. No expected value changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Under 20 CFR 416.1163(e)(2), SSI under spousal deeming cannot exceed the
individual Federal benefit rate less the claimant's own countable income.
SSA computes that amount from the claimant's own income in the budget month
(POMS SI 01320.400 C.2) and values any ISM at the individual PMV
(SI 01320.150 B.1.b).

uncapped_ssi_without_spousal_deeming read ssi_pmv_applies and
ssi_shelter_support_value for the whole year. Both now hold month values, so
the year read took December's PMV status and the sum of the monthly shelter
values. December 2024 pays on October income, which excludes food
(89 FR 21199), so the formula skipped the individual PMV in every 2024 month
for food-only support. A claimant under deeming with food-only support got
$717.17 a month through November, where SSA pays $943 - $314.33 = $628.67.
For shelter support that starts in July, the formula applied the individual
PMV to the months before it began.

The formula now reads each month's PMV status, which ssi_pmv_applies dates
under 416.420(a), with that month's shelter value and income, and applies the
monthly exclusions. It returns the same amounts whenever inputs hold steady
across the year, so every earlier case keeps its value.

Five new YAML cases pin 2024 under deeming: the November and December
payments, food received only from September 30, the full year and shelter
support from July. The monthly ISM property test now runs the deeming limit
before uncapped_ssi, which reads it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… in month tests

Colorado charges an SSI recipient the ISM that SSA charges for the same
month (9 CCR 2503-5 3.520.79(B)(6) and 3.520.71(E)). Both _ssa_ism and
formula_2002 in co_ssa_in_kind_support_and_maintenance, which #10183 added
to main, read ssi_in_kind_support_and_maintenance for the year and divided
by 12. This branch computes that ISM by month, so the year read summed
twelve months and gave Colorado the year's average. Both formulas now read
the month. For a food-only SSI recipient in 2024, Colorado now counts
$334.33 in January and nothing in December, where it counted $306.47 in
each. New Cases 20 and 21 pin those two months. Every existing Colorado
case holds its inputs steady across the year, so none of their expected
values change.

The four new month cases outside January in
uncapped_ssi_without_spousal_deeming.yaml set age, earnings and state as
plain values. Core stores a plain yearly input in a month case for the
year that starts in that month, so those inputs missed calendar 2024. The
claimant then took the default age of 40, failed SSI's age test and got 0,
which failed the ssa-usda baseline job. The cases now key those inputs to
2024, as this branch's other 2024 month cases do, and keep their expected
values.

Two comments in that file now attribute the $207.50 deemed amount and the
$981.67 deeming computation to the model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…at the month

Case 22 checks that formula_2002 counts SSI's August 2004 ISM ($208), not a
twelfth of the year's. The property test now reads
ssi_in_kind_support_and_maintenance for the month it compares. The _ssa_ism
comment now says the model dates food by the income month and shelter by the
payment month.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ssi_pmv_applies called parameters(income_period) and
parameters(income_period.stop). Core builds and caches the whole parameter
tree for each date a formula asks for. No other formula asks for a month's
last day, and January and February reach back to the prior November and
December, so one simulated year added 14 dates. On dc_ptc.yaml the process
built trees for 32 dates where main builds 18, and the file took 16.3 s
against main's 10.4 s.

Reading the food_counts parameter itself at the two dates gives the same
values, builds main's 18 trees, and runs the file in 9.4 s. The two property
tests that pass fake parameters now give them the tree attribute the formula
reads.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@MaxGhenis MaxGhenis closed this Nov 11, 2026
@MaxGhenis MaxGhenis reopened this Nov 11, 2026
@MaxGhenis MaxGhenis closed this Nov 11, 2026
@MaxGhenis MaxGhenis reopened this Nov 11, 2026
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

David, here's where each item of your November 5 review stands at e2aa913f4d:

  • Critical 1: in 267b25e88f, I replaced the 34.526% product with the printed row. maximum_benefit/amount.yaml pays $136 to $675 for sizes 1–12, additional_person_increment.yaml adds $40 for each person above 12, and mo_tanf.py keeps the whole-dollar floor and the $10 minimum. The nine expectations you listed now read 136, 342 and 1,056, and both property tests' _payment reads a MAXIMUM_GRANT table of the printed amounts. The same commit also points mo_tanf_percentage_of_need_test.py at the printed row, and its YAML pins the size-1 and size-16 edges.
  • Should address 1: in f04ff49222, sources.yaml lists hi_ccap_tanf_income from 2017-08-01, without a separate 2021-08-06 entry, and its comment cites both chapters. Case 11 in hi_ccap_countable_income.yaml now expects 1,100 under 17-798.2-10(b)(11), and Cases 13 and 16 add August 2021 and August 2017. I posted the updated companion rows on Encode HAR § 17-798.3-10(b) Hawaii child care payment gross income, counting strike benefits from union funds (PE-US #9558 parity) TheAxiomFoundation/rulespec-us#1757.
  • Should address 2: in f04ff49222, Case 15 in hi_ccap_countable_income.yaml runs your case. It sets 2025-01, gov.hhs.tanf.abolish_tanf: true, hi_tanf: 100 and $12,000 a year of earnings, and expects hi_ccap_tanf_income: 0 and hi_ccap_countable_income: 1_000.
  • Suggestion 1: the description's follow-ups record the Guam and Virgin Islands BBCE question and the stale sync comment in tanf_non_cash_fpg.py. I haven't filed the issue yet, and this PR leaves that file unchanged.
  • Suggestion 2: this PR keeps SNAP_CONTIGUOUS_US_GUIDELINE_AREAS in Python. The description's follow-ups record the list parameter under gov.usda.snap.income.limit, and I haven't filed that issue yet.
  • Suggestion 3: the axiom: line marks Hawaii TANF: deduct each incapacitated adult's care, with employment-based caps (HAR 17-676-54.1(c)(4), (d)(4)) (PE-US #10332) TheAxiomFoundation/rulespec-us#1865 as carried by Limit Hawaii, Vermont and Kentucky TANF dependent care deductions to the care their rules allow #10254, since this PR changes only that deduction's parameter metadata.
  • Suggestion 4: in b6dc7b7ed4 and 178cb8735b, ssi_pmv_applies.py dates food support by the section 416.420(a) income month, so the October 2024 payment counts August food. Other income sources keep current-month accounting, as the description's "Not in this PR" section says. The follow-ups record the documentation sentence and the tracking issue, which I haven't filed yet.
  • Suggestion 5: in f04ff49222, the changelog fragment says the monthly input contract also covers ssi_shelter_support_value and ssi_pmv_amount, and that year-keyed amounts split across months.
  • Suggestion 6: ca_state_supplement_person still reads ISM at period.this_year. The description's follow-ups record the split-couple witness and the monthly read.
  • Branch status: the merge at a40e4afcf2 resolved the ca_capi_person.yaml conflict and keys its two ssi_countable_income inputs to {2026: 0} and {2026: 4_800}. d8d2decd37 merges main at 1cbce6a238 without conflict. 4f3b5101d0 keys ssi_countable_income by year in the four CAPI cases main added, and gives main's month tests monthly shelter values. 2a132f7df1 computes the section 416.1163(e)(2) limit from Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141 with each month's PMV status, shelter value and income. 75a5e4e618 makes Colorado's matching ISM from Count Colorado's in-kind support and maintenance for AND-CS clients in another person's household #10183 read SSA's ISM for the same month, and keys age, earnings and state to 2024 in four of the month cases that 2a132f7df1 added. a6e025d84b adds Case 22 for Colorado's 2002–2006 formula, and e2aa913f4d reads food_counts as one parameter at each date, so ssi_pmv_applies no longer asks core for a whole parameter tree at each income month's last day.

An independent AI review of the commits through f04ff49222 required no code change.

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis dismissed DTrim99’s stale review November 11, 2026 14:49

Commits through f04ff49 and the description answer the critical item, both should-address items and Suggestions 3 and 5, and the description records Suggestions 1, 2, 4 and 6 as follow-ups. My reply above maps each item.

@MaxGhenis
MaxGhenis merged commit 607904d into main Nov 11, 2026
75 of 79 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#10332 at e2aa913f4d0a847e6c25778eafc27e566cb89f2c (squash): Fix Missouri TANF grants, territory SNAP limits, Hawaii CCAP income and SSI food timing.

  • Reviews:
    • An independent review requested changes at d93c0dd3c2: annual averaging in the parental-resource reader moved January eligibility, continuing recipients got the food exclusion two months early, and the branch conflicted with main.
    • DTrim99 requested changes at d93c0dd3c2: Missouri's printed maximum-grant table, Hawaii TANF in child care income from 2017-08-01, and a test for the TANF-abolition guard, plus six suggestions.
    • Commits a40e4afcf2 through 2ed172e6d6 merged main with the CAPI monthly keys, dated SSI food by the income month, divided parental resources by monthly income eligibility, and pinned Hawaii's 2021 boundary.
    • A second independent review requested changes at 2ed172e6d6: food receipt read in the payment month, SNAP territory cases that never ran as territory households, a stale description, and DTrim99's three items.
    • Four commits answer them. 178cb8735b reads food receipt in the income month, be1731ffed keys the territory cases' state_code, 267b25e88f pays Missouri grants from the printed row, and f04ff49222 counts Hawaii TANF from 2017-08-01 and tests the abolition guard.
    • An independent review of the changes since 2ed172e6d6 required no code change at f04ff49222. It recomputed each changed expected value from the parameter files and matched Missouri's row to DSS Appendix B.
    • That review also asked for refreshed parity comments and four description fixes. The comments went up before merge, and the description took three fixes; the fourth would have misdescribed main, which counts 2024 food all year.
    • d8d2decd37 merges main at 1cbce6a238. Run 42783244013 had failed on f04ff49222 merged into main: Count Colorado's in-kind support and maintenance for AND-CS clients in another person's household #10183's Colorado Case 3 gives ssi_shelter_support_value an annual 2,400, which this PR reads as one month's value, so SSI came to 662.67 against 814. I merged main so the branch could convert such inputs. A fresh merge of the two parents reproduces the merge's tree without conflict. Main changed three of this PR's files, test_source_conflicts.py, ca_capi_person.yaml and mt_ssp.yaml, and Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141 changed the last two.
    • 4f3b5101d0 changes only test inputs, in four files where main added cases. Those month cases gave ssi_shelter_support_value and ssi_countable_income annual amounts, which this PR reads by month. The commit gives the shelter value per month (300, 10 and 200 for 300 × 12, 10 × 12 and 2,400) and keys four CAPI cases' countable income by year. No expected output changed, and I recomputed each converted case's expected values from the parameters.
    • 2a132f7df1 makes Apply 416.1163(e)(2) to deemed SSI and identify SSI couples by marriage, not tax roles #10141's section 416.1163(e)(2) limit read each month's PMV status, shelter value and income. Reading the year, the formula took December's PMV status, and December 2024 pays on October income, which excludes food. So a claimant under deeming with food-only support got $717.17 a month through November 2024, where SSA pays $628.67. The commit also adds the limit to the couple property test, because uncapped_ssi now reads it and the test's fake inputs lacked it. I checked core 3.34.2's period routing, POMS SI 01320.400 C.2 and SI 01320.150 B.1.b, and recomputed the five new 2024 cases and main's five 2026 cases.
    • An independent check at 2a132f7df1 found that Count Colorado's in-kind support and maintenance for AND-CS clients in another person's household #10183's Colorado matching ISM still read SSA's ISM for the year and divided by 12. With this PR's monthly ISM, the branch gave a food-only Colorado SSI recipient a matching ISM of $306.47 in every month of 2024, where SSA charges $334.33 through November and nothing in December. Run 42914880363 at that head failed the ssa-usda baseline job on four of the new month cases outside January. They gave age, earnings and state as plain values, which core stores for the year that starts in the case's month, so the claimant took the default age of 40 and got 0. In the same run, GitHub Actions cancelled Python shard 10's test step. 75a5e4e618 makes both Colorado formulas read the month and adds Cases 20 and 21 for January and December 2024. It also keys those four cases' inputs to 2024 and rewords two test comments to attribute the $207.50 deemed amount and the $981.67 deeming computation to the model. No existing expected value changed, and I recomputed Cases 20 and 21 from the parameters.
    • An independent check at 75a5e4e618 agreed that both Colorado formulas now read the right month. a6e025d84b acts on its comment and test points. Case 22 pins the 2002-2006 formula at $208 in August 2004, where a twelfth of the year would give $104. The Colorado property test reads SSA's ISM for the month it compares, and the _ssa_ism comment now says the model dates food by the income month and shelter by the payment month.
    • The same check found that the states-shard-4 baseline job took 45 to more than 60 minutes on this branch, where main takes 27.5, and that two jobs ran past their 60-minute limits at 75a5e4e618. I traced the cost to ssi_pmv_applies, which asked for the whole parameter tree at the first and last days of each income month. Core builds and keeps a tree for each new date, so on dc_ptc.yaml the branch built trees for 32 dates where main builds 18. e2aa913f4d reads food_counts alone at those two dates, and the file builds main's 18 trees. Run 42947707293 at e2aa913f4d passed every check, with states-shard-4 at 39 minutes and Microsimulation at 52.5, against main's 27.5 and 52.4. In the same run states-shard-3 took 17.5 minutes against main's 25.1, so runner speed moves a job's time by about 30 percent.
    • An independent check agreed at e2aa913f4d. It ran the old and new food_counts reads over 144 payment months and under a reform of the parameter, and found the same values in every month the old read could compute. It confirmed that Case 22 fails if the 2002-2006 formula reads the year, and that three state test files build the same parameter-tree dates as main.
    • I dismissed DTrim99's change request with a reply that maps each item to its commit and file.
  • Gates checked live at merge:
    • gh pr checks exits 0;
    • the latest Pull request run at the head, 43030162272, passed and tested this head merged into main at 06c0dcbc54;
    • MERGEABLE;
    • not a draft;
    • no reviewer's latest review requests changes;
    • the semantic-overlap guard: main has changed no area this PR touches since 06c0dcbc54;
    • the merge pins the head.
  • Impact (default dataset, e2aa913f4d against main at 1cbce6a238): we estimate that the change lowers Missouri TANF by $19,685 and raises Hawaii child care countable income by $29.5m in 2026. The two change for 8 and 5 sampled SPM units (33,428 and 2,673 weighted). Household net income rises by $1,183, and SNAP and income taxes don't change.
  • Next: the description's follow-ups cover California split-couple ISM, Maryland PAA's yearly ISM, the Guam and Virgin Islands BBCE standards with the tanf_non_cash_fpg sync comment, and a SNAP territory list parameter. They also cover SSI's section 416.420 documentation and tracking issue, and the overlapping PRs Limit SSI spousal-deeming child allocations to the couple's co-resident children #10146 and Round summed resources to whole cents before exact-limit asset tests #10639. None has an issue yet. We haven't measured 2021 or 2024 impacts.
  • Axiom: TheAxiomFoundation/rulespec-us#1444, #1757 and #1866 queued, each now with companion rows at f04ff49222, unchanged at the head; #1394 queued with SNAP rows that still match the head; #1865 carried by Limit Hawaii, Vermont and Kentucky TANF dependent care deductions to the care their rules allow #10254.

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis deleted the statute-bugs-ccap-tanf-snap-ssi branch November 11, 2026 14:49
MaxGhenis added a commit that referenced this pull request Nov 11, 2026
Hawaii CCAP counts Hawaii TANF since #10332, so its R1 and R2 rows set
wages above the aid limits, as the other eight rows with cash aid do.

R5 starts from one more kind of federal source: a variable whose own code
names a Social Security amount and no railroad amount, the check R3 runs on
state code. That finds is_medicare_eligible, which tests Social Security
disability for 24 months and leaves out the disabled railroad annuitants
42 U.S.C. 426(b)(2)(B) covers. FEDERAL_GAPS lists it and the seven premiums
and tests state code reads within two steps of it.

R5 reads a parameter path through names assigned in the same module or
function, and a list named in a string.

R4 maps each railroad amount to the dollars it holds and fails when two
entries of a list share any, so the tier 1 amount beside the taxable total
fails too.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
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.

4 participants