Repository navigation
Count military SBP annuities in state benefit income lists - #10317
PavelMakarchuk wants to merge 6 commits into
Conversation
#10182 moved Survivor Benefit Plan annuities into military_retirement_pay_survivors. The benefit-program income lists still listed only military_retirement_pay, so SBP annuities dropped out of countable income. Replace military_retirement_pay with military_retirement_income in 34 state child care, LIHEAP, TANF and SAB lists, fix the OR LIHEAP and MD MEAP comments that #10182 made stale, and add SBP cases for OR LIHEAP, MD MEAP, IN EAP, TX TANF and NY CCAP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
These LIHEAP source lists merged after the first commit and still listed only military_retirement_pay. Switch them to military_retirement_income, update their comments, and add SBP cases for OH HEAP and SD LIEAP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Count military SBP annuities in state benefit income listsPR #10317 (author: PavelMakarchuk), head Path prefixes:
SummaryWhat is right:
There are no critical findings and one should-address item:
There are also six suggestions. The main one is G1, a code-health guard.
Status.
Critical (must fix)None. Should addressS1.
|
DTrim99
left a comment
There was a problem hiding this comment.
The fix is right. All 41 entries in 39 lists (LIHEAP, child care, MO/TX TANF, MO SAB) fit their rules, no benefit list on the merged tree names military_retirement_pay alone any more, and nothing is double counted. One should-address item: 'axiom: needed' is invalid for staff. Please add an SBP companion to the 13 open pe-parity issues, file one issue for the other 26 lists, and mark them queued. Six suggestions; the main one is a #9558-style code-health guard, since nine open LIHEAP PRs add military_retirement_pay-only lists and #10332 would silently revert the HI fix. Full report in the comment above.
Switch the Georgia and Arkansas LIHEAP income lists, which merged in #9968 and #9973, from military_retirement_pay to military_retirement_income. Georgia manual 1200.7 includes annuities and pensions; Arkansas manual Appendix F counts pensions paid to surviving dependents. Add a survivor annuity case to each income test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add a code-health check, modelled on the unemployment compensation readers check, that fails when a parameter list or Python reader outside the tax side names military_retirement_pay without the survivor annuity input. Address the review of #10317: add a Missouri SAB survivor annuity case, record the Minnesota CCAP reading of 256P.06 subd. 3(2)(ix), and update the stale source headers of the PA CCW and WV CCAP tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review (round 2): Count military SBP annuities in state benefit income listsPR #10317 (author: PavelMakarchuk), head
The PR body now has a concrete Summary
Prior findings
New findingsCritical: none. Should address: none. Suggestions: N1. File tracking issues for the two deferred follow-ups. G3 (five LIHEAP lists that count no military retirement) and G5 (PA CCW counting SSDI and SS survivor benefits twice) are recorded only in the PR body's Notes, and a search of policyengine-us finds no issue for either. Once the PR merges, the body is easy to lose. Two short issues would keep them tracked. The New Jersey example from round 1 can seed the first, and the $12,000 survivor-benefit example the second. N2. Stale comments and references that #1870 records are worth a follow-up. This PR did not create them, and it does not need to fix them.
N3. The guard's survivor exemption is file-wide, not per list.
VerifiedThe new switches against the sources:
Hand-checked new or changed expectations:
Counts and housekeeping:
Batch checks:
AxiomValid:
CI15 pass, 3 pending and 0 failed at 22:29 UTC on 2026-10-22. Run 39838247295 (
Branch
0 critical, 0 should and 3 suggestions are open at this head. Let CI finish green before merging. Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: the axiom item is fixed. All 16 issues are open and labelled pe-parity, the 15 existing ones have SBP companion rows, and #1870 covers the other 26 lists. The new code-health guard passes on the merged tree and would catch #10332's HI block and the open LIHEAP PRs. The GA/AR switches match their manuals, and the new cases hand-check. Three small suggestions. CI was still finishing, so please let it go green before merging. Full report in the comment above.
Summary
#10182 moved military Survivor Benefit Plan (SBP) annuities out of
military_retirement_payinto a new input,military_retirement_pay_survivors, and addedmilitary_retirement_incomeas the sum of both. #10182 wired the new input into federal gross income, AGI, SNAP, SSI and state tax subtractions. The state benefit-program income lists still listed onlymilitary_retirement_pay, so an SBP annuity was no longer income for those programs.This PR replaces
military_retirement_paywithmilitary_retirement_incomein every benefit-program income list onmain(43 entries in 41 files). Later commits mergemainand add the LIHEAP lists that merged after the first commit: FL, OH, OK, RI and SD, then GA and AR. It also fixes the comments that #10182 made stale: the Oregon LIHEAP comment saidmilitary_retirement_payincludes survivor payments, and the Maryland MEAP comment said a survivor annuity could count twice throughsurvivor_benefits.Tax-side uses (for example the Missouri MO-A subtraction and the CO, SC, UT and VT military subtractions) are not changed.
A new code-health check,
policyengine_us/tests/code_health/test_military_retirement_readers.py, keeps the lists from drifting back. Modelled ontest_unemployment_compensation_readers.py(#9558), it fails when a parameter list outside the tax side (gov/irs/or anytax/folder) namesmilitary_retirement_paywithoutmilitary_retirement_pay_survivors, or when Python outside the tax side reads the raw input. It reads text only and imports no model.Rule check for each list
I checked each program's own income rule. Every program counts a recurring SBP annuity, and no exclusion covers it.
parameters/gov/states/)al/adeca/liheap/income/sources/unearned.yamlin/ihcda/eap/income/sources.yamlky/dcbs/liheap/unearned_income_sources.yamlmd/dhs/meap/income/sources/unearned.yamlor/ohcs/liheap/income/sources/unearned.yamlmo/dss/ssp/sab/income/sources/unearned.yamlmo/dss/tanf/income/sources/unearned.yamltx/tanf/income/sources/unearned.yamlfl/commerce/liheap/income/sources/unearned.yamloh/odjfs/liheap/income/sources/unearned.yamlok/dhs/liheap/income/sources/unearned.yamlri/dhs/liheap/income/sources/unearned.yamlsd/dss/liheap/income/sources/unearned.yamlga/dfcs/liheap/income/sources/person.yamlar/ee/aeo/liheap/income/sources/unearned.yamlar/ade/oec/sra/income/sources.yamlco/ccap/income/countable_income/sources.yamldc/dhs/ccsp/income/countable_income/sources.yamlde/dss/poc/income/countable_income/sources.yamlfl/doe/sr/income/sources.yamlhi/bessd/ccap/income/countable_income/sources.yamlid/dhw/iccp/income/unearned_sources.yamlks/dcf/ccap/income/countable_income/unearned.yamlky/dcbs/ccap/income/countable_income/sources.yamlma/eec/ccfa/income/countable_income/sources/unearned.yamlmd/msde/ccs/income/countable_income/sources.yamlme/dhhs/ccap/income/countable_income/sources.yamlmi/mdhhs/ccap/income/countable_income/sources.yamlmn/dcyf/ccap/income/countable_income/unearned.yamlmo/dese/ccs/income/countable_income/sources.yamlne/dhhs/child_care_subsidy/income/sources/unearned.yamlnm/ececd/ccap/income/countable_income/sources.yamlnv/dwss/ccdp/income/countable_income/sources.yamlny/ocfs/ccap/income/countable_income/sources.yamloh/dcy/ccap/income/countable_income/sources.yamlor/delc/erdc/income/countable_income/sources.yamlpa/dhs/ccw/income/countable_income/sources.yamlri/dhs/ccap/income/countable_income/sources.yamlvt/dcf/ccfap/income/sources.yamlwa/dcyf/wccc/sources.yamlwv/dhhr/ccap/income/countable_income/sources.yamlTests
New cases show that an SBP annuity in
military_retirement_pay_survivorsnow counts. Each case failed onmainbefore the parameter change.or_liheap_countable_income.yamlCase 8 (Oregon LIHEAP)md_meap_countable_income.yamlCase 7 (Maryland MEAP; the annuity counts once)in_eap_income.yamlCase 11 (Indiana EAP)tx_tanf_gross_unearned_income.yaml(Texas TANF, retiree pay plus SBP)ny_ccap_countable_income.yamlCase 16 (New York CCAP)oh_liheap_countable_income.yamlCase 22 (Ohio HEAP)sd_liheap_countable_income.yamlCase 24 (South Dakota LIEAP)ga_liheap_income.yamlCase 16 (Georgia LIHEAP)ar_liheap_countable_income.yamlCase 34 (Arkansas LIHEAP)mo_sab_countable_income.yamlCase 39 (Missouri SAB; mirrors Case 33 with an SBP annuity: $1,000 + $500 = $1,500)The code-health check pins the other lists statically. It passes on this head and fails on a list that is switched back.
Local run (macOS,
policyengine-core test, one process per group of up to four program directories): all 4,144 YAML tests in the 34 program test directories of the first commit pass. After the merge, the tests in the five new LIHEAP directories and in IN EAP and MD MEAP (which the merge also changed) pass: 482 tests pass (302 in FL, OH, OK and RI LIHEAP; 180 in SD LIEAP, IN EAP and MD MEAP). After the merge of GA #9968 and AR #9973, all 156 tests in the GA and AR LIHEAP directories pass, andtest_programs_registry.py,test_aggregate_list_integrity.pyandcode_health/test_source_conflicts.pypass (881 passed, 10 skipped). Without the GA and AR list change, the two new cases fail. After the review changes: 538 YAML tests pass in the MO SSP, PA CCW, WV CCAP and MN CCAP directories (the new MO SAB case fails without the list change), and the code-health and list checks pass (889 passed, 10 skipped), as dotest_rest_python_groups.pyandtest_selective_test_batches.py(41 passed).make formatmakes no changes.No files under
policyengine_us/tests/policy/baseline/partners/change.Notes
fl/doe/sr/income/sources.yaml(tip income). The two edits touch different lines.military_retirement_pay: PA LIHEAP Add Pennsylvania LIHEAP regular heating assistance #9971, AK Add Alaska LIHEAP regular heating assistance #10341, ND Add North Dakota LIHEAP regular heating assistance #10342, NH Add New Hampshire LIHEAP regular heating assistance #10343, UT Add Utah LIHEAP regular heating assistance #10344, WA Add Washington LIHEAP regular heating assistance #10345 and WY Add Wyoming LIHEAP regular heating assistance #10346. Fix four statute-first benefit bugs: MO TANF rounding, SNAP GU/VI limits, HI CCAP TANF income, SSI food ISM date #10332 adds a 2021-08-06 block tohi/bessd/ccap/income/countable_income/sources.yamlthat listsmilitary_retirement_pay; it merges without a textual conflict and would undo the Hawaii fix from that date, so the check fails on it until that block listsmilitary_retirement_income. IA Add Iowa LIHEAP regular heating assistance #10292, AZ Add Arizona LIHEAP Standard benefit #10293 and VA Add Virginia EAP Fuel Assistance (LIHEAP regular heating) #10303 already usemilitary_retirement_income.social_securitytogether withsocial_security_disabilityandsocial_security_survivors, which counts those two benefits twice; that is outside this PR's scope and is a follow-up.axiom: TheAxiomFoundation/rulespec-us#1532, #1533, #1534, #1535, #1537, #1538, #1539, #1540, #1465, #1468, #1479, #1482, #1757, #1737, #1736 and #1870 queued
Each of the 15 existing pe-parity issues has an SBP companion note (input change, verbatim pension, annuity or survivor text, and a companion test from the same source). rulespec-us#1870 is a new dispatch-ready pe-parity issue for the other 26 lists (MO TANF, TX TANF, MO SAB and 23 child care programs). The signed encoder is blocked: several sources need ingest or are not in the pinned signed release, and each billed run needs separate approval.
🤖 Generated with Claude Code