Repository navigation
Count military retirement in KS, MS, NC, NJ and NY LIHEAP income - #10409
PavelMakarchuk wants to merge 2 commits into
Conversation
The five LIHEAP unearned income lists named neither military retirement input, so a household whose only income was military retirement pay or a Survivor Benefit Plan annuity had $0 of countable income. Each program's rule counts retirement and pension benefits (state plan item 1.9) and its manual counts pensions and annuities with no exclusion for these payments, so add military_retirement_income to each list and test both inputs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Count military retirement in KS, MS, NC, NJ and NY LIHEAP incomePR #10409 (author: PavelMakarchuk), head Path prefixes:
SummaryWhat is right:
There are no critical and no should-address findings. There are four optional suggestions:
Status.
Critical (must fix)None. Should addressNone. SuggestionsG1. Two LIHEAP-type lists outside this PR still name no military retirement input.
G2. KS and MS still don't count
G3. The NJ reading has firmer support than the PR cites.
G4. Tidy the five rulespec-us companion comments.
Verified correctState rules (each counts military retired pay and SBP annuities, with no exclusion):
The PR body's rule table matches these sources, including every page number. I read the NY HEAP Manual (7/1/2021 edition) from the 2026-02-14 Wayback capture, because OTDA's site refuses automated retrieval. Code (at the head, unchanged on the merged tree):
Hand-checked expectations (all 18, period 2026, two one-person households aged 70):
Batch checks:
Axiom line assessment
CI status
Branch status
Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
The rules hold for all five states. Each FY2026 plan's item 1.9 counts retirement and pension benefits, and the KEESM, MS Rule 6.11, NC FNS 300.02, NY D.12 and NJ 2.3.D texts count military retirement (NJ's veterans' exclusion is VA-only). military_retirement_income covers retired pay plus SBP with no double count, all 18 expectations hand-check, the five rulespec issues have matching companion rows, and the guards pass on the merged tree. Four suggestions, including TX CEAP and Riverside, which still name no military input. Full report in the comment above.
Summary
Five LIHEAP unearned income lists name no military retirement input at all, so a 70-year-old whose only income is $24,000 of military retirement pay, or a military Survivor Benefit Plan (SBP) annuity, has $0 of countable income. Each list counts
pension_income, but that adds onlytaxable_pension_incomeandtax_exempt_pension_income; military retirement pay is the separate inputmilitary_retirement_pay, and an SBP annuity ismilitary_retirement_pay_survivors.military_retirement_incomeadds both.This PR adds
military_retirement_incometo the five lists, with a comment that cites each program's rule:ks/dcf/liheap/income/sources/unearned.yamlms/mdhs/liheap/unearned_income_sources.yamlnc/ncdhhs/lieap/unearned_income_sources.yamlnj/dca/liheap/income/sources/unearned.yamlny/otda/heap/income/sources/unearned.yamlThis is item G3 from DTrim99's review of #10317. #10317 switched the lists that named
military_retirement_payand addedtest_military_retirement_readers.py; that guard cannot catch a list that names neither input. The gap predates #10182.survivor_benefitsdoes not includemilitary_retirement_pay_survivors, so nothing is counted twice.Rule check for each list
All five FY2026 state plans check "Retirement / pension benefits" in item 1.9 (PDF page 6). Each manual counts pensions or annuities, and no exclusion covers military retired pay or an SBP annuity.
The NJ row is the one reading a reviewer may want to check: it treats the handbook's veterans' benefits exclusion as limited to VA benefits, as the state plan words it.
Tests
One new case per state, each with two one-person households aged 70: $24,000 military retirement pay and a $9,600 SBP annuity ($800 a month).
ks/dcf/liheap/income/ks_liheap_countable_income.yamlms/mdhs/liheap/ms_liheap_income.yamlnc/ncdhhs/lieap/nc_lieap_income.yamlnj/dca/liheap/income/nj_liheap_countable_income_person.yamlny/otda/heap/income/ny_heap_countable_income.yamlmain(5 failed, 48 passed in the five files).test_military_retirement_readers.pyandtest_source_conflicts.py: 107 passed.test_aggregate_list_integrity.py,test_parameter_yaml_keys.py,test_reference_urls.pyandtest_no_group_variables_in_person_adds.py: 98 passed.Not changed here
survivor_benefits, although KEESM 13360 and MS Rule 6.11 F count non-Social-Security survivor payments. That is a separate input and a separate gap.Axiom
axiom: TheAxiomFoundation/rulespec-us#1469, #1467, #1466, #1481 and #1480 queued
These are the queued
pe-parityissues for KS, MS, NC, NJ and NY LIHEAP; rulespec-us has no module for any of them yet. Each issue now has a note that adds military retirement income to the request, with the verbatim rule text, the output change, these companion cases and areview_findingaddendum: KS, MS, NC, NJ, NY. For NC, rulespec-us already encodes the FNS 300.02 Annuities, Pensions and Retirement Benefits rows (fns-300-sources-of-income/page-3,page-16,page-18).🤖 Generated with Claude Code