Repository navigation
Apply federal SNAP heat-and-eat SUA restriction in all states - #10033
Conversation
|
@hua7450 Max asked the US hub to hand you the API partner notification for this PR. What changes. This PR applies P.L. 119-21 section 10103(a). It amended 7 U.S.C. 2014(e)(6)(C)(iv)(I) so that energy assistance confers the heating and cooling SUA only on households with an elderly or disabled member. In the model's always-SUA (heat-and-eat) states, a household with neither such a member nor its own heating or cooling expense now gets the LUA, the IUA or no allowance, depending on its other utility bills. Partner tests. 22 of 623 cases under
For example, Amplifi case_b (Los Angeles, one parent with children aged 2 and 4, utilities included in rent) drops from the $663 monthly SUA to the $20 individual utility allowance for its phone bill. That removes its excess shelter deduction, so its January 2026 SNAP falls from $153 to $119 a month. The 11 Approval. On 2026-10-09 Max ran the partner three-question gate and approved updating all 22 pins. Ask. Please notify Amplifi and the partners whose request signatures are in |
|
@hua7450 Max has delegated the partner-test go for this PR to you (2026-10-09). I've requested your review; please approve or request changes here. Partner case. Model change. P.L. 119-21 section 10103(a), via 7 U.S.C. 2014(e)(6)(C)(iv)(I): energy assistance now confers the heating and cooling SUA only on households with an elderly or disabled member. This PR applies that in every state the model treats as heat-and-eat. The three partner-test questions (policyengine-us CLAUDE.md):
The hub is updating the 22 pins on this branch to the values above. Nothing merges until you approve, and the hub's usual gates also apply: CI, independent review and the microsimulation impact. |
- Update 33 values in 22 partner contract cases (Amplifi, CA and federal signatures, CA/MA SNAP edge cases). The 11 eligibility flips also take snap to 0. Approved through the partner-test gate; partners notified. - Remove the FNS memo URL, which now returns 404, from the parameter and variable references. - Replace per-year input keys in heat_and_eat/snap.yaml with plain values and standard case/person naming; inputs and results are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Partner tests updated, partners notified I've notified Amplifi and the federal-signature partners, and I answered yes to all three partner-test questions. I pushed the pin update in 15f8d0c, so no separate pin push is needed. Changes in 15f8d0c
Suggestion: replace
|
|
@hua7450 A heads-up on the 11 eligibility flips in this PR's partner pins. They come from a separate model error, not from the heat-and-eat rule. The model applies a net income test to California's BBCE (CalFresh Modified Categorical Eligibility), and California has none. CDSS ACL 12-62 (example 5), ACL 13-32, ACL 14-56 and ACL 15-42 each say an MCE household of three or more gets the issuance-table allotment "even if the household's net income exceeds the maximum amount allowable". #10036 (draft) removes that test. With its flags on this PR's model, the 11 households stay eligible with a smaller annual benefit:
The other 11 pins here don't change. #10036 also makes 13 partner cases that are ineligible today eligible; its body has the table. So the partner notice may need a correction: these households lose part of their benefit, not eligibility. #10036 is going to the US + core hub and will need the partner-test gate too. |
Households without an elderly or disabled SNAP member still receive the heating/cooling Standard Utility Allowance through the modeled state heat-and-eat flag. This PR applies the federal restriction to that deemed eligibility path in every heat-and-eat state. Actual heating/cooling expenses continue to qualify independently, and other utility bills retain the existing LUA/IUA paths.
This generalizes #9374 and #9610, which cover California. The outside contributor's branch is unchanged.
Legal basis and methodology
PolicyBench regressions
The YAML households preserve the snapshot scenario facts and established takeup defaults. Wages, hours worked and capital gains use the leaf aliases applied by the US Simulation adapter, which the Core YAML builder bypasses; this also supplies Montana TANF with the reported wages. A general disability input alone does not establish USDA disability status in either case.
Round 4 scope and baseline calculations
The two independent California corrections have been split out. #10065 owns excluding SNAP from CARE/FERA countable income in both existing dated lists, covering every modeled calendar year. #10036 owns the California Modified Categorical Eligibility / BBCE net-income correction for every household size. This PR restores the CPUC parameter and test paths and the California MCE / BBCE net-test paths to current main. Its changelog and regression scope now cover only the federal heat-and-eat restriction and its consequences under main's existing California rules.
The Massachusetts integration changes remain federal regressions. Both households contain people aged 35, 33 and 8, with no utility costs or disability circumstances. Their former SUA came from the modeled heat-and-eat proxy. Actual H-EAT receipt is not established: the tests also omit shelter costs, which DTA's H-EAT eligibility rules require. They correctly receive $0 SUA under the restriction:
Their immigration and income-counting assertions remain intact. Both remain within Massachusetts's 200% categorical gross-income standard; SUA changes their allotments, not their categorical eligibility.
The California child-support case is recomputed using main's California eligibility rules. Gross income is ($36,275.59 − $5,200)/12 = $2,589.63. The full-wage 20% earnings deduction remains $604.59 under 7 CFR 273.9(d)(2). Net income before shelter is $2,589.63 − $604.59 − $209 = $1,776.04. Rent of $880 is below half-net income of $888.02, so no shelter deduction applies and net income rounds to $1,776. Main's net-income screen therefore denies categorical eligibility and SNAP, giving $0. The legally correct California MCE treatment, including the one/two-person minimum and larger-household issuance-table allotments, belongs to #10036. The three California-specific MCE regression scenarios (one-person minimum, two-person minimum, and failing gross-income test) are removed from this PR's federal heat-and-eat fixture and deferred to #10036's scope. #10036 already covers the exact one-person case and other failing-gross scenarios; the specific two-person $40,000 scenario is retained as untracked handoff evidence. No edits to either split PR are made here.
Validation and invariants
This follow-up starts at Ziming's partner-approved head
15f8d0cd62d50eb3d29bc734898fffef3657a421. It replaces the 53-jurisdiction, 1,113-household Python differential grid with policy YAML, preserving the monthly effective-date, membership, heating-expense, and fallback cases. Round 4 does not change partner test files or pinned expectations.Federal regression coverage includes:
The July/August YAML boundary remains. Heating and SSDI cases assert January 2026 allowance amounts. Generic reform/baseline and cache-isolation behavior remains covered by existing Core simulation tests.
Only one small Python test remains: it uses Core's public parameter-file loader to check July 3 is unrestricted and July 4 is restricted. YAML cannot assert raw parameter values at exact legal dates. The test constructs no additional country model or simulation.
Round 4 validation: One isolated parameter-boundary Python test passed locally. Three successive single-file child-support YAML attempts were interrupted during country initialization before pytest output (approximately 61, 31, and 49 minutes); the remaining queued YAML files were not launched. No local YAML passing count is claimed. The current-head CI run passed every baseline, contrib, reform, and Household API Partners job, plus PR validation, package compatibility, and the existing microsimulation CI job. Its SSA-USDA job passed 1,693 tests, including the recomputed child-support case and both retained federal PolicyBench regressions; Household API Partners passed 623 tests. The remaining Python Rest CI job is still pending. Local test attempts used one file per foreground process, one at a time. No heavy-run or lock wrapper, folder run, full suite, or microsimulation was launched in this workspace. The parameter-only pytest command used
--noconftest --confcutdir=policyengine_us/tests/coreto avoid importing the country package through ancestor collection.make format, Ruff lint, andgit diff --checkpassed. The restored paths have no diff against main, and round 4 has no diff in partner expected-value files against the original PR head. Earlier round-3 counts and CI results validated the mixed California/federal tree and do not establish validation of this separated head.The Python file remains in the existing Rest core group, and the YAML cases remain in the existing USDA batches. No jobs, matrix entries, or runner concurrency are added. Changelog: a fixed fragment records the federal heat-and-eat SUA restriction.
Partner contract tests (updated with approval)
This PR changes 22 partner contract cases (33 expected values) in five files under
tests/policy/baseline/partners/. Each move comes from the heat-and-eat restriction: the households have no elderly or disabled member and no heating or cooling expense of their own, so they lose the deemed SUA.amplifi/2026.yaml: case B annual SNAP goes from $1,917 to $1,506.analytics_coverage/edge_cases/federal/nutrition/snap/ca.yamlandma.yaml: three cases.analytics_coverage/signatures/ca.yamlandfederal.yaml: 18 cases. Eleven of them lose SNAP eligibility, because the smaller shelter deduction raises net income above the net standard that the model applies to California non-elderly, non-disabled BBCE households.@hua7450 owns partner-test changes (Max, 2026-10-09). He answered yes to all three partner-test questions, notified Amplifi and the partners behind the federal signature file, and pushed the pin update in
15f8d0cd62. The full table is in the hub's comment on this PR.axiom: 7-USC-2014(e)(6)(C)(iv)(I) TheAxiomFoundation/rulespec-us#1622 queued
Hub microsimulation impact — re-run required
Pending: the hub must re-run the impact comparison on the final round-4 head against current main. Earlier microsimulation numbers included the California corrections and are superseded; they must not be interpreted as the impact of this federal-only PR. The former numerical table has been removed.
Run 2025 and 2026 comparisons for at least
snap,snap_standard_utility_allowance,snap_utility_allowance, andhousehold_net_income, plusis_snap_eligible,household_benefits,state_income_tax, andincome_taxas eligibility, benefit and tax controls. Report weighted sums and changed-record counts. The hub's CI and microsimulation gates apply.