Correct FY2026 SNAP utility allowances to the official FNS table - #9319
Conversation
Replace the snapscreener-sourced FY2026 (2025-10-01) values with the official FNS FY26 SUA table (2026-05-21 release): Wisconsin HCSUA/LUA and all single standards, Idaho LUA and singles, Louisiana LUA discontinued, New York LUA values, Maine phone standard eliminated, one-dollar HCSUA corrections in AL/ID/MO/SD, NV singles, MD/SD phone, and exact NC cents (636.74 size-1 HCSUA, 42.11 phone). New Jersey is pending in the official table and keeps its current values. Fixes #9314 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The distinct-utility count reads pre_subsidy_electricity_expense, and snap_individual_utility_allowance sums every single-utility standard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Program Review — PR #9319 (SNAP FY2026 utility allowances)Data correction updating the FY2026 SNAP Standard Utility Allowances (SUA/LUA/IUA, state-keyed) against the official FNS FY26 SUA table, effective 2025-10-01. Pure parameter + test update; no Source
Critical (Must Fix)None. (The only CRITICAL raised during review — that the FY2026 reference href Should Address
Suggestions
Value Audit Summary
Validation Summary
Credit where due: the PR handles the exact-cents NC values (636.74 / 42.11) correctly through Branch StatusPR branch is 18 commits behind Review Severity: APPROVEClean value audit (28/28, 0 mismatch), CI green, structurally sound, references live and jurisdiction-correct. No critical issues (the sole CRITICAL was a verified false positive). Should-Address items (leftover snapscreener reference; a few unasserted headline/large-delta values) are non-blocking quality improvements. |
- Wisconsin: the FNS FY2026 table values are the revised SUAs effective May 1, 2026 (WI DHS Ops Memos 26-22 and 26-30); restore the October 1, 2025 values from Ops Memo 25-13 and add the 2026-05-01 step, with month-keyed tests pinning the April-to-May switch. - New York: revert the Nassau/Suffolk and rest-of-state LUAs to $388 and $355 per OTDA GIS 25DC059 Attachment 1; the FNS table's NY LUA column is region-shifted. - Maryland: move FY2026 values to their actual January 1, 2026 effective date per the FNS table footnote, with December/January boundary tests. - Virginia: set the phone standard to the official $54. - Add AL, SD SUA and NV, WI IUA test cases and annotate the snapscreener reference per review. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…into fix/snap-fy26-sua-official
|
Response to the program review (commit 4f6e4d7): Should Address 1 (snapscreener reference): Annotated rather than removed — Should Address 2 (unasserted values): Added four cases to
One caveat: the NV/SD/WI IUA cases deliberately assert the model's current behavior — Suggestions:
Corrections that go beyond the review — the 28/28 audit (and this PR as originally filed) assumed every value in the 2026-05-21 FNS file is effective 10/1/2025. That file is a revision that silently bundles mid-year changes, and three states needed different handling:
ME phone → $0 is confirmed effective 10/1/2025 (Maine SNAP Rule #244 is explicitly retroactive to that date). ID (LUA 313→133) and LA (LUA discontinued) are kept at 10/1/2025 per the official table; no state source could be found to confirm or refute a mid-year effective date for either, so the table stands as the best available record. 🤖 Generated with Claude Code |
DTrim99
left a comment
There was a problem hiding this comment.
Re-reviewed after the WI/NY/MD/VA corrections. Verified every changed value directly against the official FNS FY26 xlsx (2026-05-21 release), and confirmed the untouched columns of the partially-edited states already match the table — no half-updated states. All 30 CI checks green.
Every changed value confirmed against the official table:
| State | Change | Table | ✓ |
|---|---|---|---|
| ID | LUA 313→133, singles 132→133, phone 48→49 | 133 / 133 / 49 | ✓ |
| LA | LUA→0 + active→false |
0 (discontinued) | ✓ |
| WI (5/1/26) | HCSUA 870, LUA 436, 139/34/112/112/47/106 | exact | ✓ |
| ME | phone 114→0 | 0 | ✓ |
| MD (→1/1/26) | HCSUA 572, LUA 350, phone 41 | exact | ✓ |
| VA | phone 53→54 | 54 | ✓ |
| AL/MO/SD | HCSUA 637/509/950 | exact | ✓ |
| SD | phone 61→60 | 60 | ✓ |
| NV | singles 76→77 | 77 | ✓ |
| NC | size-1 HCSUA 636.74, phone 42.11 | exact cents | ✓ |
Two flags I chased down and cleared:
- Idaho LUA = 133 looked like a suspicious drop, but it's genuinely what the table lists (ID row is 133 across HCSUA-basic and all singles). Not a misread.
- Maine's old phone = 114 was actually the SMD-offset column value misfiled as the phone standard — correcting it to 0 is right.
- The
fna.usda.govURL is not a typo: FNS migrated to that domain;fns.usda.govnow 301-redirects to it and the file downloads fine.
Untouched columns of AL/MO/SD/LA (LUA + singles) and NC's by-size LUA (392/431/474/518/564) already equal the FY26 table, so "everything else already matched" checks out.
One non-blocking note: New York is the only place the encoded values deliberately diverge from the FNS table (table lists NAS 419 / NYC 419 / ONY 388; PR keeps NAS 388 / ONY 355 per OTDA GIS 25DC059). The duplicated 419 for both NAS and NYC corroborates the region-shift argument and it's well-documented in comments — the 388/355 values are the one thing resting solely on the OTDA PDF rather than the FNS xlsx. Worth an eyeball against the OTDA attachment, but not a blocker.
The 21 FY26 test cases correctly exercise the WI April→May step, MD Dec→Jan boundary, LA fall-through to IUA, and summed-IUA behavior with correct arithmetic. LGTM.
PavelMakarchuk
left a comment
There was a problem hiding this comment.
PR 9319 review — "Correct FY2026 SNAP utility allowances to the official FNS table"
PR: #9319 by hua7450
Reviewed head SHA: 9dd3115613fa9f2cf2512d88b0dfe36a6bdd43b8
Merge base: 5117f076515d263299dfe3b70492c37bf5a7517d
Mode: full (regulatory + reference + code-pattern + test-coverage + PDF audit + Phase-5 verification)
Recommended severity: REQUEST_CHANGES (2 critical)
Source documents
| Source | Retrieved | Used for |
|---|---|---|
USDA FNS/FNA FY2026 SUA table, 2026-05-21-SUA-Table-FY26.xlsx (sheet SUA FY26, A1:J104; banner "Effective October 1, 2025 – September 30, 2026"; Last-Modified Tue, 18 Aug 2026) |
✅ workbook obtained (md5 d873f3f2a50a4e6221b24b2c9b2722ad; independently re-downloaded from the FNS origin CDN and confirmed byte-identical, sha256 b5f5ca7b…a8ea9b) |
All 40 changed value lines; raw-cell adjudication of ID, NC, LA, ME, NY |
WI DHS Ops Memo 26-30 (2026-08-18), #page=2 |
✅ PDF + 600 DPI render | WI values + the 2026-05-01 effective date |
WI DHS Ops Memo 26-22 (2026-06-05), #page=2 |
WI value table (superseded July-1 date) | |
WI DHS Ops Memo 25-13 (2025-09-16), #page=3 |
WI 2025-10-01 values | |
NY OTDA GIS 25DC059 Attachment 1 (LDSS-5006), #page=1 |
✅ PDF (via Wayback; otda.ny.gov resets the connection) | NY HCSUA / Basic / Phone |
Maine SNAP Rule #244, 10-144 C.M.R. ch. 301 Appendix Charts §999-3, Chart 8, #page=7–#page=8 |
✅ PDF + 600 DPI render + native-resolution crop | ME FSUA / NHUA / PhUA |
| 7 CFR 273.9(d)(6)(iii)(A)–(F) | ✅ govinfo XML + Cornell LII | LUA composition rule, whole-dollar rounding, "report when changed" |
| FNS memo "SNAP – Simplified Process for FY 2026 SUA Values" (2025-08-15) | ✅ | The 2.7% CPI escalation factor used in the Louisiana date analysis |
| IDAPA 16.03.04 §543 (Idaho utility allowances) | ✅ | Idaho's four-tier SUA/LUA/MUA/TUA structure |
| LAC 67:III.1966 / .1967 (Louisiana BUA) | ✅ (Cornell LII) | LA BUA is mandatory and on an October-1 cycle |
| Louisiana DCFS FFY2026 SUA issuance | ❌ NOT FOUND — 14 documented search routes | — |
| Idaho DHW / EPICS FY2026 standards chart | ❌ NOT FOUND (IDAPA carries no dollar amounts) | — |
Diff scope: 10 parameter YAMLs, 2 test YAMLs, 1 changelog fragment. No Python changed; no variable added, renamed, or removed.
Branch status
BEHIND=0, AHEAD=4 — the branch is current with main. No rebase is needed.
CI: all 31 checks pass on the reviewed head.
Critical
C1 — Maine phone standard set to 0; Rule #244, the source the PR cites, prints $114
Files
policyengine_us/parameters/gov/usda/snap/income/deductions/utility/single/phone.yaml:330—ME: 2025-10-01: 0(was114)policyengine_us/tests/policy/baseline/gov/usda/snap/income/deductions/snap_utility_allowance_fy2026.yaml:264— case "Maine FY2026 individual utility allowance is zero because the phone standard is eliminated", pinssnap_individual_utility_allowance: 0
Evidence — the source says the opposite of the change. Maine SNAP Rule #244, Chart 8 "Shelter deductions and allowances", FFY 2026 row (10/1/25 -), read at 600 DPI on FILE page 8 of the rule-pages PDF (column headers on FILE page 7; the table overflows onto a second sheet carrying the same printed folio "page 5", so FILE #page=8 is the correct anchor):
| FFY 2026 / 10/1/25 - | $744 | $1,096 | $598 | $114 | $198.99 |
Column alignment was proved, not assumed. pdftotext -bbox word centres, in PDF points:
| Chart 8 header (FILE p.7) | header x-centre | FFY2026 value (FILE p.8) | value x-centre |
|---|---|---|---|
Maximum (Max Shelter Deduction) |
192.8 | $744 |
192.8 |
(FSUA) |
264.6 | $1,096 |
264.7 |
(NHUA) |
338.5 | $598 |
338.7 |
(PhUA) |
412.3 | $114 |
412.5 |
Homeless |
486.4 | $198.99 |
486.4 |
Every centre matches within 0.2 pt. The whole FFY2026 row renders in red with underline — Maine's redline convention for text newly adopted by this rulemaking. The rule was adopted 2026-02-04 with the row labelled 10/1/25 -, i.e. retroactive to exactly the date the PR uses. Rule #244 does not eliminate the Phone Only Utility Allowance; it re-adopts it at $114. Text layer and 600 DPI image agree on every digit.
The PR takes two of Maine's three Chart 8 cells and zeroes the third. standard/main.yaml ME keeps FSUA 1_096 and limited/main.yaml ME keeps NHUA 598 — both from the same red-underlined FFY2026 row. Only phone was sourced elsewhere. There is no version of Rule #244 in which 1,096 and 598 are current but 114 is not.
Convention determination (what single/phone.yaml holds). This parameter holds the state's published phone-only standard, not an FNS residual after the SMD offset. Four independent lines:
- The file's own description defines it as the allowance "for households whose utility expenses are only phone-related" — verbatim the same quantity as Chart 8's "Phone Only Utility Allowance".
- The repo's ME series has matched Chart 8's PhUA column 6 for 6 across consecutive fiscal years (45 / 49 / 51 / 62 / 58 / 60). The PR breaks that correspondence at exactly the year it edits, in the name of the document that produces it.
- Every other populated state holds its own published phone standard: WI
106= Ops Memo 26-30's PUA; NY32= the OTDA notice's Phone row; CO97cites 10 CCR 2506-1 §4.407.31(D)(2). - The SMD offset is never netted against the phone standard for any state. The FNS sheet's own footnote says SMD offsets are already removed from column B (HCSUA). AL carries phone 53 with SMD 4; VT 37/7; SD 60/14; CO 97/7 — all unmodified. Across all 44 mappable states the post-PR parameter matches the FNS Phone column 43 times, the sole deliberate exception being WI — where the PR itself already established that the state publication beats the FNS table. Maine is the same situation and gets the opposite treatment.
Maine's SMD-offset value in the FNS table is 114 — an 8× outlier (next highest is SD at 14, median 0) and numerically identical to the PhUA Maine's own rule prints. The parsimonious reading is a one-column misalignment in the FNS ME row: the same defect class the PR itself diagnoses and documents for the NY LUA column.
Downstream impact (measured against the PR-head tree). always_standard.yaml has ME: 2015-10-01: true, so on the natural code path a Maine household routes to the SUA and the change is inert for benefits today — snap_utility_allowance = 1,096 under both 0 and 114. But on the IUA path the parameter is fully load-bearing:
| Scenario (ME, 2026-01, phone expense only) | type | IUA | snap_utility_allowance |
excess shelter deduction |
|---|---|---|---|---|
repo (ME phone = 0), forced IUA |
IUA | 0 | 0 | 0 |
ME phone = 114, forced IUA |
IUA | 114 | 114 | 114 |
$0 means no utility deduction at all. phone.yaml carries uprating: gov.usda.snap.uprating, so a 0 at 2025-10-01 uprates to 0 forever — the error does not self-heal in future fiscal years — and the value is served directly through the API and /us/metadata regardless of the always-SUA routing.
The test pins the disputed value and its name asserts an elimination the rule does not perform. The case at :264 forces snap_utility_allowance_type: IUA as a direct input (bypassing a derivation that never yields IUA for Maine), so it is a pure parameter pin: with ME phone = 114 the identical setup returns 114. It will actively resist the correction.
Also: no Maine citation exists anywhere in the repo. "Maine SNAP Rule #244" appears only in the PR body and changelog prose, with no URL; grep finds no Maine reference in any of the 10 changed files.
Requested
single/phone.yaml:330→ME: 2025-10-01: 114.- Add the reference:
https://www.maine.gov/dhhs/sites/maine.gov.dhhs/files/rule-2026-02/SNAP%20244P%20Rule%20Pages%20%28TC%29.pdf#page=8(anchor verified), titled for Rule #244 Chart 8, with an inline comment noting that the FNS FY26 table reports ME Phone as 0 with 114 in the adjacent "SMD Offset" column and that the state rule governs — the same precedence this PR already applies to Wisconsin. - Retarget the test at
:264to114and rename it (e.g. "Maine FY2026 phone-only utility allowance is $114 (Rule #244 Chart 8)"). - Drop "Maine phone standard eliminated" from the PR body and from
changelog.d/fix-snap-fy26-sua-official.fixed.md:1.
C2 — Louisiana LUA deactivation: the deactivation is well-evidenced, but the 2025-10-01 effective date is not, and it applies a −$660/household/year cut back to October 2025
Files
policyengine_us/parameters/gov/usda/snap/income/deductions/utility/limited/active.yaml:77—LA: 2025-10-01: falsepolicyengine_us/parameters/gov/usda/snap/income/deductions/utility/limited/main.yaml:274—LA: 2025-10-01: 0(was258)policyengine_us/tests/policy/baseline/gov/usda/snap/income/deductions/snap_utility_allowance_fy2026.yaml:73
What is well-evidenced (and stronger than earlier reviews assumed): the deactivation itself. The FNS cell is not a blank. Raw cell read: C46 = 0, type n, number format "$"#,##0 — a published literal numeric zero. A programmatic sweep of all 864 data cells (54 rows × 9 columns) found zero blanks; the workbook distinguishes "no such allowance" from "not reported" by footnote flags on the state name, not by cell value, and A46 is plain Louisiana with no asterisk (not ***Pending, unlike New Jersey). Cross-checking the FY26 BUA/LUA column against limited/active.yaml for all 48 mappable keys gives 47/48 agreement (0 ⟺ active: false), and Rhode Island is the exact structural twin of the new Louisiana row — 844 | 0 | 0 | 0 | 0 | 0 | 0 | 27 | 7, HCSUA present, BUA zero, phone-only individual standard, already modelled as no-LUA. "HCSUA + phone-only, no BUA" is a real, recognised configuration.
What is the defect: the date. The FY26 table is a live snapshot, not an as-of-October-1 record. Filename 2026-05-21-…; FNS landing-page label "FY 2026 SUAs - Updated August 2026"; HTTP Last-Modified Tue, 18 Aug 2026. And the PR's own Wisconsin hunks prove that table membership carries no October-1 information: the WI figures printed in that table (HCSUA 870, LUA 436) are dated by this PR to 2026-05-01 on the strength of a state memo (standard/main.yaml:669). A value's presence in this table therefore says nothing about whether it was in force on 2025-10-01. Applying Louisiana's zero at 2025-10-01 is precisely the inference the same PR rejects for Wisconsin.
Three independent lines point to LA still having a $258 BUA on 2025-10-01:
-
The FNS COLA factor. The FNS memo "SNAP – Simplified Process for FY 2026 SUA Values" (2025-08-15) tells states they may escalate FY25 values by the June-2024→June-2025 CPI-U, 2.7 percent, and that FNS "will readily approve" the result.
-
Louisiana plainly used it — two of three standards land exactly on it, the third would have been 258.
Standard LA FY25 × 1.027 FY26 table HCSUA 453 465.23 → 465 465 ✅ Phone 74 76.00 → 76 76 ✅ BUA/LUA 251 257.78 → 258 0 ❌ 258 is not a number derived after the fact — it is the value already in the repo, which this PR overwrites.
-
snapscreener.com still serves 258 under an October-2025 header. Its Louisiana page, headed "Oct. 1, 2025 through Sept. 30, 2026", carries HCSUA $465 and phone $76 (both matching the current FNS table exactly) and $258 — a figure that appears nowhere in the current table. The consistent explanation is that it captured an earlier version of the FY26 table in which LA's BUA was $258, and the zero arrived later. Circumstantial on its own; it converges with (1)–(2) and with the file's August-2026 modification date.
Additionally, LAC 67:III.1966(A) — "Households which do not incur heating or cooling costs separate and apart from their rent or mortgage use a mandatory single Basic Utility Allowance (BUA)" — is still on the books (amended only through 2005), and no 2025/2026 Louisiana Register notice touching §1966 could be found. A state eliminating its BUA would ordinarily have to amend or repeal it.
Measured impact. always_standard[LA] is false, so with active[LA] = false every non-heating LA household with ≥1 utility bill drops to IUA, and snap_individual_utility_allowance sums all six standards regardless of which bills the unit pays — LA's are 0/0/0/0/0 plus phone 76. Run against the PR snapshot, 1 person, LA, electricity + water, no phone, no heating:
PRE-PR POST-PR
snap_utility_allowance_type LUA IUA
snap_limited_utility_allowance 258.0 0.0
snap_individual_utility_allowance 0.0 76.0
snap_utility_allowance 258.0 76.0
Allowance 258 → 76, a −$182/month cut, i.e. a $76 allowance consisting entirely of a phone standard the household does not pay. For an elderly one-person LA household (age 70, $12,000 earnings, $10,800/yr housing):
| excess shelter ded. | net income | normal allotment | snap (2026 annual) |
|
|---|---|---|---|---|
| PRE-PR | 594.25 | 533.25 | 138.10 | 1,706.77 |
| POST-PR | 412.25 | 715.25 | 83.50 | 1,046.17 |
| Δ | −182.00 | +182.00 | −54.60/mo | −660.60/yr |
Identical −$54.60/mo at $0 earnings. That is ≈$660/year less SNAP per affected Louisiana household, applied from 2025-10-01 — including months in which, on the evidence above, the $258 BUA was probably still in force.
Two secondary problems in the same hunk.
- Zeroing
main[LA]is redundant and lossy.active: falsealone fully suppresses the LUA (snap_limited_utility_allowancereturns 0 whenever the type is not LUA). Zeroingmainadditionally destroys the recorded258— the very number that turns out to be the strongest evidence about LA's actual FY26 BUA — and, becauselimited/main.yamlcarriesuprating: gov.usda.snap.uprating, it poisons the chain: FY2027+ uprates as0 × index = 0, so restoringactivelater (including via agov.contribreform or an API override) silently yields $0, not an uprated amount. The house pattern is theactiveboolean alone — AR and AZ both sit atactive: falsewith a live legacy amount inmain.yaml. - The LA hunk is the only changed region with no explanatory comment. WI, NY_NAS, NY_ONY and MD each got one naming the state issuance; LA — the change the PR body itself concedes has no state source — got none.
- The PR's test picks the sympathetic case.
:73suppliespre_subsidy_electricity_expense: 80plusphone_expense: 50, where $76 at least corresponds to a bill the unit pays. The adverse case (electricity + water, no phone) yields the same $76 and is untested.
Requested (in order of preference)
- Revert the LA hunk pending a Louisiana source —
active[LA] = true,main[LA] = 258(which is both the pre-PR repo value and the FNS-simplified-method value) — and open a tracking issue for: LA DCFS Division of Family Support FFY2026 SUA issuance / October-2025 mass-change notice; FNS Southwest Regional Office's approved LA FY26 submission and any mid-year amendment with dates; a Louisiana Register search for any 2025–2026 rule amending or repealing LAC 67:III.1966. - If it must land now: do not zero
main[LA](keep 258 so the value survives); add an inline comment onactive[LA]stating the date is inferred from the FY26 table and unconfirmed by any Louisiana source; and add the adverse test case (electricity + water, no phone) so the phone-standard fallthrough is visible in the suite.
Investigated and cleared — reported criticals that did not survive verification
These were raised as CRITICAL by delegate roles and are disproved. They are recorded here with the disproving evidence and are not carried as findings.
✅ CLEARED — New York LUA "mismatch" (NY_NAS 388 vs 419, NY_ONY 355 vs 388)
The reported mismatch was a row-shift artifact in the flattened spreadsheet dump, and the repo's values are correct. Re-extracted by unzipping the OOXML package and reading xl/worksheets/sheet1.xml against sharedStrings.xml — bypassing the flattening entirely — cells C60/C61/C62 genuinely carry 419 / 419 / 388 against correct column-A labels, i.e. the shift is inside the published federal workbook, not the dump. The NY OTDA GIS 25DC059 Attachment 1 (LDSS-5006 Rev. 09/25, #page=1) prints the Basic Utility allowance as NYC $419 / Nassau-Suffolk $388 / Rest of State $355, which is exactly what the repo holds. The FNS column is OTDA's series shifted up one row (355 falls off the bottom; 355 appears nowhere in the workbook), while the HCSUA column on the same three rows cross-checks clean (988 / 1062 / 877). The prior year corroborates the mapping: OTDA's "Old SUA" Basic column 408 / 378 / 346 is precisely the repo's 2024-10-01 values. Under 7 CFR 273.9(d)(6)(iii) the state agency sets the amounts and FNS compiles them, so the OTDA issuance governs.
Also: these two values are unchanged by this PR. Both 2025-10-01 lines appear as unchanged context; the only NY hunks in limited/main.yaml are comment insertions. What the PR actually does here is document the FNS row-shift, and both added comments are verified accurate against the primary source. No action.
✅ CLEARED — Idaho LUA 313 → 133
Reported as "regulatorily impossible" and a column misread. Every element of that finding fails:
- Raw cell.
C40 = 133under headerC3 = "Basic/ Limited Utility Allowance (BUA/LUA)", read both with openpyxl and fromsheet1.xmldirectly. The XML for row 40 contains no<f>element in any cell — every value is a stored literal, not a formula, sum, or cross-column reference. - No column shift. Illinois (row 41) has LUA 457 against an individual standard of 78, ruling out a sheet-wide shift;
B40 = 390is a +2.9% adjustment on Idaho's FY2025 HCSUA of 379, ruling out a left shift; and the right-shift story is self-contradictory, since it claims C40 copied D40 while simultaneously accepting D40 = 133 as the correct electricity value. - The "sums to 133" claim is arithmetically false. Five singles of 133 sum to 665, not 133. (The underlying reports asserted an identity — 133 equals each single standard — which is true; the sum framing was a paraphrase slip and points at nothing.)
- The regulation imposes composition, not a dollar floor. 7 CFR 273.9(d)(6)(iii)(A) requires only that "The LUA must include expenses for at least two utilities." It prescribes no minimum amount and does not require the LUA to exceed any individual standard. "133 is too low" was an inference, not a violation. Idaho's LUA/HCSUA ratio of 0.341 ranks 13th lowest of 59 non-zero rows and is higher than California's 0.256.
- Idaho genuinely publishes one combined non-heating standard. IDAPA 16.03.04 §543 gives Idaho four allowances — SUA, LUA, MUA, TUA — where the Minimum Utility Allowance is a single flat amount for a household billed for one non-heating, non-phone utility (§543.03). FNS replicates that one MUA across its five individual columns; 16 rows in the FY26 table do the same (CO, DE, DC, ID, IL, IN, MO, MT, NE, NV, ND, OH, OR, PA, SD, WV).
- Crucially, the provenance runs the wrong way.
git log -S "2025-10-01: 313"traces the old value to commit283d07a4a7, "Add FY2026 values for all SNAP utility allowances", whose message reads "Add 2025-10-01 (FY2026) entries from snapscreener.com". The old 313 was a commercial-calculator scrape. Blocking this change would preserve snapscreener.com's figure over the official FNS workbook — an inversion of the source hierarchy. (The transposition theory also fails: 313 came from snapscreener in March 2026 and 133 from cell C40; a digit transposition requires a single origin.) - Measured consequence is also smaller than reported: −$180/month on the allowance, but −$22.20/month of SNAP for an uncapped elderly single and $0 for a cap-bound family, not the "$54/month" upper bound cited.
This materially changes the verdict on the PR: Idaho was one of the two headline blockers, and it is not a defect. One non-blocking observation survives — see S3.
✅ CLEARED — fna.usda.gov is not a broken or typo'd host
Raised as CRITICAL by two independent roles. It is not a defect. FNS was renamed the Food and Nutrition Administration on 2026-06-01; www.fna.usda.gov serves the same site through the same Akamai property and IP as www.fns.usda.gov, and saved copies of the file from both hosts are byte-identical (md5 d873f3f2a50a4e6221b24b2c9b2722ad). The HTTP 403 both roles hit is an Akamai bot block returned to non-browser user agents for both hostnames — not evidence of a dead link. A negative control on the same host (…/ZZZ-does-not-exist-9999.xlsx) returns a 404 with FNS-branded chrome, and www.zqzqnotarealhost.usda.gov fails to resolve, so the fna record is deliberately provisioned. Demoted to a canonicality nit across the 11 citing lines — see S1.
✅ VERIFIED CORRECT — Maryland's re-dating to 2026-01-01
Flagged early as a possible coverage gap; it is not. The FNS workbook's ** footnote reads verbatim: "Indicates the State does not follow the fiscal year for their SUA approvals. Maryland's SUA is effective January 1." Maryland (row 53) is the only **-flagged row, and post-PR zero repo values dated 2025-10-01 carry that footnote — all eight MD parameters moved correctly. The removed comment ("Starting FY2026 (10/1/2025), Maryland aligned with the federal cycle") was a real pre-existing error that the footnote directly contradicts.
No gap and no stale carry. Oct–Dec 2025 falls back to MD's own 2025-01-01 entries (HCSUA 557, LUA 341, phone 40) — Maryland's correct CY2025 values, not a rolled-over federal FY2025 number — and the FY2026 values start exactly at 2026-01-01. Both boundary months are pinned by tests. Net substantive effect: MD HCSUA is 557 rather than 572 for Oct–Dec 2025. This is the second-strongest part of the PR after Wisconsin.
Should address
A1 — Wisconsin's single combined water+sewer allowance is encoded twice; this PR raises the magnitude and newly pins it in a test comment that cites memos which do not support it
Files
.../utility/single/water.yaml:514—WI: 2026-05-01: 112.../utility/single/sewage.yaml:514—WI: 2026-05-01: 112.../tests/.../snap_utility_allowance_fy2026.yaml:135— WI IUA case pinning2026-04: 474/2026-05: 550
Evidence (confirmed at 600 DPI). WI DHS Ops Memo 26-30 #page=2 publishes one allowance covering both: row 4 of a seven-row table reads, character for character, Water and Sewer Utility Allowance (WUA) | $106 | $112 | Water and Sewer. Three mutually independent proofs that it is one allowance: the name is singular with a single code WUA; its "Type of Utility Allowance" cell is one cell reading "Water and Sewer" (exactly parallel to row 7's "Garbage and Trash"); and the prose immediately above states "There are seven different types of utility deductions" against a table with exactly seven data rows — a separate sewer allowance would make eight. Identically corroborated by Ops Memo 26-22 #page=2 and Ops Memo 25-13 #page=3 (narrative: "The Water and Sewer Allowance (WUA) increases to $106"; Table 3 lists seven codes, one WUA). Text layers agree with the 600 DPI images throughout.
The FNS table repeats 112 in both its Water and Sewage columns because its fixed grid has no combined column — the same artifact is visible for West Virginia, whose row repeats 88 across five columns. The federal table and the state memo do not actually disagree; the repo copies the grid and thereby materialises the artifact as a second Wisconsin allowance.
Measured (PR head, WI SPM unit, one distinct utility bill, no heating/cooling):
| Period | Repo snap_individual_utility_allowance |
Memo-correct (single WUA) | Overstatement |
|---|---|---|---|
| 2026-04 | 474.00 | 368.00 | +106.00/mo |
| 2026-06 | 550.00 | 438.00 | +112.00/mo |
Verified two ways (a Reform.from_dict zeroing …single.sewage.WI, and an in-place patch of an already-built tax_benefit_system), both returning 368.0 / 438.0. It does not reach WI households with both water and sewer bills — two distinct bills route them to the LUA ($436) — but it applies to every WI household on the IUA path, because the IUA sums all six standards regardless of which single bill the unit pays.
Pre-existing vs introduced — the determination. Pre-existing structural defect, amplified, newly asserted — not introduced by this PR. The equal water/sewage pair has existed for WI since 2017-10-01; the sole exception is sewage.yaml 2018-10-01: 0, the only year WI was encoded correctly. In both files 2025-10-01: 106 appears as unchanged context; the PR adds only the 2026-05-01: 112 line to each. So this PR changes the magnitude (106 → 112, +$6/mo, +5.7%) but not the structure.
What is new here, and is the minimum thing worth fixing in this PR: the new test file spells the double count out in an inline comment — 155 + 48 + 106 + 106 + 28 + 31 = $474 and 139 + 34 + 112 + 112 + 47 + 106 = $550 — and attributes those sums to Ops Memos 25-13 and 26-22/26-30, memos that publish a single 112 and never 112 + 112. That converts a latent data artifact into an asserted expectation that will actively resist correction.
Severity: SHOULD ADDRESS, not a blocker. The PR reproduces the FNS table faithfully, which is its stated scope, and it did not create the duplication.
Requested
- Minimum for this PR: reword or drop the test comment at
:135so it does not cite the Wisconsin memos as authority for106 + 106/112 + 112. - Follow-up issue: the repeated-column artifact affects 18 jurisdictions carrying
water == sewageat equal non-zero values (CO, DC, DE, ID, IL, IN, MI, MO, MT, ND, NE, NV, OH, OR, PA, SD, WI, WV); only AK/GU/HI have demonstrably distinct water and sewer standards. WI is the one where the state memo is in hand and unambiguous. The fix needs no code change — carry the combined amount inwater.yamland holdsewage.yamlat 0, the exact shape WI's own2018-10-01: 0already used.
A2 — North Carolina cents: the workbook really does store them, but they are unrounded intermediates and NC is the only state in the tree carrying cents
Files
.../utility/standard/main.yaml:398—NC: 2025-10-01: 636.74(was637).../utility/standard/by_household_size/amount.yaml:113—NC: 1: 2025-10-01: 636.74(was637).../utility/single/phone.yaml:394—NC: 2025-10-01: 42.11(was42).../tests/.../snap_standard_utility_allowance.yaml:50— pin moved7_491→7_490.22
Note on process: this item was verified through code-path (5C) against the raw workbook. It is a spreadsheet-cell question with no disputed PDF page, so visual verification (5D) is not applicable — no step was skipped.
What the workbook stores (the decisive fact, and it corrects two claims made against the PR). Read two independent ways (openpyxl data_only=True, and by unzipping and reading sheet1.xml), row 63 verbatim:
<c r="B63" s="9"><v>636.74</v></c> … <c r="I63" s="9"><v>42.11</v></c>B63 (NC 1 member, HCSUA) stores 636.74 with number format "$"#,##0, which is why the rendered sheet and the text extraction display $637. I63:I67 (Phone, all five NC size rows) store 42.11. An exhaustive scan finds these are the only non-integer numeric values in the entire workbook:
$ grep -oE '<v>[0-9]+\.[0-9]+</v>' xl/worksheets/sheet1.xml | sort | uniq -c
5 <v>42.11</v>
1 <v>636.74</v>
So two claims made against this PR must be struck: ✗ "the repo introduced spurious precision" (it transcribed the raw cells byte-for-byte), and ✗ "only NC size 1 got cents, which is suspicious" (only B63 carries cents in the HCSUA column — the pattern is in the source, and is evidence of faithful transcription).
What the regulation requires. 7 CFR 273.9(d)(6)(iii)(B), verbatim (confirmed against Cornell LII and GPO govinfo): "The State agency must review the standards annually and make adjustments to reflect changes in costs, rounded to the nearest whole dollar." The duty binds the State agency at the step where it sets its standards, and utility.standard.main[NC], utility.standard.by_household_size.amount[NC][1] and utility.single.phone[NC] all encode such standards under (d)(6)(iii)(A). The operative amount NC applies in casework is therefore a whole dollar; 636.74 / 42.11 are most economically read as unrounded methodology outputs transmitted to FNS. (NC's own FY2026 publication could not be located; 10A NCAC 71U .0206 confirms only the annual October-1 mechanism and size-varied structure.)
NC is the only state in the tree carrying cents. An exhaustive scan of all 19 files under .../deductions/utility/ returns exactly three decimal-valued dated lines — all NC, all FY2026. Nothing else under gov/usda/snap carries cents in a dollar-denominated allowance (the only other decimals are rates and the CPI uprating index). NC's own history is whole-dollar throughout (400 … 620), and the PR replaces an existing whole-dollar 637 / 42; main still carries 2025-10-01: 637.
Do the cents survive to the final benefit? Yes — they do not wash out. NC one-person unit, 2026-01, baseline vs a counterfactual at 637/42:
| annual earnings | snap (636.74) |
snap (637) |
Δ |
|---|---|---|---|
| 0 – 9,000 | 298.00 | 298.00 | 0.00 |
| 12,000 | 243.10 | 243.40 | +0.30 |
| 15,000 | 153.10 | 153.40 | +0.30 |
| 18,000 | 63.10 | 63.40 | +0.30 |
| 21,000+ | 24.00 | 24.00 | 0.00 |
Mechanism: the 26¢ propagates 1:1 into the excess shelter deduction and out of net income; snap_expected_contribution then applies np.floor(snap_net_income) * 0.3, and here 26¢ straddles a whole-dollar boundary (floor(183.09) = 183 vs floor(182.83) = 182), so the floor amplifies it into a $1 net-income step — $0.30/month, $3.60/year. Downstream there is no rounding: the model emits a non-whole-dollar allotment of 243.10. Zero where the max or min allotment binds; non-zero across the phase-down range.
Severity follows that evidence: SHOULD ADDRESS (minor), not critical. It is a rounding/house-convention fix worth ~$0.30/month on one state's one-person households, not a data-integrity failure — and the PR's transcription is not at fault.
Requested — revert to the operative rounded standards: standard/main.yaml:398 → 637; by_household_size/amount.yaml:113 → 637; single/phone.yaml:394 → 42; snap_standard_utility_allowance.yaml:50 → 7_491 (dropping the 636.74*3 comment); and the new snap_utility_allowance_fy2026.yaml:178 NC case → 637. The absolute_error_margin: 0.01 then becomes unnecessary on the NC case. If the team prefers the raw-source value, that is defensible only with an explicit comment on all three lines recording that the FNS cell stores cents while both the regulation and the FNS rendering give the whole dollar — otherwise the next reviewer re-raises it.
A3 — The new test file has 18 cases, not the 21 the PR body claims
policyengine_us/tests/policy/baseline/gov/usda/snap/income/deductions/snap_utility_allowance_fy2026.yaml contains exactly 18 - name: entries (lines 8, 30, 53, 73, 95, 114, 135, 159, 178, 197, 216, 240, 252, 264, 276, 285, 295, 314) — independently counted by two roles. Either three cases were dropped before push, or the count is wrong. Update the PR body, or add the missing three.
A4 — Test-coverage gaps on values this PR changes
All 18 expected values were re-derived by hand against the parameter tree and the shelter formulas, and all 18 check out — no arithmetic error, no wrong lookup, no illegal period, no Enum voided by the 0.01 margin. The gaps are in what is not pinned:
- Virginia has no test coverage at all.
single/phone.yamlVA: 53 → 54is the entire VA change, and no case anywhere intests/.../snap/touches VA at an FY2026 period. VA's other five singles are 0,limited/active[VA]is false, and VA is notalways_standard, so a one-utility VA household lands squarely on the phone standard — a two-line case would pin it and would fail on pre-PR parameters. Highest-value missing case in the PR. - Idaho: 7 of 8 changed values unpinned. Only
limited/main[ID]133 is pinned. Unpinned:standard/main[ID]389→390, the five singles 132→133, and phone 48→49. Two cases close all of it (an ID HCSUA case expecting 390, and an ID IUA case expecting5 × 133 + 49 = 714; pre-PR 708). - North Carolina phone is unpinned. The size-1 HCSUA cents value is pinned twice, the phone cents value not at all.
- Maryland is half-pinned.
standard/main[MD]is fully pinned on both sides (2025-12 → 557 fails pre-PR; 2026-01 → 572) — the strongest boundary test in the PR. But the MD phone gap-window case (2025-12 → 40) cannot fail on pre-PR parameters (the old tree also had 40 in Oct–Dec 2025), so it documents intent without pinning anything; andlimited/main[MD]350's re-dating has no case at all. - Louisiana has no pre-change case proving the LUA used to apply. A single year-level case with month-keyed outputs (2025-09 → LUA 251, 2025-10 → IUA 76) would pin the discontinuation date — which is exactly the thing C2 disputes.
- Structural limit worth stating: the six WI single standards, the five NV values and the SD phone are observable only in aggregate through
snap_individual_utility_allowance, which sums all six regardless of the household's actual bills. Offsetting errors inside a sum would pass — e.g. WI's outlier phone 31 → 106 paired with electricity 155 → 139. This can only be closed by source verification of each component (done: both are confirmed by Ops Memo 26-30), not by another test.
A5 — Changelog fragment starts with - , which towncrier will double-bullet
changelog.d/fix-snap-fy26-sua-official.fixed.md:1 begins - Correct FY2026 SNAP utility allowances…. Every merged fragment in this repo starts with plain prose; towncrier's template supplies the bullet, so this renders as - - Correct FY2026 … in CHANGELOG.md. Drop the leading - . (Filename and type are otherwise correct: branch fix/snap-fy26-sua-official → fix-snap-fy26-sua-official, type fixed, top-level file.) While editing it, also drop "Maine phone standard eliminated" per C1.
A6 — WI Ops Memo 25-13 is the source of eight WI values but appears only in inline comments
limited/main.yaml, standard/main.yaml and the six single/*.yaml files carry the comment # WI DHS Ops Memo 25-13: FFY 2026 value effective 10/1/2025. with no href. Since the FNS FY26 table now holds Wisconsin's May-2026 figures, the 10/1/2025 Wisconsin row (553 / 385 / 155 / 48 / 106 / 28 / 31) is not corroborated by the FNS table at all. Partially mitigated — Ops Memo 26-30's "Old Amount" column restates all seven — but 26-30 never states their 10/1/2025 effective date. Promote 25-13 to a formal reference; the anchor is verified (pr9319-review-pdf-4.pdf, 4 pp; Table 3 / "STANDARD UTILITY ALLOWANCES" on file page 3; page 1 states EFFECTIVE DATE: October 1, 2025):
- title: Wisconsin DHS Operations Memo 25-13, FoodShare Cost of Living Adjustments — Table 3, FFY 2026 standard utility allowances effective October 1, 2025
href: https://www.dhs.wisconsin.gov/dms/memos/ops/dms-ops-2025-13.pdf#page=326-22 should stay a comment: its table is identical to 26-30's and its effective date (July 1, 2026) is superseded, so citing it as the source of a 2026-05-01 value would point a reader at a document saying July 1. The current treatment is accurate.
A7 — Two parameter files holding FY2026 values got no FY2026 reference
The PR states every FY2026 value was verified programmatically against the workbook and adds the FY2026 citation to 10 files — but not to .../utility/limited/by_household_size/amount.yaml (AZ, NC, TN LUAs at 2025-10-01) or .../utility/single/by_household_size/{electricity,gas_and_fuel,water}.yaml (GU, HI). Either these tables were outside the verification (a coverage gap worth stating) or they were covered and the reference should be added for traceability. The PDF sweep did check them and found them consistent with the table, so this is a citation gap, not a value gap.
Suggestions
S1 — fna.usda.gov → fns.usda.gov (11 lines): canonicality nit only
Investigated and cleared as a defect (see the cleared-items section: byte-identical files, Akamai 403 on both hosts, FNS renamed to FNA on 2026-06-01). Still worth normalising: FNS's own landing page publishes the file under www.fns.usda.gov; alias hostnames get retired without notice; and it is inconsistent inside the very same reference list — the adjacent FY2025 entry already uses fns.usda.gov, so a reviewer reading two lines that differ by one letter reads it as a typo. Lines: limited/main.yaml:682, limited/active.yaml:197, standard/main.yaml:707, standard/by_household_size/amount.yaml:420, single/{electricity,gas_and_fuel,phone,sewage,trash,water}.yaml:20, and snap_utility_allowance_fy2026.yaml:3. While editing, consider pinning the revision in the title — FNS labels the file "FY 2026 SUAs — Updated August 2026" while keeping the 2026-05-21 filename, so a future silent re-issue would otherwise be undetectable.
S2 — Test file organisation and naming
snap_utility_allowance_fy2026.yaml is year-scoped, not variable-mirroring — the repo convention is one file per variable (snap_standard_utility_allowance.yaml, snap_limited_utility_allowance.yaml, snap_individual_utility_allowance.yaml all sit beside it), and this file spans four variables. Either fold the cases into the per-variable files or commit to a _fyNNNN convention deliberately, before _fy2027.yaml sprawl. Also: repo convention for case names is Case N, description.; people should be person1, not person.
S3 — Idaho: record the LUA==MUA identity, and track the effective-date question separately
Two things survive the Idaho clearance, both non-blocking:
- Idaho is the only row in the FY26 table where the LUA equals the individual standard (
C == Dat non-zero values; the 16-state scan found no other). Under IDAPA §543 a household billed for one non-heating utility (MUA) and one billed for three (LUA) therefore receive the same $133 deduction. Lawful and unremarkable in level, but an unusual state design — worth a comment on theID:block atlimited/main.yaml:208or a follow-up issue. - The Idaho effective-date question is untouched, not resolved. Whether 133 took effect 2025-10-01 or is a mid-year revision silently carried by the August-2026 snapshot is the same thesis C2 raises for Louisiana. The FY25-table comparison that would bear on it was blocked by an Internet Archive outage during this run. Track it on its own; the value itself is not in dispute.
S4 — Maryland: diff churn and the January-vs-October uprating mismatch
Five files move 2025-10-01: 0 → 2026-01-01: 0 for MD (single/{electricity,gas_and_fuel,sewage,trash,water}.yaml) where MD has been 0 continuously since 2019/2023. Inert and harmless; dropping the duplicate zeros would shrink the diff. Separately, with MD's last explicit value now at 2026-01-01, uprating: gov.usda.snap.uprating (all index dates are MM-10-01) will still generate MD's next value at 2026-10-01, contradicting the January cycle this PR just documented. Pre-existing, but the PR makes it visible — worth a follow-up issue.
S5 — Rename the four always-standard parameter pins
snap_utility_allowance_fy2026.yaml:240, 252, 264, 276 force snap_utility_allowance_type: LUA/IUA for NY_NAS, NY_ONY, ME and MD — all always_standard: true regions where the formula can never produce those types. They are valid parameter regression pins and the header comment says so, but the names read as household outcomes. Rename to "…standard is $X (parameter pin)". This is the same defect that makes C1's test name actively misleading.
S6 — Pre-existing items in the same files, outside this PR's diff
Recorded so the maintainer can decide separately; none is introduced or worsened by PR 9319.
- AR and AZ carry
limited.active: falsewhile the FY26 table publishes a BUA/LUA. AR: table274,active[AR] = falsesince 2021-10-01, with a correctlimited.main[AR] = 274that is therefore unreachable. AZ: table149(1–3 members) /201(4+), correct amounts inmainand the by-size ladder, same unreachability. Neither state is footnoted*(both are mandatory-SUA states) and neither is inalways_standard.yaml. This was the single mismatch in a 48-key cross-check of the table's BUA column againstlimited/active.yaml(47/48 agreement). Not verified against AR/AZ state manuals, which may independently justifyfalse. - NJ's FY2026 values have no counterpart because its table row is
***Pending.limited.active[NJ]remainstrueand the repo carries2025-10-01values (HCSUA 977, LUA 505, Phone 33, up from FY2025's 878 / 492) while the table's New Jersey row is-in all nine columns. These cannot be corroborated by the FNS table at all and must trace to a non-FNS source. The PR correctly leaves NJ alone, but a "complete table alignment" claim should note it — this is the weakest uncorroborated spot in the tree. A comment recording the actual NJ source would close it. - snapscreener.com is a commercial third-party citation.
standard/by_household_size/amount.yaml:423-424citeshttps://www.snapscreener.com/data; that file's reference list carries no FNS FY2025 table entry at all, so the FY2022–FY2025 AZ/NC/TN/VA size-banded values rest on the commercial compilation alone. The PR helpfully adds "the official FNS tables are authoritative from FY2025 onward", which makes the gap explicit without closing it. (Note this is the same source that produced the ID 313 and LA 258 values discussed above.) Follow-up: add the FNS FY2022–FY2025 tables and demote snapscreener to pre-FY2022 only. - Google Sheets hrefs are not archival sources.
limited/active.yaml:193andlimited/main.yamlcitehttps://docs.google.com/spreadsheets/d/1JWtEF0…(and a second sheet id10otJJ…) as "USDA utility allowances by state spreadsheet (FY2019)" — permission-dependent, editable, non-government-hosted. Replace with the FNS-hosted FY2019 table or a Wayback capture. snap_individual_utility_allowancesums every single-utility standard regardless of which bills the unit pays. The PR body explicitly defers this fix. It is the mechanism behind both the WI double-count exposure (A1) and the LA $76-phone-fallthrough (C2), so the LA deactivation would make an acknowledged-buggy path newly load-bearing for an entire state.snap_utility_allowance_type.py:29grantsSUAto any unit in analways_standardstate viahas_heating_cooling | always_sua, even with no utility expense at all. Out of scope; flagged because the ME/MD/NY analysis runs through that line.
PDF / source audit summary
| Metric | Count |
|---|---|
| Sources targeted | 10 (FNS FY26 workbook; WI 26-30 / 26-22 / 25-13; NY OTDA GIS 25DC059 Att. 1; ME Rule #244; 7 CFR 273.9; FNS FY26 Simplified-Process memo; IDAPA 16.03.04; LAC 67:III) |
| Sources retrieved | 8 of 10 |
| Sources NOT obtainable | 2 — Louisiana DCFS FFY2026 SUA issuance (14 documented routes); Idaho DHW/EPICS FY2026 standards chart |
| Changed value lines audited | 40 (31 replaced @ 2025-10-01, 8 new WI @ 2026-05-01, 1 LA boolean) + 8 MD re-datings |
| Changed lines matching the official FNS FY26 workbook exactly | 40 / 40 (both former "mismatches" rejected — see below) |
| Remaining numeric repo↔table discrepancies anywhere in these files | 0 — the alignment claim is complete on values |
| Values contradicted by a state source | 1 — ME phone (Rule #244 Chart 8: 114) → C1 |
| Structural repo↔source conflicts | 1 — WI water/sewer, one memo allowance encoded twice → A1 |
| Effective-date defects | 1 — LA 2025-10-01 unsupported → C2 |
| Effective dates verified correct | 2 — WI 2026-05-01 (Ops Memo 26-30 #page=2); MD 2026-01-01 (** footnote) |
| Mismatches rejected (investigated and cleared) | 3 — NY_NAS/NY_ONY LUA (row-shift artifact in the federal workbook, repo correct per OTDA, and both values unchanged by this diff); Idaho LUA 313→133 (stored literal in C40, no formula, no column shift, "sums to 133" false, CFR imposes composition not a dollar floor, and the old 313 was a snapscreener.com scrape); fna.usda.gov (agency renamed 2026-06-01, byte-identical files, 403 is an Akamai bot block) |
#page= anchors added by the PR |
1 distinct — dms-ops-2026-30.pdf#page=2, repeated in 8 files. Verified CORRECT independently by two roles (file page == printed "Page 2 of 3"; carries both the value table and the May 1, 2026 effective-date sentence) |
| 600 DPI visual verifications performed | 2 — ME Rule #244 Chart 8 (#page=7–8); WI Ops Memo 26-30 (#page=2). Both confirmed the 5C reading exactly; neither overturned it |
Coverage reconciliation. The regulatory role declared ~17 of the 31 changed value lines UNVERIFIED, on the basis that fns.usda.gov returned 403 and "no archive copy exists". That conclusion is stale evidence, not a live coverage gap: the workbook was retrieved (via web.archive.org/save/ and independently from the FNS origin CDN fns-prod.azureedge.us, two copies byte-identical), and the PDF role swept all 60 repo region keys × 8 columns against it, plus the five by_household_size files, finding zero remaining numeric discrepancies outside the two NY cells — themselves later rejected. Three separate roles then re-read individual cells by address from sheet1.xml.
True verified coverage: 40 of 40 changed value lines confirmed against the official FNS FY2026 workbook (14 of them additionally corroborated by Wisconsin state memos, 9 NY values by the OTDA notice, and 2 of Maine's 3 by Rule #244). The ±$1 corrections (AL 633→637, MO 508→509, SD 947→950, ID 389→390, VA 53→54, NV 76→77, SD phone 61→60) are verified, not unverified. The residual risk is not "unverified values" — it is the effective-date question (C2, and the open Idaho variant in S3) and the one state source that contradicts the federal table (C1).
Validation summary
| Check | Result |
|---|---|
| Hard-coded values in formulas | N/A — confirmed. No .py in the diff; no formula changed |
| Variable naming / duplicates / reinvention | N/A — confirmed. No variables added or renamed; every consumer of utility.single / limited.active is the existing snap_{standard,limited,individual}_utility_allowance trio plus snap_utility_allowance_type |
Aggregation patterns (adds XOR formula) |
PASS. snap_utility_allowance remains a clean adds list with no formula; untouched |
| Period usage & effective dating | PASS. Every FY2026 month resolves to a defined, intended value for all 13 affected regions. No touched line predates 2025-10-01 (removed date keys = {2025-10-01} only; added = {2025-10-01, 2026-01-01, 2026-05-01}). All date keys ascending within their blocks (checked programmatically, 0 violations). MD leaves no gap and no stale carry; WI's mid-year switch is correctly dated and straddled by month-keyed tests. The one dating defect is LA (C2) |
| Boolean toggle date alignment | PASS mechanically. limited/active.yaml:77 flips LA on exactly the date limited/main.yaml:274 carries an LA entry; no backward extrapolation; a 60-region sweep at 2026-01 found no region with active: true pointing at a missing or zero LUA. (The redundancy and uprating concerns are folded into C2; AR/AZ are pre-existing — S6) |
| Reference format | PASS. All 10 files use structured title:/href: lists; 0 malformed entries; 0 changed values without a reference; page anchors correctly in href:, never in title:. 19 reference entries added. Host canonicality → S1; under-citation → A6/A7 |
| Parameter formatting | PASS. unit / period / label / breakdown / reference intact in all 10; no orphaned values inside metadata:; no duplicate top-level keys; no trailing zeros or X.0 integers; underscore convention respected |
| TODO / FIXME / placeholder | CLEAN. Zero hits across the 13 changed files |
| Changelog fragment | Present, correctly named and typed; one nit (leading bullet) → A5; one inaccuracy ("Maine phone standard eliminated") → C1 |
| Entity-level correctness in tests | CLEAN. state_code/county_str under households, expenses and snap_utility_allowance_type at SPMUnit, snap_utility_region_str supplied flat as the sibling tests do. Correctly uses pre_subsidy_electricity_expense — the variable count_distinct_utility_expenses actually reads — unlike the older cases in snap_standard_utility_allowance.yaml |
| Test arithmetic | ALL 18 re-derived by hand and correct. All periods legal (2026, 2026-01, 2025); mid-year months appear only as output keys under a year-level period, the correct and only supported form; absolute_error_margin: 0.01 cannot blur the 6 Enum assertions. NV 5×77+52=437 ✅; SD 5×109+60=605 ✅; WI 474/550 ✅; LA 76 ✅; NC 620×9+636.74×3=7,490.22 ✅ |
| Test coverage adequacy | GAPS → A4 (VA uncovered; 7/8 ID unpinned; NC phone unpinned; MD half-pinned; no LA pre-change case) |
| CI | All 31 checks PASS |
| Branch staleness | BEHIND=0, AHEAD=4 — current, no rebase needed |
Review severity
REQUEST_CHANGES — 2 critical, 7 should-address, 6 suggestions.
The PR's governing insight is regulatorily sound and well executed. Under 7 CFR 273.9(d)(6)(iii)(B) states report amounts "when they are changed", so a compilation whose file was last modified in August 2026 carries mid-year values undated, and a blanket 2025-10-01 stamp is wrong. Wisconsin proves it and the Wisconsin work is exemplary — all 14 values across both effective dates match Ops Memos 25-13 and 26-30 exactly, the 2026-05-01 date is the operative one the memo exists to announce, and the boundary is straddled by month-keyed tests. Maryland's re-dating is verified correct against the workbook's ** footnote, with no gap and no stale carry, and it corrects a real pre-existing error. Forty of forty changed value lines match the official FNS FY2026 workbook, and two of the three headline objections raised against this PR — Idaho and New York — do not survive: the Idaho value the PR adopts is the FNS-published literal, and the value a blocker would have preserved was a snapscreener.com scrape. The New York work is a genuine catch, correctly documenting a row-shift in the federal table against the state's own issuance. So is the Maine SMD-offset diagnosis in direction — the FNS ME row is misaligned; the PR simply resolved it the wrong way.
What blocks merge is narrow and specific. C1 reverses a value against the very rule the PR cites: Rule #244 Chart 8 re-adopts Maine's PhUA at $114 effective 10/1/2025, in red underline, in the same row from which the PR accepts $1,096 and $598 — and the test hard-pins the disputed 0 under a name asserting an elimination that never happened. C2 applies a −$660/household/year Louisiana cut back to October 2025 on the strength of an August-2026 snapshot, contradicted by the PR's own Wisconsin reasoning and by three converging lines pointing to a $258 BUA on 2025-10-01 — while redundantly destroying the 258 that is the best evidence about it. Both are fixable inside this PR without touching its verified core.
Next steps
- C1 — Maine. Set
single/phone.yaml:330ME: 2025-10-01: 114; add the Rule #244 Chart 8 reference (…/SNAP%20244P%20Rule%20Pages%20%28TC%29.pdf#page=8) with an inline comment on the FNS SMD-offset column mix-up; retarget and rename the test atsnap_utility_allowance_fy2026.yaml:264; remove "Maine phone standard eliminated" from the PR body and the changelog fragment. - C2 — Louisiana. Preferred: revert the LA hunk (
active[LA] = true,main[LA] = 258) and open a tracking issue for the LA DCFS FFY2026 issuance, the FNS Southwest Regional Office's approved LA FY26 submission, and a Louisiana Register search on LAC 67:III.1966. If it must land: keepmain[LA] = 258, add an inline caveat that the date is inferred and unconfirmed, and add the adverse (no-phone) test case. - A2 — North Carolina. Revert the three cents values and the two dependent test pins to whole dollars, or add explicit comments on all three lines recording the raw-cell-vs-rendered-vs-legal distinction.
- A1 — Wisconsin. Reword the test comment at
:135so it no longer cites the Ops Memos as authority for106 + 106/112 + 112. Open the follow-up issue for the water/sewage duplication across 18 jurisdictions. - A3–A7 — housekeeping. Correct the PR body's case count to 18; add the VA / ID / NC-phone / MD-LUA / LA-pre-change tests; drop the leading
-from the changelog fragment; promote WI Ops Memo 25-13 to a formal reference; add the FY2026 citation to the two by-household-size files. - S1 — normalise the 11
fna.usda.govhrefs tofns.usda.govand pin the file revision in the reference title. - Follow-up issues (not this PR): water/sewage duplication (18 jurisdictions);
snap_individual_utility_allowancesumming standards for bills the household does not pay; Idaho's LUA==MUA identity and its open effective-date question; MD's January cycle vs October uprating; AR/AZlimited.activevs the published BUA; NJ's uncorroborated FY2026 values; snapscreener and Google Sheets legacy citations. - Re-review after C1 and C2 are addressed. No rebase required — the branch is current (BEHIND=0).
- Maine: restore the $114 phone-only allowance per SNAP Rule #244 Chart 8 (FFY 2026 row, retroactive to 10/1/2025); the FNS FY2026 table misaligns Maine's row, printing the $114 under the SMD Offset column. Add the Rule #244 reference. - Louisiana: revert the LUA discontinuation pending a state source — the 2026-05-21 FNS table is a live snapshot last updated August 2026, LAC 67:III.1966(A) still mandates the BUA, and the FY2025 value times the FNS simplified-process CPI factor gives the $258 restored here. Pin the September-to-October 2025 transition in a test. - North Carolina: round the FY2026 values to whole dollars (637 / 42) per 7 CFR 273.9(d)(6)(iii)(B); the workbook cells store unrounded intermediates that the rendered table displays rounded. - Reword the Wisconsin summed-IUA test comment so it does not cite the state memos for the water/sewage double count, promote WI Ops Memo 25-13 to a formal reference, add the FY2026 table reference to the by-household-size files, pin the table revision in reference titles, add VA / ID / NC-phone / MD-LUA test cases, rename the parameter-pin cases, and rewrite the changelog fragment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…into fix/snap-fy26-sua-official
PR #9344 merged into main, filtering snap_individual_utility_allowance to utilities the household actually incurs. Update the phone-only NV, WI, SD, and ID cases from summed standards to the phone standard alone, and supply a phone expense in the ME and MD parameter-pin cases so the filtered allowance is nonzero. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Validates and corrects every FY2026 SNAP utility allowance against the official FNS FY26 SUA table (2026-05-21 release, effective Oct 1, 2025 – Sep 30, 2026; FNS labels it updated August 2026). The previous FY2026 values were snapscreener estimates.
The FNS file is a live-snapshot revision that silently bundles mid-year state changes and carries at least two row/column misalignments, so state issuances govern where they conflict (see below).
Fixes #9314
What changed
All other regions and household-size tables (AZ, NC 2–5+, TN, VA, GU, HI, AK, plus every remaining flat value) already matched the official table exactly — verified programmatically against the xlsx.
State issuances that override the FNS table
Not changed (by design)
snap_individual_utility_allowancesums every single-utility standard regardless of which bills the household pays (this includes double-counting states whose combined water+sewer allowance fills both grid columns, e.g. WI's single WUA). The IUA test pins assert this current behavior deliberately; the expense-filtering fix lands in a separate PR.Tests
snap_utility_allowance_fy2026.yaml(24 cases): WI SUA/LUA/IUA month-keyed across the April→May 2026 switch, ID LUA/HCSUA/IUA, LA LUA with a September→October 2025 transition pin, AL/MO/SD/NC HCSUA, NV/SD summed-IUA pins, VA and NC phone standards, NY_NAS/NY_ONY LUA pinned to the OTDA values, ME phone $114 (Rule #244), and MD December→January boundary cases plus LUA/phone parameter pins. One existing NC annual pin updated (7,491).🤖 Generated with Claude Code