Repository navigation
Point the FL and SD LIHEAP conflict candidates at their code on main - #10349
Conversation
#10287 wrote these candidates while #9969 (FL) and #9974 (SD) were open, so each said its code was not on main. Both have merged. Each candidate now lists the files that decide it, and its note says which source that code follows, as read on main. One note changes substance: SD's merged code caps kerosene at unpaid charges like fuel oil, following the plan and rules, not the 2018 manual's full payment by check. The SD 2025 table candidate gets the archived DSS page as its source. Two FL conflicts recorded in the merged code had no candidate: the FY2026 plan's payment estimate against the October 2025 matrix, and manual part 900.01D against parts 1100.03D and 1200.01A and contract G(7)d on the income limit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Point the FL and SD LIHEAP conflict candidates at their code on mainPR #10349 (author: MaxGhenis), head Summary#10287 wrote the Florida and South Dakota LIHEAP candidates while #9969 and #9974 were open, so each said The refresh is accurate:
One should item. The merged Florida code records two more conflicts that have no candidate:
Both pass the PR's own test for adding a candidate: the merged code records the conflict in a comment, and no candidate covers it. Four suggestions:
Status. CI is 27/27 green at the head; Critical (must fix)None. Should address1. Add candidates for the two Florida conflicts the merged code records without one: the 110% floor and minors' income. Where: the Florida block, Why it is in scope. The PR body picks its new candidates this way: "The merged FL code records both conflicts in its comments; neither had a candidate." The merged code records two more conflicts on the same terms. #9969's body lists both. (a) Federal 110% floor against the 60% SMI limit
(b) Minors' income
Why the ratchet missed them. None of the comments uses a trigger word ("supersedes" is not one). So neither Effect. The model is not affected. The backlog misses two known Florida conflicts, one of which is a statute conflict, and the body's "two Florida candidates that were missing" undercounts. Fix. Add two entries. Every value below comes from the merged code, its tests or the sources quoted above: - id: us-fl:liheap-income-floor-vs-smi-limit
program: liheap
years:
from: 2026
to: 2027
type: federal-fiscal
question: Can Florida's 60% SMI heating limit exclude a household of 15 or more whose income is below the federal
110% poverty-guideline floor?
sources:
- kind: statute
citation: 42 U.S.C. 8624(b)(2)(B)
url: https://www.law.cornell.edu/uscode/text/42/8624#b_2_B
- kind: guidance
citation: FY2026 LIHEAP State Plan item 2.1, p.8
url: https://liheapch.acf.gov/docs/2026/state-plans/FL_Plan_2026.pdf#page=8
- kind: form
citation: October 2025 LIHEAP payment matrix footnote
url: https://liheapch.acf.gov/docs/2026/benefits-matricies/FL_BenefitMatrix_Heat-Cool_2026.pdf
readings:
statute: Income below 110% of the poverty guideline cannot by itself exclude the household; the FY2026 plan
assurances (p.45) and contract G(8)e (p.13) repeat this.
other: The plan and matrix set 60% of SMI for every size, which falls below that floor from household size 15.
example: Fifteen people with $100,000 exceed the $98,320 limit but are below the $101,915 floor and receive $200.
pe_us:
follows: statute
code:
- policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_eligible.py
- policyengine_us/parameters/gov/hhs/liheap/fpg_floor.yaml
prs:
- https://github.com/PolicyEngine/policyengine-us/pull/9969
state: unreviewed
note: PE-US applies the floor, rounded to cents with the statute's strict "less than" (fl_liheap_eligible.py).
- id: us-fl:liheap-minor-income
program: liheap
years:
from: 2025
to: 2026
type: federal-fiscal
question: Does Florida LIHEAP exclude all minors' income, as the current application and portal FAQ do, or count
the income of 16- and 17-year-olds who do not attend school full time, as manual part 1200.01D does?
sources:
- kind: form
citation: Florida statewide LIHEAP application, Monthly Household Income, p.1
url: https://storage.googleapis.com/florida-liheap-relief-static-assets/Florida_LIHEAP_Application_English.pdf#page=1
- kind: guidance
citation: Florida LIHEAP portal FAQ, income not counted
url: https://floridaliheap.com/faq
- kind: manual
citation: Florida LIHEAP manual part 1200.01D, p.49
url: https://liheapch.acf.gov/sites/default/files/webfiles/docs/2023/manuals/FL_PolicyManual_2023.pdf#page=49
readings:
statute: No statute is supplied; the application asks for income of household members "except minors", and the
portal FAQ lists income of minors as not counted.
other: Part 1200.01D counts the income of members 18 and older and of 16- and 17-year-olds who do not attend
school full time.
pe_us:
follows: unknown
code:
- policyengine_us/variables/gov/states/fl/commerce/liheap/income/fl_liheap_countable_income.py
- policyengine_us/parameters/gov/states/fl/commerce/liheap/income/adult_age.yaml
prs:
- https://github.com/PolicyEngine/policyengine-us/pull/9969
state: unreviewed
note: PE-US follows the current application and portal FAQ, so no income of a member under 18 counts
(fl_liheap_countable_income.py, adult_age.yaml). The application gives no effective date, so FY2025 is a backfill.Both ids sort into place: Optional, same pass. The portal compares one month with monthly maximums rounded to whole dollars. Suggestions1. Reframe the two SD income-limit entries. ARSD 67:15:01:10 contains no limit formula, and the FY2025 table matches the FY2025 plan for four people. Where: What the entries say. Both cite ARSD 67:15:01:10 as "the rule":
The refreshed notes repeat this ("Verify why the table departs from the rule"; "which match the rule"). What the rules say.
What "the rule" really is. The min(200% FPG, max(150% FPG, 60% SMI)) formula is the model's inferred pattern, not a regulation:
FY2025: the table follows the plan except for sizes 1-3.
Fix:
Why only a suggestion. The readings are #10287's text. The entries are 2. Fix three page anchors in the FL entries this PR edits.
3. Fill the null URLs and add the missing deciding files that the merged code now supplies. The PR already did this for the SD 2025 table source. The same reasoning applies here. URLs:
Code lists:
4. Add an Verified correctEach refreshed entry. All 13 code paths exist on
PR-body claims:
Citations in the two new entries, read in the source PDFs:
Ratchet tie-in. Every FL and SD file that #10334 baselined in
Coverage of #9969's and #9974's conflict tables.
Conflicts from our round-2 reviews:
Hand checks (10):
Housekeeping.
Axiom line assessmentNo line, and none is required.
Suggestion 4. The siblings #10350 and #10351 use CI status27 pass, 0 pending, 0 failed. This is run 39608424405 on head
Branch status
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
The refresh is accurate. All 13 code paths exist on main and do what the notes say, the follows values fit the convention, and the candidate tests pass. One should-address item: the merged FL code records two conflicts that have no candidate, the 110% floor vs the 60% SMI limit from size 15, and minors' income (application/FAQ vs manual 1200.01D). Paste-ready YAML for both is in the report. Four suggestions, including SD citation and anchor fixes. Full report in the comment above.
From DTrim99's review and a Sol review of #10349. - Two more conflicts the merged FL code records had no candidate. The first is the federal 110% poverty floor against the 60% SMI limit from household size 15 (statute against guidance; PE-US follows the statute). The second is minors' income: the current application and portal FAQ against manual part 1200.01D. Every value is checked against the merged code and its tests: the floor case's $98,320 limit and $101,915 floor are fl_liheap.yaml's Case 27. - The SD income-limit entries credited ARSD 67:15:01:10 with a limit formula it doesn't contain; it sets only the three-month income period. FY2025 is now the plan's 60% of SMI against the published table's 200% of the 2024 guideline for sizes 1-3: $32,984 against $30,120 for one person, as table/amount.yaml records. FY2026 is DSS's 200% of the 2025 guideline against the plan's 60% of SMI. Its $22,013 is the model's flooring, and $22,014 is unrounded. - Anchors and sources: - FY2026 plan item 2.1 is on page 8, not 4. - Contract G(8)c is on page 12, not 9. - The null URLs are filled from the merged code's references. - The FL manual-sections entry gets the plans, the matrix and the manual's "current matrix" page. - Kerosene gets plan item 9.1 and ARSD 67:15:01:43.01. - The FL size-13 and SD 2026 entries list the remaining deciding files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the thorough review. Everything is addressed at 9756a17. Should 1. I added both entries,
One small change in the floor example: "so they keep the band 4 base of $200". Case 27 also adds the child supplement, so I didn't call $200 the award. The body and changelog now say four new candidates. Suggestion 1, SD limits.
Suggestion 2, anchors. Plan item 2.1 now points to page 8 in both FL entries, and G(8)c to page 12. Suggestion 3, URLs and code lists.
Suggestion 4. The body now has the I also took two points from a separate Sol review:
|
PR Review (round 2): Point the FL and SD LIHEAP conflict candidates at their code on mainPR #10349 (author: MaxGhenis), head SummaryEvery round-1 finding is fixed.
No new critical or should findings. There are two small new suggestions: a missing FY2025 matrix source in the manual-sections entry, and a stale row in the PR body's table. CI and branch. CI has one failure, "Package and compatibility". It is main-caused, not caused by the PR. #10377 pinned uv 0.13.4 and moved Prior findings
New findingsCritical (must fix)None. Should addressNone. Suggestions1. Add the FY2025 payment matrix as a source of
2. Bring the PR body's table up to date.
VerifiedThe new floor candidate (
The new minors candidate (
The reframed SD entries match the plans:
The manual-sections entry (the Sol review's changes):
The code lists:
Hand checks of every new or changed expectation:
Static run of
Housekeeping:
Axiom line assessmentValid. The body has CI statusAt the end of this review: 1 failed, 7 passed, 9 pending. This is run 39778083946 on Failed: Package and compatibility (main-caused, not caused by the PR).
Passed:
Pending:
I couldn't confirm the source-conflict tests in CI at this head. The static run above passes, and the author reports 103 passed locally. Known main-caused ratchet failure: it doesn't apply. This run started after 2026-10-21 13:24 UTC. Locally: no tests or models were run. I parsed the candidates YAML only. I read the cited sources with a generic User-Agent:
Branch status
Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: Should 1 is fixed. Both FL candidates (the 110% floor from size 15, and minors' income) are added and verified, and all four suggestions are fixed. The candidate rules pass statically at the head and on the merged tree. The red 'Package and compatibility' check is main-caused (#10377's uv pin vs this head's uv.lock), so merge main. Nine checks were still pending when I looked; let them finish green before merging. Two small suggestions. Full report in the comment above.
…band files Review nits from the round-2 review of #10349: - us-fl:liheap-income-limit-manual-sections now cites the FY2025 payment matrix the code follows. - us-fl:liheap-income-floor-vs-smi-limit lists fpg_year_lag.yaml and fl_liheap.py, which its numbers rest on, and says the band 4 base is the model's estimate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the round-2 approval. Since 9756a17, the independent round-2 review (APPROVE_WITH_NITS) and your two suggestions are addressed:
The guard test gives 103 passed on the merged head. There are 229 candidates, sorted and unique. |
|
Merged at ee492a2 (squash 8231b18), with all 27 checks passing on that head. Reviews:
The change is source-conflict backlog metadata only, with no model change. |
This is the follow-up promised in #10334. It brings the Florida and South Dakota LIHEAP entries in
source_conflicts/candidates.yamlup to date with the code onmain, and adds four Florida candidates that were missing.Why. #10287 wrote these candidates while #9969 (FL) and #9974 (SD) were still open. So each says
code: []and "Code not yet on main". Both PRs have merged.Refreshed candidates (nine). Each now lists the files that decide it under
pe_us.code. Its note says which source that code follows, as I read it onmain.pe_us.followsstaysunknown, as for every candidate whose readings begin "No statute supplied". FL's size-13 entry keepsfollows: statute.us-fl:liheap-energy-in-unsubsidized-rentfl_liheap_eligible.pyus-fl:liheap-large-household-contract-limitfl_liheap_income_limit.py,eligibility/fpg_rate.yamlfpg_rateis 0 from October 2025)us-fl:liheap-size-13-income-limitfl_liheap_income_limit.py,hhs_smi.py,eligibility/truncates_smi_limit.yaml,fl_liheap.pyus-sd:liheap-2025-published-income-limitsd_liheap_income_limit.py,limits/table/amount.yaml,limits/table/in_effect.yamlus-sd:liheap-2026-plan-income-limitssd_liheap_income_limit.py,limits/fpg_upper_rate.yaml,limits/smi_rate.yaml,limits/table/in_effect.yamlus-sd:liheap-cash-giftsincome/sources/unearned.yaml,sd_liheap_countable_income.pyus-sd:liheap-gambling-winningsincome/sources/unearned.yaml,sd_liheap_countable_income.pyus-sd:liheap-categorical-eligibilitysd_liheap_eligible.pyus-sd:liheap-kerosene-payment-methodsd_liheap.pyNew candidates (four). The merged FL code records all four conflicts in its comments, and none had a candidate.
us-fl:liheap-fy2026-payment-range. The FY2026 plan, item 2.6, estimates payments of $400 to $1,350. The October 2025 matrix, which manual Part 200 Q.4 and contract D(10)b require, pays $200 to $700. PE-US follows the matrix (payment/base_amount.yaml,fl_liheap.py).us-fl:liheap-income-limit-manual-sections.us-fl:liheap-income-floor-vs-smi-limit. This is a statute against guidance. 42 U.S.C. 8624(b)(2)(B) bars excluding a household on income below 110% of the poverty guideline, while the 60% SMI limit falls below that floor from size 15. PE-US follows the statute (fl_liheap_eligible.py,gov/hhs/liheap/fpg_floor.yaml). The floor's guideline year comes fromeligibility/fpg_year_lag.yaml, and the band 4 base the household keeps isfl_liheap.py's estimate. The example isfl_liheap.yaml's Case 27: limit $98,320, floor $101,915.us-fl:liheap-minor-income. The current application and portal FAQ exclude all minors' income, while manual 1200.01D counts 16- and 17-year-olds not in school full time. PE-US follows the application (income/fl_liheap_countable_income.py,income/adult_age.yaml).Reframed SD income-limit entries. ARSD 67:15:01:10 sets only the three-month income period, not a limit. The "rule" the old text cited is the model's inferred pattern.
table/amount.yamlrecords.Anchors, URLs and code lists (both reviews):
truncates_smi_limit.yamlandfl_liheap.py; SD 2026 addsfpg_upper_rate.yaml,smi_rate.yamlandtable/in_effect.yaml; the FL floor addsfpg_year_lag.yamlandfl_liheap.py(round-2 review).Every citation and page number comes from the merged code's own comments and references.
Verification.
policyengine_us/tests/code_health/test_source_conflicts.pygives 103 passed. I ran a copy outside the package, so pytest doesn't importpolicyengine_us.mainmerged in (ee492a2), there are 229 candidates, still sorted, with unique ids. Mergingmainbrings Stop trusting the compromised eMudhra CA certificates #10377's workflow anduv.lockchanges. DTrim99 traced the failing "Package and compatibility" check to them, against this branch's older lock.Not in this PR. Counted at 15:33Z on 2026-10-22, with
mainmerged in: 99 other candidates still say their code is not onmain, though a PR they name has merged (69 merged PRs in all). The count grows as PRs merge. Refreshing them is the same work, so it's a separate change.axiom: n/a: source-conflict backlog metadata only; no model change
🤖 Generated with Claude Code