Repository navigation
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9745 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 4 8 +4
Lines 76 137 +61
Branches 2 2
=========================================
+ Hits 76 137 +61
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Floor the income band before the grid lookup so units outside New Jersey index a valid key in mixed-state simulations, and add a two-state case. Name the Medicare premium variables that are not wired in. Place New Jersey between IL and TX in programs.yaml and shorten the note. Give the integration cases realistic bills and real income inputs, add income-ineligible and multi-member scenarios, and bring the test files to the shared conventions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Handbook 2.3.D counts pensions and annuities, which covers survivor pensions and annuities. 2.3.E.10 excludes veterans' benefits, but VA survivor payments cannot be separated from survivor_benefits, so the whole amount counts; the parameter comment records this. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Write parameter date keys unquoted, wrap each variable's documentation string across lines, and split the household-size sweeps between files so each size is asserted once: odd sizes in the income-limit test, even sizes in the benefit-grid tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
PR Review: New Jersey LIHEAP regular heating assistancePR #9745: Add New Jersey LIHEAP regular heating assistance (author: hua7450, head Scope: New Jersey's LIHEAP regular heating benefit (DCA Home Energy Assistance), FY2026 only. The PR covers residency and household size, countable income, the 60% SMI monthly limit, the eligibility exclusions, and the benefit grid: 4 panels (Deliverables, Electric, Gas, Renters) × 2 county regions × 4 income bands × 4 size groups. Crisis, cooling, furnace repair, USF, Medicare Part B netting, the SSI Lifeline deduction, strikers and institutions are out of scope. The PR changes 30 files: 15 parameters, 8 variables, 6 test files (27 cases), Overall: the FY2026 values are right. All 128 distinct grid cells match the FY2026 Benefit Matrix, and so do the band thresholds, the two regions, the 12 published income limits and the $241 step. The income lists are self-contained, so there is no SNAP-list reuse and no #9672 exposure. One problem is critical:
The seven should-address items cover:
Every critical and should finding was re-verified against the cited code and source pages. The numeric examples were reproduced by running the head code. None was dropped or downgraded. Three corrections came out of verification:
Duplicates from the regulatory and code passes are merged. The code pass's untested branches and limit-coverage claim, and the regulatory pass's test gaps, are now S5. Both passes' anchor findings are S7; the regulatory pass rated its anchors as suggestions, and they move up to match #9743 S6. One new suggestion was added (G1: SOLAR and OTHER). Path prefixes used below:
Line numbers refer to head Source Documents
Critical (Must Fix)C1. Subsidized tenants who pay their own heating bill get the fuel panel, but N.J.A.C. 5:49-2.2(d)1.i gives them the renter level
Should AddressS1. Social Security is counted gross, but the handbook and the plan count it net of the Medicare Part B premium
S2. A rental or farm-rent loss offsets wages, Social Security and other income
S3. The 60% SMI limit is carried back into periods 2021 and earlier, when New Jersey used a poverty-level test
S4. Period 2027 pairs FY2027 limits with FY2026 tables, but the FY2027 tables are published and differ in two places
S5. Tests cover less than the PR claims, and four branches have no test that would fail if they broke
S6. Parameter descriptions fall outside the house patternThe house pattern uses one of the template verbs and ends with "under the Low Income Home Energy Assistance Program." Merged KS LIHEAP uses provides/sets/uses (for example,
Consistency: #9744 S5 rated the same pattern SHOULD in this batch. S7. Three handbook anchors open a page without the cited rule, and one is partialEvery anchor is a single valid
Consistency: #9743 S6 rated four wrong anchors SHOULD. Fix: retarget the three anchors, using a tuple of single-page hrefs where a variable needs more than one page (p12 and p18 for SuggestionsG1. SOLAR and OTHER direct payers are eligible but get $0; point the UNSPECIFIED $0 at #9754
G2. Unknown county
G3. Documentation accuracy
G4. Reference titles and variable comments (checklist #6)
G5. PR body
G6. Digit separators and key style
G7. Test hygiene
G8. Optional
|
DTrim99
left a comment
There was a problem hiding this comment.
Requesting changes per the review comment above: 1 critical (subsidized tenants who pay their own heating bill get the fuel panel; N.J.A.C. 5:49-2.2(d)1.i gives them the renter level) and 7 should-address items (Social Security counted gross of Part B, rental/farm-rent losses offsetting wages, 60% SMI carried back before FY2022, 2027 paired with FY2026 tables despite published FY2027 tables, test coverage below the PR body's claims, parameter descriptions, wrong handbook anchors). All 128 FY2026 grid cells, bands, regions and income limits match the sources.
- Pay the renter level to rent-subsidy and public-housing households that pay their own heating bill (N.J.A.C. 5:49-2.2(d)1.i). - Count Social Security net of the Medicare Part B premium; floor every unearned source. - Derive the additional-member increment from the size-12 and size-11 limits; add the FY2027 handbook, matrix, fact sheet and plan; verified_years "2026-2027"; document the FY2027 474 renters cell. - Read the electric panel for solar heat. - Add cases for subsidized direct payers, the FY2027 limits and amounts, size-group edges, heat in rent over gas, age 18, the student arms and the Atlantic County default. - Re-template descriptions, unquote keys, add separators and retarget the reference anchors. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts: # policyengine_us/programs.yaml
PR Review (round 2): New Jersey LIHEAP regular heating assistancePR #9745: Add New Jersey LIHEAP regular heating assistance (author: hua7450, head Round 1 reviewed head Overall: the substantive round-1 findings are fixed, and the new FY2027 limits check out against the sources.
One new critical finding comes out of the fix:
Two should-address items stay open:
There is also one new suggestion (N1). Three round-1 suggestions remain open: G4 and G9 are partially addressed, and G8 is optional. Path prefixes used below:
Line numbers refer to head Source Documents
Round-1 findings
Critical (Must Fix)C2 (new, from round-1 S4). Period 2027 is now claimed, but the one FY2027 cell that differs from FY2026 is pinned at the FY2026 value
Should AddressS3 (round 1, still open). Periods 2021 and earlier still apply 60% SMI, and the documentation calls values that are known to differ "unverified"
S7 (round 1, partially addressed). The new FY2027 anchor in
|
| Check | Result |
|---|---|
| FY2027 grid (matrix) |
|
| Income limits |
|
| Period logic |
|
| Reproductions (head code) |
|
| New test expectations (hand-checked) |
|
| Local run |
|
| New anchors |
|
| Code |
|
Merge of main |
|
| Main's guards |
|
CI status
gh pr checks 9745 on head f4d535357b (2026-10-06, 22:03 UTC) shows 5 passed, 30 pending and 0 failed.
- Passed: changelog fragment, committed registry lock, release lock guard, bundle metadata contract, and py3.12 smoke import.
- Pending: the Full Suite shards have not finished.
Locally, all 39 NJ LIHEAP cases and the reference-URL and registry guards pass (see above). Round 1's head passed 37/37.
Branch status
- 13 commits ahead of
mainand 0 behind. The merge base is main's tip,9eab717e56. - GitHub reports
MERGEABLE, with merge stateBLOCKED(changes requested, CI pending).
Axiom line
axiom: TheAxiomFoundation/rulespec-us#1481 queued. The line is still in the PR body, and the form is valid.
- The issue was refreshed at 21:38 UTC today. It is open and labelled
pe-parity. It now:- pins head
f4d535357b; - scopes FY2026-FY2027 and adds the FY2027 sources and limits;
- updates test 15 to 11,400 and interpretation (3) to the renter level;
- adds companion tests 18-27 (subsidized direct payers, heat in rent over gas, size edges, county default, rental loss, age 18, every source, Part B);
- records the pre-FY2022 decision.
- pins head
- Two stale points remain:
- Companion test 6 still describes grid sizes 1, 5, 9 and 13. The PR has used 2, 6, 10 and 14 since
924519344a. The cells are the same, but the inputs differ. This was carried over from round 1. - Companion test 23 expects $471 for the $3,000-a-month row, although the FY2027 grid prints 474. This contradicts two statements in the issue itself: that "None is taken from policyengine-us output", and its advice that "an Axiom encoding should key all six printed rows". Update it together with C2.
- Companion test 6 still describes grid sizes 1, 5, 9 and 13. The PR has used 2, 6, 10 and 14 since
- This stays a suggestion, consistent with round 1.
Next Steps
- C2: store the FY2027 474 cell (split band 1 at $2,001) or narrow the claim to 2026. Update Case 18, the PR body and rulespec-us#1481 test 23.
- S3: gate the program to FY2022 onward, citing BPU, and date
smi_ratefrom2021-10-01. Add a period-2021 case. - S7: change the HB27 anchor in
nj_liheap_countable_incometo#page=9. - Optional: N1 (FY2027 plan 1.9 conflict row), G4, G8, and rulespec-us#1481 test 6. Re-request review once CI is green.
1 critical finding (new: C2) and 2 should-address findings (S3, S7, both partially addressed) are open, plus 1 new suggestion (N1) and 3 open round-1 suggestions (G4, G8, G9).
Verdict: REQUEST_CHANGES
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: C1 (subsidized direct payers now get the renter level), S1, S2, S5 and S6 are addressed and verified. Still open: a new critical C2 — the PR now claims 2027, but the FY2027 matrix prints 474 for Renters / Warren & Sussex / 13+ / $2,001-$6,439 and the PR keeps 471 (split band 1 at $2,001 and store 474, or narrow the claim to 2026); S3 — 60% SMI is still applied before FY2022 (documented but not gated or encoded); S7 — the new handbook anchor in nj_liheap_countable_income.py should be #page=9. CI on the new head was still running at review time.
- Store the FY2027 Warren and Sussex renters cell (474) by giving the $2,001 to $6,439 income row its own band. - Gate the program to FY2022 onward with eligibility/in_effect and date smi_rate from 2021-10-01. - Point the FY2027 handbook anchor in nj_liheap_countable_income at page 9. - Note the FY2027 plan 1.9 conflict on strike pay, general assistance and TANF. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Thanks for round 2. Fixes pushed in ee00db7.
|
PR Review (round 3): New Jersey LIHEAP regular heating assistancePR #9745: Add New Jersey LIHEAP regular heating assistance (author: hua7450, head Round 2 reviewed head Overall: every critical and should-address item is fixed.
There is one new suggestion (N2): the new $2,001 band edge has no test that can catch a wrong value. There are no new critical or should-address findings. Path prefixes used below:
Line numbers refer to head Source Documents
Round-2 findings
Critical (Must Fix)None. Should AddressNone. SuggestionsN2 (new, from the C2 fix). Pin the new $2,001 band edge, and optionally the new band-2 cells
G4, G8 (round 1, still open)
Verified correct
CI statusRound-2 head
Current head Locally, all 41 NJ LIHEAP cases and the reference-URL, AST and registry guards pass (see above). Branch status
Axiom line
Next Steps
0 critical and 0 should-address findings are open. C2, S3, S7, N1 and G9 are addressed, G4 is deferred and G8 is declined. There is 1 new suggestion (N2). This approval assumes the CI re-run on Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Round 3: C2, S3 and S7 are all addressed and verified. Band 1 now splits at $2,001 and the FY2027 cell stores 474 (all 160 FY2026/FY2027 cells match the matrices), 60% SMI is gated to start in FY2022 per the BPU 10/19/2021 notice, and the 2.3.F anchor opens on its text. The round-2 contrib-hhs failure was a runner shutdown (exit 143) in a shard with no NJ tests. One optional suggestion: pin the $2,000/$2,001 band edge. The CI re-run on ee00db7 was still queued at review time, so please confirm it is green before merging.
# Conflicts: # policyengine_us/programs.yaml
Adds New Jersey's regular LIHEAP heating benefit for FY2026 and FY2027 using the county, fuel, income and household-size grid. A qualifying one-person Sussex County household with $12,000 annual countable income receives the published $961 deliverable-fuel payment.
Fixes #9937.
Implementation
eligibility/in_effect), because the BPU figure does not reproduce the "200% FPL" it names and no earlier standard can be encoded from it.ordinary_dividend_income; the annualtanfaggregate counts WFNJ receipt once and applies take-up. Survivor benefits count as pensions and annuities under 2.3.D; VA survivor payments insidesurvivor_benefitscannot be separated from them and are counted despite 2.3.E.10.heating_expenseassigns them. No bill cap or regular-heating asset test applies.verified_years: "2026-2027"; earlier estimates remain unverified.Source conflicts and remaining coverage
The official notice readopted Chapter 5:49 without change effective September 22, 2025, through September 22, 2032, and does not reconcile the differences above. Follow-up research found no amendment or agency clarification settling them; the codified comparison was retrieved through Cornell LII, not a separately verified current Lexis edition. The model's source choices remain provisional.
Medicare Part D premiums are not deducted (no variable). Other limitations include the four-week income window, detailed utility-allowance coverage, striker/institutional exclusions, landlord fuel billing and some income sources; the SSI variable carries no Tenants Lifeline supplement, so that deduction has nothing to remove. Other and unspecified direct fuels return zero as a coverage gap (#9754). Cooling, crisis, equipment and separate utility programs are excluded.
Microsimulation: the datasets carry no heating inputs, so population totals are $0 until the default heating type changes. That change affects API partners and is tracked separately in #9754; callers must send
heating_typewith the matching fuel bill.Validation
41 program YAML cases cover every distinct matrix combination, the size-group edges at 8, 9, 12 and 13, all fourteen FY2026 and FY2027 limits, rounding, the subsidized and public-housing renter level, heat in rent over a known fuel, the Medicare deduction, a rental loss, age 18, each arm of the students-only denial, every listed unearned source, the county default, mixed-status income, farm rental income over the limit, TANF take-up, the FY2027 renters cell in both years and the FY2022 start of the modeled rules. Every program case specifies
heating_type. A simulation that mixes an eligible New Jersey household with households in other states is covered by a two-state case.Official sources
axiom: TheAxiomFoundation/rulespec-us#1481 queued