Skip to content

Add Nevada Energy Assistance Program Fixed Annual Credit - #10432

Open
hua7450 wants to merge 2 commits into
mainfrom
nv-liheap-wave1d
Open

hua7450 wants to merge 2 commits into
mainfrom
nv-liheap-wave1d

Conversation

@hua7450

@hua7450 hua7450 commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Adds Nevada LIHEAP for state fiscal years 2026 and 2027 (July to June). Nevada's Energy Assistance Program, run by the Division of Social Services (DSS), pays one Fixed Annual Credit (FAC) per year toward the household's primary heating and electric costs. The model counts citizens and qualified noncitizens outside the manual's five-year bar in household size (others' income still counts) and tests eligibility income against 150% of the poverty guideline. The FAC is the household's annual energy cost minus the statewide median energy burden times its FAC income (1.81% in SFY2026, 1.48% in SFY2027), at least $360 and at most the capped benefit for its household size, income band and fuel, plus $100 for targeted households. Benefits range from $360 to $3,136.

Fixes #10422

Regulatory authority

Eligibility

Requirement Source How modeled
Nevada residence Manual 500 defined_for = StateCode.NV
At least one citizen or qualified noncitizen outside the five-year bar Manual 302 A, 302 C, 502 A.I, 700 note nv_liheap_household_size sums nv_liheap_immigration_eligible. A qualified noncitizen (is_citizen_or_legal_immigrant) who entered after August 22, 1996 is barred for five years after entry (years_since_us_entry) unless the person is under 18 (302 C I); a refugee, asylee, Cuban or Haitian entrant, or noncitizen whose deportation is withheld (VI); a veteran or active-duty member, or that person's spouse or unmarried dependent child (VII, is_snap_alien_military_connected); or a lawful permanent resident with 40 qualifying quarters (VIII, snap_alien_qualifying_quarters). Barred and other excluded members' income counts in full (502 A.I); size 0 is ineligible
Income at or below 150% of the poverty guideline NRS 702.260(3); Manual 701, Appendix A; plans 2.1 Annual guideline x 1.5, unrounded as printed (2025 guideline in SFY2026, 2026 in SFY2027)
Responsibility for energy costs Manual 500, 803 V.3 A primary heating bill (has_heating_expense) or heat in the rent; NONE ineligible, UNSPECIFIED only with heat in rent
Subsidized or public housing with utilities in the rent Manual 501 I, 503 Eligible only with an energy burden, a separately billed heating or electricity cost

No categorical eligibility and no asset test (plans 1.4, 2.2).

Income

Nevada uses two income measures (Manual 702, 705-706).

Item Source Eligibility FAC
Wages and net self-employment, each floored at zero 703 A, 705 Yes Yes
Earnings of a member under 18 in school (is_in_k12_school) 705, 707 N No Yes
Social Security net of medicare_part_b_premium; SSI and Nevada's SSA-paid state supplement (nv_oss) 703 B.I, 705-706 Yes Yes
Pensions, military retirement, retirement withdrawals, railroad, survivor, disability, unemployment, workers' compensation, veterans, child support, alimony, interest, dividends, rental, contributions (financial_assistance), general assistance, strike benefits, trust income, gambling winnings, capital gains 705 Yes Yes
TANF (take-up gated tanf) 705 No Yes
EITC, SNAP, tax refunds, Medicare premiums, public housing assistance 706 No No

Benefit

  • Energy cost = primary heating bill + electricity bill, counting electricity once when heat is electric or solar (Manual 803 III-IV; NRS 702.260(7)(a)).
  • FAC = energy cost - median burden x FAC income: 1.81% in SFY2026, 1.48% in SFY2027 (803 II, V; Appendix A).
  • A FAC below $360, including a negative one and heat in the rent with no bill, pays $360 (803 V.1-3; plans 2.5-2.6). The SFY2026 manual's sections 504 A and 702 III print $240; section 803 V, both plans and the SFY2027 manual use $360, which is applied.
  • Cap (Appendix A): by household size (8 and over share the last row) and FAC income as a share of the guideline (up to 75%, over 75% to 100%, over 100% to 125%, over 125%; each band includes its top). Propane, fuel oil and kerosene heat use the propane and oil table (each cell $200 higher). Targeted households (a counted member 60 or older, disabled, or under six) add $100 (505; glossary). The glossary defines disabled by benefit receipt, as 7 CFR 271.2 does for SNAP, so the model uses is_usda_disabled (SSI, Social Security disability, the veterans' categories) or is_disabled, which stands in for disability retirement, railroad, interim assistance and employer disability benefits: those count only for a disability that is permanent under Social Security standards, which disability_benefits, railroad_benefits and workers_compensation cannot show.
  • Bands use the guideline rates: Appendix A's printed 125% figures for sizes 4-8 do not equal 125% of the guideline (size 5: $53,937.50 against $47,062.50).
Size 75% or less Over 75-100% Over 100-125% Over 125%
1 $2,000 $1,600 $1,280 $1,152
4 $2,333 $1,866 $1,493 $1,344
8+ $2,836 $2,269 $1,815 $1,633

Not modeled

Item Source Treatment
Prior 12 months of vendor usage; 30-day income annualization 803 III-IV; 804 Annual bills and income stand in
Medicare Part D premium deduction 703 B.I No input; only Part B is deducted
Social Security and VA cost-of-living increases during the program year 705 Not excluded
Section 42-only housing, roomers and boarders, master meters, solar vendor credits, new residences' median usage 501 I, 502 A.IV, 504, 505 A No inputs
SSN noncompliance, program violations, students living away, joint custody 502 A No inputs
Five-year bar exemptions without an input: people lawfully residing in the U.S. and 65 or older on August 22, 1996; tribal members and American Indians born in Canada; Hmong and Highland Laotians; Amerasians; trafficking victims 302 C II-VI Treated as barred within five years of entry. The 1996 residents already have more than five years since entry, so years_since_us_entry places them past the bar
PRUCOL noncitizens, COFA citizens, battered noncitizens 302 A No immigration_status value; not identified
Lump sums, inheritance, insurance, FEMA DUA, utility reimbursements, educational assistance; FAC-only reverse mortgage, AARP/Title V, SLA, vendor payments, savings or credit draws 705 No existing inputs
Children too young for school with earnings 707 N Assumed to have none
Fast Track crisis, arrearage, weatherization, federal shutdown households Manual; NRS 702.260(4)-(5) Out of scope

Earlier years are unverified estimates through parameter backfilling. Model period 2026 is SFY2026 and 2027 is SFY2027.

Microsimulation: heating_type and the per-fuel bills are not in current datasets; callers must supply them.

Test plan

56 YAML cases in 7 files. The cases were not re-run locally after the 2026-10-22 review fixes; CI runs them.

  • limits for sizes 1 and 9 in both years, an undocumented member and an all-undocumented household;

  • the five-year bar: each immigration status two years after entry, the five-year edge, the age-18 edge, 40 quarters for a permanent resident but not a parolee, a veteran, a barred single resident ($0), a barred parent with a citizen child (size 1, over the limit) and an exempt refugee ($1,280);

  • eligibility income: a 17-year-old student's wages excluded and a non-student's counted, an 18-year-old, Social Security net of Part B, SSI, TANF excluded, capital gains, gambling, child support, retirement withdrawals, a self-employment loss, an undocumented member's income; FAC income adding the student's wages and TANF;

  • energy cost for gas, electric and solar heat; eligibility at the exact limit, fuel and heat-in-rent cases, subsidized and public housing with and without an energy burden;

  • the FAC between the minimum and the cap, the $360 minimum, the propane, fuel oil and kerosene caps, the 75% and 125% band edges, zero income, FAC income above 150%, size 9, each targeted group and its age edges, a blind SSI recipient without the disability flag (countable income of $13,239.60 with nv_oss), the $3,136 maximum, and SFY2027 at 1.48%.

  • YAML tests with expected values from the statute, manuals and plans

  • ruff format

  • Changelog fragment in changelog.d/

  • CI passes

axiom: TheAxiomFoundation/rulespec-us#1893 queued

🤖 Generated with Claude Code

hua7450 and others added 2 commits October 23, 2026 18:11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	policyengine_us/programs.yaml
@codecov

codecov Bot commented Oct 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (909176a) to head (4c554d9).
⚠️ Report is 631 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main    #10432    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            4        10     +6     
  Lines           76       186   +110     
  Branches         2         2            
==========================================
+ Hits            76       186   +110     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@DTrim99

DTrim99 commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Add Nevada Energy Assistance Program Fixed Annual Credit

PR #10432 (author: hua7450), head 4c554d9268. This is a first review. The PR adds Nevada's Energy Assistance Program (EAP), the state's LIHEAP regular benefit run by the Division of Social Services, for state fiscal years 2026 and 2027 (July to June; model years 2026 and 2027). It includes:

  • 18 parameter files and 10 variables (no new inputs);
  • 7 test files (56 cases);
  • a programs.yaml entry (coverage line and state list);
  • a changelog fragment.

The PR has no reviews and no comments apart from Codecov. It touches no partner test file.

Path prefixes:

  • P/ = policyengine_us/parameters/gov/states/nv/dwss/liheap/
  • V/ = policyengine_us/variables/gov/states/nv/dwss/liheap/
  • T/ = policyengine_us/tests/policy/baseline/gov/states/nv/dwss/liheap/

Sources read for this review:

Summary

What is right. The values, the formula and nearly all the rules are encoded correctly:

  • Tables. Every one of the 64 cap cells (standard and propane-and-oil tables, 8 sizes by 4 bands) matches Appendix A in both manuals; the tables did not change between years. The burden rates (1.81% and 1.48%), the 150% limit, the $100 targeted supplement and the plans' $360 minimum and $3,136 maximum all match.
  • Income limit. 1.5 times the guideline of the year before the model year reproduces both Appendix A income tables exactly ($23,475 to $81,225 in SFY2026, $23,940 to $83,580 in SFY2027). The PR correctly computes the cap bands from the rates, not from SFY2026's misprinted 125% column for sizes 4-8.
  • FAC. Energy cost minus the median burden times FAC income, at least $360 and at most the capped amount plus the targeted supplement, follows 803 II-VI and NRS 702.260(7)(a).
  • Income. The two income measures follow 702 and 705-706:
    • TANF and school children's earnings count for the FAC only.
    • Social Security is counted net of the Part B premium, with a per-person floor. 703 B.I allows only Medicare premiums "from a Social Security check", so leaving out Part A and railroad annuities is right here.
    • SSI and Nevada's supplement (nv_oss, item 17) are counted, as are railroad benefits and military_retirement_income.
    • Every source is floored at zero.
  • Household and eligibility. Five-year bar members are excluded from household size but their income still counts (302 C, 502 A.I). Heat in unsubsidized rent pays $360 even with UNSPECIFIED fuel (803 V.3). Subsidized and public-housing tenants with utilities in the rent need an energy burden (501 I, 503). The targeted test covers counted members who are 60 or older, under six or disabled under the glossary's benefit-receipt definition.
  • Tests and CI. I hand-checked 14 expectations below, and CI passed all 56 cases.
  • Guards. Integrate modeled state unemployment insurance into income flows #9558, Count military SBP annuities in state benefit income lists #10317, the Count each Social Security benefit once in Pennsylvania CCW countable income #10408 pattern and the Tie source-conflict markers to the register shared with Axiom #10287 ratchet all pass on the merged tree. The NH Add New Hampshire state supplementation for 2026 #10156 key pattern is safe.

There are no critical findings and two should-address items:

  • S1. Untested sources. 21 of the 28 income-source entries never take a positive value in any test, and the unearned per-source floor is never exercised.
  • S2. Service fees. The FAC energy cost includes the vendors' service fees, which 507 excludes and Appendix A deducts vendor by vendor. A Southwest Gas household gets a FAC $129.60 too high. Neither the PR nor the code mentions this.

There are also six suggestions:

  • G1: record the SFY2026 $240-versus-$360 minimum and the misprinted 125% column as backlog candidates.
  • G2: military pay (the Iowa sibling lists military_basic_pay).
  • G3: educational_assistance exists on main, contrary to the "no inputs" comment.
  • G4: document 707 K's gross self-employment rule and 707 M's UIB earnings rule.
  • G5: add a mixed-state case.
  • G6: backfilled pre-SFY2026 years.

Status.

  • CI: 29 pass and 3 skipping (superseded runs).
  • Branch: 2 commits ahead of main and 59 behind. The only conflict is the programs.yaml coverage line (branch note).

Critical (must fix)

None.

Should address

S1. 21 of the 28 income-source entries, and the unearned per-source floor, have no test that would fail if they were dropped

  • Where: P/income/sources/earned.yaml:11-15 (5 entries), P/income/sources/unearned.yaml:4-35 (23 entries), and the floors at V/income/nv_liheap_earned_income.py:29 and V/income/nv_liheap_countable_income.py:38.
  • Untested entries. No case gives these a positive value:
    • Earned (4 of 5): self_employment_income appears only as −$3,000 in T/income/nv_liheap_countable_income.yaml Case 6, which floors to 0, the same result as dropping the entry. sstb_self_employment_income, farm_operations_income and partnership_s_corp_income never appear.
    • Unearned (17 of 23):
      • pension_income, military_retirement_income, railroad_benefits, survivor_benefits, disability_benefits, veterans_benefits and workers_compensation;
      • total_unemployment_compensation, general_assistance and strike_benefits;
      • alimony_income, interest_income, ordinary_dividend_income, estate_income and financial_assistance;
      • rental_income and farm_rent_income.
  • Tested entries: wages, ssi, nv_oss (T/nv_liheap.yaml Case 22), retirement_distributions (through taxable_ira_distributions), child_support_received, gambling_winnings and capital_gains (through long_term_capital_gains), plus Social Security and tanf outside the lists.
  • The floors.
    • Earned. The earned floor is pinned: countable Case 6 expects 18,720, not 15,720.
    • Unearned. The unearned floor is not. No case has a negative unearned source, such as a rental, farm-rent, estate or capital loss, so removing that max_ fails nothing. That floor is what keeps a rental loss from offsetting wages (the wave's rental-loss item).
  • Severity: should, as in Add Maine HEAP Fuel Assistance #10437 S4, Add Vermont Seasonal Fuel Assistance #10436 S2, Add Louisiana LIHEAP regular heating assistance #10429 S1 and Add New Mexico LIHEAP regular heating assistance #10431 S3 (the mutation rule).
  • Fix:
    • Every source. Add one countable-income case that gives every listed source a distinct positive amount. Enter unemployment_compensation (so total_unemployment_compensation is exercised) and military_retirement_pay_survivors (so the SBP half of military_retirement_income is pinned).
    • Rental loss. Add a case with wages and a rental loss that expects the wages alone.
    • Self-employment. Give self_employment_income a positive profit somewhere.
    • Axiom. Add the new cases to the rulespec-us#1893 companion tests.

S2. The FAC energy cost includes service fees, which the manual excludes, so the benefit is overstated for households below the cap

  • Where: V/nv_liheap_energy_cost.py:22-33 adds heating_expense and pre_subsidy_electricity_expense, the household's bills. The comment says "Annual bills stand in for the prior 12 months of vendor energy dollar usage". The body's Benefit section and its Not-modeled table, the nv_liheap documentation and the Axiom issue's energy-cost row describe the same bill-based cost. None of them mentions fees.
  • The rule.
    • Section 507 (SFY2026 p. 37): "Prior to approval, the household's energy burden (cost for energy excluding any service fees) for a twelve-month period, and energy usage ... for each energy vendor must be verified and documented". The SFY2027 manual repeats it.
    • Appendix A, page 3 (SFY2026 p. 112; SFY2027 p. 112): "VENDOR DEDUCTION AMOUNTS — Use deductions below unless vendor provides usage only".
      • The amounts include Southwest Gas residential at $129.60 a year ($10.80 a month) in both years, Valley Electric at $420 (SFY2026) and $480 (SFY2027), and Mt Wheeler Power at $258 and $456.
      • For vendors that provide usage only, the same page prints per-unit charges (Nevada Power $0.15049 per kWh, single-family, SFY2026).
    • Section 803 III-V enters "energy dollar usage" and subtracts the expected payment from it. That is the cost net of fees.
  • Effect (hand trace of the head). Take T/nv_liheap.yaml Case 1: a family of three, SFY2026, wages $24,960, a Southwest Gas residential bill of $600 and electricity of $1,440.
    • Head: 600 + 1,440 − 0.0181 × 24,960 = 2,040 − 451.776 = $1,588.22, under the 1,773 cap.
    • Manual: (600 − 129.60) + 1,440 − 451.776 = $1,458.62. The head is $129.60 too high.
    • Larger fees. A Valley Electric customer is overstated by $420 in SFY2026 and $480 in SFY2027.
    • No effect at the $360 minimum or when the cap binds.
  • Why it matters. Most FAC computations in both claimed years are affected, and the overstatement is systematic. The PR documents its other input stand-ins (prior-12-months usage, 30-day annualization), but not this one.
  • Severity: should. This is an undocumented departure from 507 and Appendix A in both claimed years.
  • Fix: I recommend (a).
    • (a) Document it in the nv_liheap_energy_cost documentation and comment, the body's Benefit section and Not-modeled table, and the Axiom issue's energy-cost row: the energy cost is meant to exclude service fees, so bills should be entered net of fixed charges, or the FAC is overstated by up to the vendor deduction amount.
    • (b) Model it. Optionally add a fee input, or a vendor input with a parameter for the Appendix A amounts, and subtract it with a floor at zero. Add a test like the example above.

Suggestions

G1. Record the two source conflicts the PR resolves.

  • The minimum.
    • $240: the SFY2026 manual prints it in 504 A (p. 34), 505 D, F and G (pp. 36-37) and 702 III (p. 43).
    • $360: 803 V (pp. 60-61), FFY2026 plan items 2.5-2.6 (p. 9) and the whole SFY2027 manual.
    • The head: P/payment/minimum.yaml:2-4 uses $360, which I agree with: 803 V is the operative computation, and both plans and the next manual use $360. The comment cites only 504 A and 702 III; add 505 D, F and G.
  • The 125% column. Appendix A's SFY2026 125% figures for sizes 4-8 do not equal 125% of the guideline: size 4 prints $40,062.50 against $40,187.50, and sizes 5-8 print the next size's figure. P/payment/cap/income_band.yaml:4-6 follows the rate, which is right. Its comment should say "SFY2026": the SFY2027 column is correct.
  • Why nothing forces it. Neither comment matches the Tie source-conflict markers to the register shared with Axiom #10287 ratchet's pattern, so the guard does not prompt for an entry.
  • Precedent: Add Iowa LIHEAP regular heating assistance #10292 G5 and Add Maine HEAP Fuel Assistance #10437 G4. source_conflicts/candidates.yaml already lists LIHEAP plan-versus-manual items such as us-al:liheap-insurance-payments.
  • Fix: add us-nv: LIHEAP candidates for both items, with this PR in prs.

G2. Military pay.

  • The rule. 703 A (p. 43) counts "military pay" as earned income, and 705 (p. 47) counts "Military Income" for eligibility and the FAC.
  • The head. The earned list relies on employment_income, and its comment says military pay is among the gross wages.
  • The sibling. Iowa LIHEAP (Add Iowa LIHEAP regular heating assistance #10292, merged) lists military_basic_pay beside employment_income. A household that enters basic pay in that input gets it counted in Iowa but not here.
  • Fix: add military_basic_pay, with a test, for consistency with Iowa. Otherwise, say in the comment that military pay must be entered in employment_income.

G3. educational_assistance exists on main.

  • The claim. P/income/sources/unearned.yaml:43-45 and the body's Not-modeled table say educational assistance has "no inputs".
  • The input. educational_assistance ("Scholarships, grants, and other educational assistance") has been on main since May 2026, and school meals and WIC read it.
  • The rule. 705 (p. 46) counts "Educational assistance (except those funded by Title IV of the Higher Education Act) minus qualifying expenses". The input cannot separate Title IV aid or net the expenses, so leaving it out is defensible.
  • Fix: correct the comment and the body row to give that reason, or count the input with a note that it overstates.

G4. Document two more income approximations.

  • Self-employment.
    • The rule. 707 K (p. 55) says: "Budgetable self-employed income must be based on gross income", verified from Schedule C and similar records.
    • The head. P/income/sources/earned.yaml:2-3 and the body describe "net receipts from self-employment" and cite 703 A and 705, which do not say net. The model's inputs are net business income, so they are the best available stand-in.
    • Precedent. Iowa (Add Iowa LIHEAP regular heating assistance #10292) documents the same approximation in its earned list.
    • Fix: cite 707 K and state the approximation.
  • Unemployment benefits. 707 M (p. 57) adds "the two (2) most recent ESD Quarterly earnings plus the UIB income" to FAC income for households receiving UIB. Add it to the Not-modeled table.

G5. A mixed-state case (item 15). No case runs a Nevada and a non-Nevada SPM unit in one simulation.

  • Why it is safe today. For non-residents nv_liheap_household_size is 0, but clip(size, 1, 8) keeps the table row valid, and income_band always returns 1-4. fpg at size 0 is positive ($10,150), so the band ratio is defined.
  • Fix: an optional two-state case would keep that pinned.

G6. Earlier years. Every parameter starts on 2025-07-01, so model years before 2026 backfill SFY2026 values. The registry and the body correctly claim only 2026-2027 and call earlier years unverified. The corpus's FY2024 manual (MTL 01/24) shows a 2.63% burden and a $240 minimum. If earlier years matter, add the SFY2024-SFY2025 values. Otherwise, no change is needed (NJ S3 precedent).

Verified correct

Hand-checked expectations (14, all match the head):

Test Hand computation Expected
nv_liheap Case 1 2,040 − 0.0181 × 24,960 = 1,588.224; 24,960 / 26,650 = 0.937, band 2, cap 1,773 1,588.224
nv_liheap Case 2 FAC income 9,360 + 6,240 + 4,632 = 20,232; 1,920 − 366.1992 = 1,553.8008; ratio 0.759, band 2 1,553.8008
nv_liheap Case 5 3,520 − 338.832 = 3,181.168; 18,720 / 21,150 = 0.885, propane size 2 band 2 1,884
nv_liheap Case 9 47,062.50 / 37,650 = 1.25 exactly, band 3; 2,640 − 851.83 = 1,788.17 > 1,568 1,568
nv_liheap Case 12 eligibility 37,440 ≤ 39,975; FAC income 41,280 / 26,650 = 1.549, band 4 1,277
nv_liheap Case 13 size 9 guideline 59,650; 43,680 / 59,650 = 0.732, band 1; 8+ row 2,836
nv_liheap Case 14 2,241.168; 18,720 / 15,650 = 1.196, band 3; 1,280 + 100 (age 60) 1,380
nv_liheap Case 17 14,400 − 2,434.80 = 11,965.20; ratio 0.765, band 2; 1,600 + 100 1,700
nv_liheap Case 19 size 8 guideline 54,150; ratio 0.461, band 1; propane 3,036 + 100 (age 4) 3,136
nv_liheap Case 20 (2027) 1,920 − 0.0148 × 21,600 = 1,600.32; 21,600 / 21,640 = 0.998, band 2 1,600.32
nv_liheap Case 22 11,928 + 109.30 × 12 = 13,239.60; ratio 0.846, band 2; SSI receipt targets: 1,600 + 100 13,239.6 / 1,700
countable Case 3 (21,600 − 2,434.80) + max(1,800 − 2,434.80, 0) 19,165.20
countable Case 5 18,720 + 4,800 + 2,000 + 1,200 + 3,000 29,720
income limit Cases 2 and 4 (15,650 + 8 × 5,500) × 1.5; (15,960 + 8 × 5,680) × 1.5 89,475; 92,100

Batch checks:

  • 1. Plan and manual first. Every encoded cell and rate was checked against both manuals' Appendix A and both plans. The program year (state fiscal year) and the 2025-07-01 and 2026-07-01 dates match.
  • 2. Income.
    • Gross counting. Countable income is gross: employment income before payroll deductions (703 A), so the Document disjoint health premium inputs and correct consumer treatment #10046 item does not apply.
    • Medicare. The deduction is Part B from Social Security only (703 B.I, 706). Part D has no input, as the PR documents.
    • Losses. They are floored per source and per person.
    • Period. The income is annual, standing in for 30-day annualization.
  • 3. Backdating. Only 2026-2027 are claimed (see G6).
  • 4. Arrangements.
    • Housing. Heat in unsubsidized rent pays $360. Subsidized and public-housing tenants with utilities in the rent need an energy burden.
    • Fuel. NONE is ineligible, and UNSPECIFIED is eligible only with heat in the rent, matching Florida's merged pattern.
    • Eligibility rules. There is no categorical eligibility and no asset test (plans 1.4 and 2.3).
    • Coverage. Every branch has a test.
  • 5. Tests. Periods are plain. The edges are covered: the exact limit, the 75% and 125% band edges, the age 59/60 and 5/6 edges, sizes 1 and 9, and the bar's 4/5-year and 17/18 age edges.
  • 6. Descriptions. All 18 follow the house template.
  • 7. References.
    • Anchors. Every #page anchor I opened shows its value: 302 A on p. 21 and 302 C on p. 22 (SFY2026) or p. 23 (SFY2027); 505 on p. 35; 701 and 702 III on p. 43; 703 B on p. 44; 705 on pp. 46-48; 707 N on p. 57; 802-803 on pp. 60-61. The glossary's Child and Disabled definitions are on p. 104 and Elderly on p. 105 (pp. 103 and 104 in SFY2027). Appendix A is on pp. 110-111, and the plan sections on pp. 5-6 and 8-9.
    • Form. Multi-page titles use the #page a-b and #page a,b forms, and the variable tuples carry # PDF pages comments.
  • 8. Wiring. The programs.yaml entry and the NV state block are correct. No merged LIHEAP state feeds a household aggregate, so none is needed. Every variable is gated by StateCode.NV or by nv_liheap_eligible.
  • 11, Integrate modeled state unemployment insurance into income flows #9558. The list reads total_unemployment_compensation.
  • 12. IIJA. There is no IIJA supplement.
  • 13. Mutation. See S1. Every eligibility, immigration, targeting and cap branch is pinned.
  • 14. Health premiums. Nevada deducts no health premiums from wages, and the model deducts none.
  • 15, NH Add New Hampshire state supplementation for 2026 #10156. The pattern is safe (see G5).
  • 16, Wire military retirement pay and survivors into federal and state tax (#10181) #10182. The list reads military_retirement_income.
  • 17. State SSP. nv_oss is counted and pinned (Case 22).
  • The federal floor. 150% of poverty is above the 110% floor of 42 U.S.C. 8624(b)(2)(B) for every size.
  • Count each Social Security benefit once in Pennsylvania CCW countable income #10408 pattern. social_security is read once, outside the list, and survivor_benefits and disability_benefits are non-Social Security inputs. Nothing is double counted.
  • Uprate poverty guidelines over the 9902(2) interval and fix the Trustees wage base #10453. The poverty guideline uprating on main leaves the authored 2025 and 2026 guidelines ($15,650 and $15,960) unchanged.
  • The five-year bar. It follows 302 C. years_since_us_entry defaults to 5, so members with no entry date fall past the bar. The exemptions (under 18, refugee-type statuses, military connection, 40 quarters for permanent residents) are all pinned.
  • Changelog. A top-level changelog.d/nv-liheap-wave1d.added.md.

Axiom line assessment

axiom: TheAxiomFoundation/rulespec-us#1893 queued is valid.

  • The issue. It is OPEN and labelled pe-parity, and it is dispatch-ready: proposed module paths, corpus citations and ingest gaps, verbatim law, required outputs and companion tests derived from the sources.
  • The blocker. The SFY2026 and SFY2027 manuals are not yet in the corpus, and there is no reviewed oracle revision.
  • The match. It describes head 4c554d9268, the 56 cases, the 5 earned and 23 unearned sources (with total_unemployment_compensation and military_retirement_income) and the bill-based energy cost.
  • After the fixes. Refresh the head SHA, the case counts, the companion tests (S1) and the energy-cost definition (S2), and the source lists if G2 or G3 is taken.

CI status

gh pr checks 10432 at head 4c554d9268: 29 pass and 3 skipping (superseded workflow runs).

  • Coverage. The baseline state shards, the guard tests, the household partner suite and Codecov all pass.
  • Failures. None.

Branch status

Verdict: REQUEST_CHANGES

@DTrim99 DTrim99 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes: 0 critical, 2 should (untested income sources; energy cost includes service fees the manual excludes). Full report in the comment above.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Nevada Energy Assistance Program regular heating assistance

2 participants