From e683a5306a90121dfe356a1c98e656dfdb52e283 Mon Sep 17 00:00:00 2001 From: Ziming Date: Wed, 21 Oct 2026 17:20:11 -0400 Subject: [PATCH 1/5] Key Illinois HBWD premium bands at the chart's band starts The 89 Ill. Admin. Code 120.510(n) premium chart uses closed bands (0-250, 251-500, ..., 4751-5000, 5000+), so income of exactly $250, $500 and so on belongs to the lower band. Thresholds now sit at the band starts with the default lookup. Fixes #10369 Co-Authored-By: Claude Opus 5.5 --- .../il-hbwd-premium-band-edges.fixed.md | 1 + .../states/il/hfs/hbwd/premium/earned.yaml | 42 +++++++------- .../states/il/hfs/hbwd/premium/unearned.yaml | 42 +++++++------- .../states/il/hfs/hbwd/il_hbwd_person.yaml | 10 ++-- .../states/il/hfs/hbwd/il_hbwd_premium.yaml | 57 ++++++++++++------- .../gov/states/il/hfs/hbwd/integration.yaml | 16 +++--- 6 files changed, 93 insertions(+), 75 deletions(-) create mode 100644 changelog.d/il-hbwd-premium-band-edges.fixed.md diff --git a/changelog.d/il-hbwd-premium-band-edges.fixed.md b/changelog.d/il-hbwd-premium-band-edges.fixed.md new file mode 100644 index 00000000000..1102a687b4b --- /dev/null +++ b/changelog.d/il-hbwd-premium-band-edges.fixed.md @@ -0,0 +1 @@ +Key the Illinois Health Benefits for Workers with Disabilities premium bands at the chart's band starts, so income of exactly $250, $500 and so on pays the lower band's premium. diff --git a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml index 0d71a038a63..5c40a2592a2 100644 --- a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +++ b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml @@ -7,6 +7,8 @@ metadata: label: Illinois HBWD earned income premium component reference: # Illinois presents the table as a matrix, but the values can be summed between row 1 and column 1. + # Thresholds are the chart's band starts (0-250, 251-500, ..., 4751-5000, 5000+), so income of + # exactly $250 stays in the first band; $5,000 falls in the 4751-5000 band. - title: 89 Ill. Admin. Code § 120.510 (n) href: https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510 brackets: @@ -15,82 +17,82 @@ brackets: amount: 2022-04-01: 0 - threshold: - 2022-04-01: 250 + 2022-04-01: 251 amount: 2022-04-01: 6 - threshold: - 2022-04-01: 500 + 2022-04-01: 501 amount: 2022-04-01: 13 - threshold: - 2022-04-01: 750 + 2022-04-01: 751 amount: 2022-04-01: 19 - threshold: - 2022-04-01: 1_000 + 2022-04-01: 1_001 amount: 2022-04-01: 25 - threshold: - 2022-04-01: 1_250 + 2022-04-01: 1_251 amount: 2022-04-01: 31 - threshold: - 2022-04-01: 1_500 + 2022-04-01: 1_501 amount: 2022-04-01: 38 - threshold: - 2022-04-01: 1_750 + 2022-04-01: 1_751 amount: 2022-04-01: 44 - threshold: - 2022-04-01: 2_000 + 2022-04-01: 2_001 amount: 2022-04-01: 50 - threshold: - 2022-04-01: 2_250 + 2022-04-01: 2_251 amount: 2022-04-01: 56 - threshold: - 2022-04-01: 2_500 + 2022-04-01: 2_501 amount: 2022-04-01: 63 - threshold: - 2022-04-01: 2_750 + 2022-04-01: 2_751 amount: 2022-04-01: 69 - threshold: - 2022-04-01: 3_000 + 2022-04-01: 3_001 amount: 2022-04-01: 75 - threshold: - 2022-04-01: 3_250 + 2022-04-01: 3_251 amount: 2022-04-01: 81 - threshold: - 2022-04-01: 3_500 + 2022-04-01: 3_501 amount: 2022-04-01: 88 - threshold: - 2022-04-01: 3_750 + 2022-04-01: 3_751 amount: 2022-04-01: 94 - threshold: - 2022-04-01: 4_000 + 2022-04-01: 4_001 amount: 2022-04-01: 100 - threshold: - 2022-04-01: 4_250 + 2022-04-01: 4_251 amount: 2022-04-01: 106 - threshold: - 2022-04-01: 4_500 + 2022-04-01: 4_501 amount: 2022-04-01: 113 - threshold: - 2022-04-01: 4_750 + 2022-04-01: 4_751 amount: 2022-04-01: 119 - threshold: - 2022-04-01: 5_000 + 2022-04-01: 5_001 amount: 2022-04-01: 125 diff --git a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml index e62138f1811..3bc490e9911 100644 --- a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +++ b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml @@ -7,6 +7,8 @@ metadata: label: Illinois HBWD unearned income premium component reference: # Illinois presents the table as a matrix, but the values can be summed between row 1 and column 1. + # Thresholds are the chart's band starts (0-250, 251-500, ..., 4751-5000, 5000+), so income of + # exactly $250 stays in the first band; $5,000 falls in the 4751-5000 band. - title: 89 Ill. Admin. Code § 120.510 (n) href: https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510 brackets: @@ -15,82 +17,82 @@ brackets: amount: 2022-04-01: 0 - threshold: - 2022-04-01: 250 + 2022-04-01: 251 amount: 2022-04-01: 19 - threshold: - 2022-04-01: 500 + 2022-04-01: 501 amount: 2022-04-01: 38 - threshold: - 2022-04-01: 750 + 2022-04-01: 751 amount: 2022-04-01: 56 - threshold: - 2022-04-01: 1_000 + 2022-04-01: 1_001 amount: 2022-04-01: 75 - threshold: - 2022-04-01: 1_250 + 2022-04-01: 1_251 amount: 2022-04-01: 94 - threshold: - 2022-04-01: 1_500 + 2022-04-01: 1_501 amount: 2022-04-01: 113 - threshold: - 2022-04-01: 1_750 + 2022-04-01: 1_751 amount: 2022-04-01: 131 - threshold: - 2022-04-01: 2_000 + 2022-04-01: 2_001 amount: 2022-04-01: 150 - threshold: - 2022-04-01: 2_250 + 2022-04-01: 2_251 amount: 2022-04-01: 169 - threshold: - 2022-04-01: 2_500 + 2022-04-01: 2_501 amount: 2022-04-01: 188 - threshold: - 2022-04-01: 2_750 + 2022-04-01: 2_751 amount: 2022-04-01: 206 - threshold: - 2022-04-01: 3_000 + 2022-04-01: 3_001 amount: 2022-04-01: 225 - threshold: - 2022-04-01: 3_250 + 2022-04-01: 3_251 amount: 2022-04-01: 244 - threshold: - 2022-04-01: 3_500 + 2022-04-01: 3_501 amount: 2022-04-01: 263 - threshold: - 2022-04-01: 3_750 + 2022-04-01: 3_751 amount: 2022-04-01: 281 - threshold: - 2022-04-01: 4_000 + 2022-04-01: 4_001 amount: 2022-04-01: 300 - threshold: - 2022-04-01: 4_250 + 2022-04-01: 4_251 amount: 2022-04-01: 319 - threshold: - 2022-04-01: 4_500 + 2022-04-01: 4_501 amount: 2022-04-01: 338 - threshold: - 2022-04-01: 4_750 + 2022-04-01: 4_751 amount: 2022-04-01: 356 - threshold: - 2022-04-01: 5_000 + 2022-04-01: 5_001 amount: 2022-04-01: 375 diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml index 19124990d6f..29e59a201f3 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml @@ -7,11 +7,11 @@ il_hbwd_countable_earned_income: 1_000 il_hbwd_countable_unearned_income: 1_200 output: - il_hbwd_person: -100 - # Premium: $100 (earned $25 + unearned $75) - # Earned $1,000 → bracket 4 → $25 - # Unearned $1,200 → bracket 4 → $75 - # Benefit: -$100 (cost to individual) + il_hbwd_person: -94 + # Premium: $94 (earned $19 + unearned $75) + # Earned $1,000 → 751-1000 band → $19 + # Unearned $1,200 → 1001-1250 band → $75 + # Benefit: -$94 (cost to individual) - name: Case 2, HBWD person not eligible. period: 2024-01 diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml index a45e67f3de7..213e5496671 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml @@ -7,10 +7,10 @@ il_hbwd_countable_earned_income: 2_000 il_hbwd_countable_unearned_income: 0 output: - il_hbwd_premium: 50 - # Earned $2,000 → bracket 8 (2001-2250) → $50 - # Unearned $0 → bracket 0 → $0 - # Total: $50 + il_hbwd_premium: 44 + # Earned $2,000 → 1751-2000 band → $44 + # Unearned $0 → 0-250 band → $0 + # Total: $44 - name: Case 2, premium with earned and unearned. period: 2024-01 @@ -21,10 +21,10 @@ il_hbwd_countable_earned_income: 1_000 il_hbwd_countable_unearned_income: 1_200 output: - il_hbwd_premium: 100 - # Earned $1,000 → bracket 4 (1001-1250) → $25 - # Unearned $1,200 → bracket 4 (1001-1250) → $75 - # Total: $25 + $75 = $100 + il_hbwd_premium: 94 + # Earned $1,000 → 751-1000 band → $19 + # Unearned $1,200 → 1001-1250 band → $75 + # Total: $19 + $75 = $94 - name: Case 3, premium with higher income. period: 2024-01 @@ -35,10 +35,10 @@ il_hbwd_countable_earned_income: 3_000 il_hbwd_countable_unearned_income: 2_000 output: - il_hbwd_premium: 225 - # Earned $3,000 → bracket 12 (3001-3250) → $75 - # Unearned $2,000 → bracket 8 (2001-2250) → $150 - # Total: $75 + $150 = $225 + il_hbwd_premium: 200 + # Earned $3,000 → 2751-3000 band → $69 + # Unearned $2,000 → 1751-2000 band → $131 + # Total: $69 + $131 = $200 - name: Case 4, premium capped at $500. period: 2024-01 @@ -46,14 +46,13 @@ input: state_code: IL il_hbwd_eligible: true - il_hbwd_countable_earned_income: 5_000 - il_hbwd_countable_unearned_income: 5_000 + il_hbwd_countable_earned_income: 5_001 + il_hbwd_countable_unearned_income: 5_001 output: il_hbwd_premium: 500 - # Earned $5,000+ → bracket 20 → $125 - # Unearned $5,000+ → bracket 20 → $375 - # Uncapped: $500 - # Capped: $500 + # Earned above $5,000 → 5000+ band → $125 + # Unearned above $5,000 → 5000+ band → $375 + # Total: $500, the chart's highest premium - name: Case 5, no premium in first bracket. period: 2024-01 @@ -78,10 +77,10 @@ il_hbwd_countable_earned_income: 250 il_hbwd_countable_unearned_income: 250 output: - il_hbwd_premium: 25 - # Earned $250 → bracket 1 (251-500) → $6 - # Unearned $250 → bracket 1 (251-500) → $19 - # Total: $6 + $19 = $25 + il_hbwd_premium: 0 + # Earned $250 → 0-250 band → $0 + # Unearned $250 → 0-250 band → $0 + # Total: $0 - name: Case 7, married couple both disabled, each premium uses only their own withholding. period: 2025-01 @@ -119,3 +118,17 @@ # Earned $1,802.61 → bracket 7 (1751-2000) → $44 # Unearned $0 → bracket 0 → $0 # Deducting the couple's combined withholding would give 1,710.41 → $38 + +- name: Case 8, income of exactly $5,000 is in the 4751-5000 band, not the 5000+ band. + period: 2026-01 + absolute_error_margin: 0.01 + input: + state_code: IL + il_hbwd_eligible: true + il_hbwd_countable_earned_income: 5_000 + il_hbwd_countable_unearned_income: 5_000 + output: + il_hbwd_premium: 475 + # Earned $5,000 → 4751-5000 band → $119 + # Unearned $5,000 → 4751-5000 band → $356 + # Total: $119 + $356 = $475 diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml index 75ddb4826f1..4783aa7fd9b 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml @@ -23,10 +23,10 @@ # Unearned: $1,000 - $10 (remaining flat exemption) # Total: ~$2,728.13 # Premium calculation - il_hbwd_premium: 113 - # Earned $1,713.45 → bracket 6 (1501-1750) → $38 - # Unearned $1,000 → bracket 4 (1001-1250) → $75 - # Total: $38 + $75 = $113 + il_hbwd_premium: 94 + # Earned $1,713.45 → 1501-1750 band → $38 + # Unearned $1,000 → 751-1000 band → $56 + # Total: $38 + $56 = $94 - name: Case 2, couple with one eligible member. period: 2024-01 @@ -160,10 +160,10 @@ # Earned after expenses and exemptions: ~$850 # Unearned: $1,500 # Total: ~$2,349.95 - il_hbwd_premium: 132 - # Earned $824.95 → bracket 3 (751-1000) → $19 - # Unearned $1,500 → bracket 6 (1501-1750) → $113 - # Total: $19 + $113 = $132 + il_hbwd_premium: 113 + # Earned $824.95 → 751-1000 band → $19 + # Unearned $1,500 → 1251-1500 band → $94 + # Total: $19 + $94 = $113 - name: Case 7, ineligible too young. period: 2024-01 From 7ac9cbc4816c95d9708e84604b013e69415f2c29 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 16:35:20 -0400 Subject: [PATCH 2/5] Fix Illinois HBWD test comments and Case 4 name Integration Cases 1 and 6 now show the countable earned income the assertions use, and Case 4 no longer claims a cap the chart does not set. Co-Authored-By: Claude Opus 5.5 --- .../gov/states/il/hfs/hbwd/il_hbwd_premium.yaml | 2 +- .../baseline/gov/states/il/hfs/hbwd/integration.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml index 213e5496671..80763322e6b 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml @@ -40,7 +40,7 @@ # Unearned $2,000 → 1751-2000 band → $131 # Total: $69 + $131 = $200 -- name: Case 4, premium capped at $500. +- name: Case 4, income above $5,000 of each type pays the chart's highest premium. period: 2024-01 absolute_error_margin: 0.01 input: diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml index 4783aa7fd9b..35d754494fd 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml @@ -19,12 +19,12 @@ # Income calculation il_hbwd_gross_earned_income: 2_000 # 24,000 / 12 il_hbwd_countable_income: 2_728.13 - # Earned: $2,000 - $211.55 (expenses) - $50 (exemptions) = $1,738.45 - # Unearned: $1,000 - $10 (remaining flat exemption) - # Total: ~$2,728.13 + # Earned: $2,000 - $221.87 (withheld taxes) - $50 (exemption) = $1,728.13 + # Unearned: $1,000 (counted gross) + # Total: $2,728.13 # Premium calculation il_hbwd_premium: 94 - # Earned $1,713.45 → 1501-1750 band → $38 + # Earned $1,728.13 → 1501-1750 band → $38 # Unearned $1,000 → 751-1000 band → $56 # Total: $38 + $56 = $94 @@ -161,7 +161,7 @@ # Unearned: $1,500 # Total: ~$2,349.95 il_hbwd_premium: 113 - # Earned $824.95 → 751-1000 band → $19 + # Earned $849.95 → 751-1000 band → $19 # Unearned $1,500 → 1251-1500 band → $94 # Total: $19 + $94 = $113 From bd587e45b7e22c785f87867585979716210e7808 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 20:07:06 -0400 Subject: [PATCH 3/5] Register the Illinois HBWD 79-or-69 premium cell as a source-conflict candidate The premium parameters now say that adding the first column and first row reproduces 434 of the 441 cells in 120.510(n)(3), pointing to issue 10471. Co-Authored-By: Claude Opus 5.5 --- .../states/il/hfs/hbwd/premium/earned.yaml | 3 +- .../states/il/hfs/hbwd/premium/unearned.yaml | 3 +- source_conflicts/candidates.yaml | 35 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml index 5c40a2592a2..5489ae5faa6 100644 --- a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +++ b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml @@ -6,7 +6,8 @@ metadata: period: month label: Illinois HBWD earned income premium component reference: - # Illinois presents the table as a matrix, but the values can be summed between row 1 and column 1. + # Summing the first column (earned) and first row (unearned) reproduces 434 of the 441 + # cells in 120.510(n)(3); see issue 10471 for the others. # Thresholds are the chart's band starts (0-250, 251-500, ..., 4751-5000, 5000+), so income of # exactly $250 stays in the first band; $5,000 falls in the 4751-5000 band. - title: 89 Ill. Admin. Code § 120.510 (n) diff --git a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml index 3bc490e9911..2a0cc8e043e 100644 --- a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +++ b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml @@ -6,7 +6,8 @@ metadata: period: month label: Illinois HBWD unearned income premium component reference: - # Illinois presents the table as a matrix, but the values can be summed between row 1 and column 1. + # Summing the first column (earned) and first row (unearned) reproduces 434 of the 441 + # cells in 120.510(n)(3); see issue 10471 for the others. # Thresholds are the chart's band starts (0-250, 251-500, ..., 4751-5000, 5000+), so income of # exactly $250 stays in the first band; $5,000 falls in the 4751-5000 band. - title: 89 Ill. Admin. Code § 120.510 (n) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index ab0faa5b4ec..0cdadb96606 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2164,6 +2164,41 @@ candidates: state: ruled note: Statute text is in the Axiom corpus; registering needs a pdftotext capture of the official instructions page. +- id: us-il:hbwd-premium-earned-1251-unearned-501-cell + program: medicaid + years: + from: 2022 + type: calendar + question: Is the Illinois Health Benefits for Workers with Disabilities premium for countable earned income of + $1,251-1,500 and gross unearned income of $501-750 $79, as 89 Ill. Adm. Code 120.510(n)(3) prints, or $69, as + the HFS premium chart prints? + sources: + - kind: regulation + citation: 89 Ill. Adm. Code 120.510(n)(3) + url: https://ilga.gov/commission/jcar/admincode/089/089001200I05100R.html + - kind: form + citation: HFS HBWD Premium Chart (one page) + url: https://hfs.illinois.gov/content/dam/soi/en/web/hfs/medicalprograms/hbwd/documents/hfsweb004.pdf + readings: + statute: No statute is supplied; the regulation's table (amended effective March 25, 2022) prints 79 for earned + income 1251-1500 and unearned income 501-750. + other: The HFS premium chart prints 69 for the same cell, which PE-US gives (31 + 38). + example: Countable earned income of $1,300 and gross unearned income of $600 a month give a $79 premium under the + regulation and a $69 premium under the chart and in PE-US. + pe_us: + follows: unknown + code: + - policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml + - policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml + - policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py + prs: + - https://github.com/PolicyEngine/policyengine-us/pull/10372 + state: unreviewed + note: 'PE-US gives the chart''s 69 because it adds an earned component (31) and an unearned component (38). The two + sources are a regulation and an agency form, with no statute, so the statute-first rule does not settle the cell. + The regulation''s row reads 31, 50, 79, 87, 106, and every neighbouring cell steps by about $19, so 79 may be a + typesetting error. The other 440 cells of the two sources agree. Issue 10471 proposes encoding the full table, + which needs this ruling first.' - id: us-il:joint-childless-eitc-dependency-skip program: income-tax years: From a47acccc3947fffe1015ac5b15b394fae4ef04ad Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 27 Oct 2026 14:59:49 -0400 Subject: [PATCH 4/5] Test every Illinois HBWD band start and complete the 79-or-69 record Adds Cases 9-14 (each band start, one dollar below it, cents, and HFS 3792 Example 1), cites (n)(3) and the HFS chart, records the whole-dollar reading, fixes stale test comments, and completes the source-conflict candidate with the 2009 start, the HFS 3792 brochure and both sides of the argument. Co-Authored-By: Claude Opus 5.5 --- .../states/il/hfs/hbwd/premium/earned.yaml | 6 +- .../states/il/hfs/hbwd/premium/unearned.yaml | 6 +- .../states/il/hfs/hbwd/il_hbwd_person.yaml | 2 +- .../states/il/hfs/hbwd/il_hbwd_premium.yaml | 180 +++++++++++++++++- .../gov/states/il/hfs/hbwd/integration.yaml | 12 +- source_conflicts/candidates.yaml | 30 +-- 6 files changed, 211 insertions(+), 25 deletions(-) diff --git a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml index 5489ae5faa6..8ceb71a31d4 100644 --- a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +++ b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml @@ -10,8 +10,12 @@ metadata: # cells in 120.510(n)(3); see issue 10471 for the others. # Thresholds are the chart's band starts (0-250, 251-500, ..., 4751-5000, 5000+), so income of # exactly $250 stays in the first band; $5,000 falls in the 4751-5000 band. - - title: 89 Ill. Admin. Code § 120.510 (n) + # Bands start at whole dollars, so income with cents stays in the band of its whole-dollar + # amount, as IDHS PM 15-04-03 drops cents. + - title: 89 Ill. Admin. Code § 120.510(n)(3) href: https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510 + - title: Illinois HFS, Health Benefits for Workers with Disabilities Premium Chart + href: https://hfs.illinois.gov/content/dam/soi/en/web/hfs/medicalprograms/hbwd/documents/hfsweb004.pdf brackets: - threshold: 2022-04-01: 0 diff --git a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml index 2a0cc8e043e..ce20aaa5162 100644 --- a/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +++ b/policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml @@ -10,8 +10,12 @@ metadata: # cells in 120.510(n)(3); see issue 10471 for the others. # Thresholds are the chart's band starts (0-250, 251-500, ..., 4751-5000, 5000+), so income of # exactly $250 stays in the first band; $5,000 falls in the 4751-5000 band. - - title: 89 Ill. Admin. Code § 120.510 (n) + # Bands start at whole dollars, so income with cents stays in the band of its whole-dollar + # amount, as IDHS PM 15-04-03 drops cents. + - title: 89 Ill. Admin. Code § 120.510(n)(3) href: https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510 + - title: Illinois HFS, Health Benefits for Workers with Disabilities Premium Chart + href: https://hfs.illinois.gov/content/dam/soi/en/web/hfs/medicalprograms/hbwd/documents/hfsweb004.pdf brackets: - threshold: 2022-04-01: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml index 29e59a201f3..2c4185062ae 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml @@ -31,4 +31,4 @@ il_hbwd_countable_unearned_income: 0 output: il_hbwd_person: 0 - # Both income in first bracket → $0 premium + # Both incomes in the 0-250 band → $0 premium diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml index 80763322e6b..529eac111de 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml @@ -54,7 +54,7 @@ # Unearned above $5,000 → 5000+ band → $375 # Total: $500, the chart's highest premium -- name: Case 5, no premium in first bracket. +- name: Case 5, no premium in the 0-250 band. period: 2024-01 absolute_error_margin: 0.01 input: @@ -64,11 +64,11 @@ il_hbwd_countable_unearned_income: 0 output: il_hbwd_premium: 0 - # Earned $200 → bracket 0 (0-250) → $0 - # Unearned $0 → bracket 0 → $0 + # Earned $200 → 0-250 band → $0 + # Unearned $0 → 0-250 band → $0 # Total: $0 -- name: Case 6, verify bracket boundary at $250. +- name: Case 6, income of exactly $250 is in the 0-250 band. period: 2024-01 absolute_error_margin: 0.01 input: @@ -115,8 +115,8 @@ il_hbwd_countable_earned_income: [1_802.61, 1_802.61] il_hbwd_countable_unearned_income: [0, 0] il_hbwd_premium: [44, 44] - # Earned $1,802.61 → bracket 7 (1751-2000) → $44 - # Unearned $0 → bracket 0 → $0 + # Earned $1,802.61 → 1751-2000 band → $44 + # Unearned $0 → 0-250 band → $0 # Deducting the couple's combined withholding would give 1,710.41 → $38 - name: Case 8, income of exactly $5,000 is in the 4751-5000 band, not the 5000+ band. @@ -132,3 +132,171 @@ # Earned $5,000 → 4751-5000 band → $119 # Unearned $5,000 → 4751-5000 band → $356 # Total: $119 + $356 = $475 + +- name: Case 9, earned income at each band start (251, 501, ..., 5,001) pays that band's premium. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 251, il_hbwd_countable_unearned_income: 0} + person2: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 501, il_hbwd_countable_unearned_income: 0} + person3: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 751, il_hbwd_countable_unearned_income: 0} + person4: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_001, il_hbwd_countable_unearned_income: 0} + person5: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_251, il_hbwd_countable_unearned_income: 0} + person6: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_501, il_hbwd_countable_unearned_income: 0} + person7: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_751, il_hbwd_countable_unearned_income: 0} + person8: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_001, il_hbwd_countable_unearned_income: 0} + person9: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_251, il_hbwd_countable_unearned_income: 0} + person10: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_501, il_hbwd_countable_unearned_income: 0} + person11: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_751, il_hbwd_countable_unearned_income: 0} + person12: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_001, il_hbwd_countable_unearned_income: 0} + person13: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_251, il_hbwd_countable_unearned_income: 0} + person14: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_501, il_hbwd_countable_unearned_income: 0} + person15: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_751, il_hbwd_countable_unearned_income: 0} + person16: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_001, il_hbwd_countable_unearned_income: 0} + person17: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_251, il_hbwd_countable_unearned_income: 0} + person18: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_501, il_hbwd_countable_unearned_income: 0} + person19: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_751, il_hbwd_countable_unearned_income: 0} + person20: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 5_001, il_hbwd_countable_unearned_income: 0} + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10, + person11, person12, person13, person14, person15, person16, person17, person18, person19, person20] + state_code: IL + output: + il_hbwd_premium: [6, 13, 19, 25, 31, 38, 44, 50, 56, 63, 69, 75, 81, 88, 94, 100, 106, 113, 119, 125] + # First column of the chart, bands 251-500 through 5000+. + +- name: Case 10, earned income one dollar below each band start (250, 500, ..., 5,000) pays the lower band's premium. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 250, il_hbwd_countable_unearned_income: 0} + person2: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 500, il_hbwd_countable_unearned_income: 0} + person3: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 750, il_hbwd_countable_unearned_income: 0} + person4: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_000, il_hbwd_countable_unearned_income: 0} + person5: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_250, il_hbwd_countable_unearned_income: 0} + person6: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_500, il_hbwd_countable_unearned_income: 0} + person7: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 1_750, il_hbwd_countable_unearned_income: 0} + person8: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_000, il_hbwd_countable_unearned_income: 0} + person9: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_250, il_hbwd_countable_unearned_income: 0} + person10: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_500, il_hbwd_countable_unearned_income: 0} + person11: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 2_750, il_hbwd_countable_unearned_income: 0} + person12: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_000, il_hbwd_countable_unearned_income: 0} + person13: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_250, il_hbwd_countable_unearned_income: 0} + person14: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_500, il_hbwd_countable_unearned_income: 0} + person15: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 3_750, il_hbwd_countable_unearned_income: 0} + person16: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_000, il_hbwd_countable_unearned_income: 0} + person17: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_250, il_hbwd_countable_unearned_income: 0} + person18: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_500, il_hbwd_countable_unearned_income: 0} + person19: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 4_750, il_hbwd_countable_unearned_income: 0} + person20: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 5_000, il_hbwd_countable_unearned_income: 0} + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10, + person11, person12, person13, person14, person15, person16, person17, person18, person19, person20] + state_code: IL + output: + il_hbwd_premium: [0, 6, 13, 19, 25, 31, 38, 44, 50, 56, 63, 69, 75, 81, 88, 94, 100, 106, 113, 119] + # First column of the chart, bands 0-250 through 4751-5000. + +- name: Case 11, unearned income at each band start (251, 501, ..., 5,001) pays that band's premium. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 251} + person2: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 501} + person3: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 751} + person4: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_001} + person5: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_251} + person6: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_501} + person7: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_751} + person8: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_001} + person9: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_251} + person10: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_501} + person11: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_751} + person12: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_001} + person13: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_251} + person14: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_501} + person15: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_751} + person16: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_001} + person17: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_251} + person18: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_501} + person19: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_751} + person20: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 5_001} + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10, + person11, person12, person13, person14, person15, person16, person17, person18, person19, person20] + state_code: IL + output: + il_hbwd_premium: [19, 38, 56, 75, 94, 113, 131, 150, 169, 188, 206, 225, 244, 263, 281, 300, 319, 338, 356, 375] + # First row of the chart, bands 251-500 through 5000+. + +- name: Case 12, unearned income one dollar below each band start (250, 500, ..., 5,000) pays the lower band's premium. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 250} + person2: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 500} + person3: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 750} + person4: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_000} + person5: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_250} + person6: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_500} + person7: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 1_750} + person8: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_000} + person9: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_250} + person10: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_500} + person11: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 2_750} + person12: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_000} + person13: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_250} + person14: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_500} + person15: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 3_750} + person16: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_000} + person17: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_250} + person18: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_500} + person19: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 4_750} + person20: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 5_000} + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10, + person11, person12, person13, person14, person15, person16, person17, person18, person19, person20] + state_code: IL + output: + il_hbwd_premium: [0, 19, 38, 56, 75, 94, 113, 131, 150, 169, 188, 206, 225, 244, 263, 281, 300, 319, 338, 356] + # First row of the chart, bands 0-250 through 4751-5000. + +- name: Case 13, income with cents stays in the band of its whole-dollar amount. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 250.99, il_hbwd_countable_unearned_income: 0} + person2: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 5_000.99, il_hbwd_countable_unearned_income: 0} + person3: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 250.99} + person4: {il_hbwd_eligible: true, il_hbwd_countable_earned_income: 0, il_hbwd_countable_unearned_income: 5_000.99} + households: + household: + members: [person1, person2, person3, person4] + state_code: IL + output: + il_hbwd_premium: [0, 119, 0, 356] + # $250.99 → 0-250 band; $5,000.99 → 4751-5000 band (IDHS PM 15-04-03 drops cents). + +- name: Case 14, HFS 3792 Example 1, $900 from work and $1,000 from Social Security. + period: 2026-01 + absolute_error_margin: 0.01 + input: + state_code: IL + il_hbwd_eligible: true + il_hbwd_countable_earned_income: 900 + il_hbwd_countable_unearned_income: 1_000 + output: + il_hbwd_premium: 75 + # HFS 3792 (R-03-13), Example 1: the monthly premium is $75. + # Earned $900 → 751-1000 band → $19 + # Unearned $1,000 → 751-1000 band → $56 + # Total: $19 + $56 = $75 diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml index 35d754494fd..5ba4a5bc04f 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml @@ -112,11 +112,13 @@ il_hbwd_employment_eligible: true il_hbwd_eligible: true il_hbwd_income_eligible: true - # Total income after deductions: ~$4,089 + # Countable income: $3,498.62 earned + $400 unearned = $3,898.62 # 350% FPL for single (2024): ~$4,393 # Just under limit → eligible il_hbwd_premium: 100 - # Premium: $100 + # Earned $3,498.62 → 3251-3500 band → $81 + # Unearned $400 → 251-500 band → $19 + # Total: $81 + $19 = $100 - name: Case 5, eligible with high income after exemptions. period: 2024-01 @@ -133,7 +135,7 @@ il_hbwd_employment_eligible: true il_hbwd_asset_eligible: true il_hbwd_income_eligible: true - # Countable income after expenses and exemptions: ~$4,618 + # Countable income after expenses and exemptions: $4,378.95 # With exemptions, now under 350% FPL limit il_hbwd_eligible: true @@ -157,9 +159,9 @@ # Income calculation il_hbwd_gross_earned_income: 1_000 il_hbwd_countable_income: 2_349.95 - # Earned after expenses and exemptions: ~$850 + # Earned after expenses and exemptions: $849.95 # Unearned: $1,500 - # Total: ~$2,349.95 + # Total: $2,349.95 il_hbwd_premium: 113 # Earned $849.95 → 751-1000 band → $19 # Unearned $1,500 → 1251-1500 band → $94 diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 0cdadb96606..a963a98e40b 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2167,7 +2167,7 @@ candidates: - id: us-il:hbwd-premium-earned-1251-unearned-501-cell program: medicaid years: - from: 2022 + from: 2009 type: calendar question: Is the Illinois Health Benefits for Workers with Disabilities premium for countable earned income of $1,251-1,500 and gross unearned income of $501-750 $79, as 89 Ill. Adm. Code 120.510(n)(3) prints, or $69, as @@ -2177,12 +2177,17 @@ candidates: citation: 89 Ill. Adm. Code 120.510(n)(3) url: https://ilga.gov/commission/jcar/admincode/089/089001200I05100R.html - kind: form - citation: HFS HBWD Premium Chart (one page) + citation: HFS HBWD Premium Chart (one page, June 2009) url: https://hfs.illinois.gov/content/dam/soi/en/web/hfs/medicalprograms/hbwd/documents/hfsweb004.pdf - readings: - statute: No statute is supplied; the regulation's table (amended effective March 25, 2022) prints 79 for earned - income 1251-1500 and unearned income 501-750. - other: The HFS premium chart prints 69 for the same cell, which PE-US gives (31 + 38). + - kind: guidance + citation: HFS 3792 (R-03-13), Health Benefits for Workers with Disabilities brochure, premium table + url: https://hfs.illinois.gov/medicalprograms/hbwd/hfs3792hbwd.html + readings: + statute: No statute is supplied; the regulation's table prints 79 for earned income 1251-1500 and unearned + income 501-750, in the text effective February 1, 2009 (33 Ill. Reg. 1681) and unchanged by the amendment + effective March 25, 2022 (46 Ill. Reg. 5705). + other: The HFS premium chart (June 2009) and the HFS 3792 brochure print 69 for the same cell, which PE-US + gives (31 + 38). example: Countable earned income of $1,300 and gross unearned income of $600 a month give a $79 premium under the regulation and a $69 premium under the chart and in PE-US. pe_us: @@ -2194,11 +2199,14 @@ candidates: prs: - https://github.com/PolicyEngine/policyengine-us/pull/10372 state: unreviewed - note: 'PE-US gives the chart''s 69 because it adds an earned component (31) and an unearned component (38). The two - sources are a regulation and an agency form, with no statute, so the statute-first rule does not settle the cell. - The regulation''s row reads 31, 50, 79, 87, 106, and every neighbouring cell steps by about $19, so 79 may be a - typesetting error. The other 440 cells of the two sources agree. Issue 10471 proposes encoding the full table, - which needs this ruling first.' + note: 'PE-US gives the chart''s 69 because it adds an earned component (31) and an unearned component (38). The + sources are a regulation and two agency publications, with no statute, so the statute-first rule does not settle + the cell. CONTRIBUTING treats a regulation as binding ("Regulations are law"), which favours 79; the agency + tie-break applies only where the text and the canons do not settle a reading. Against 79: the regulation''s row + reads 31, 50, 79, 87, 106 (steps of about $19 elsewhere), and its column reads 63, 79, 76 for earned income + 1001-1250, 1251-1500 and 1501-1750, so under 79 more earned income would lower the premium; the agency''s chart + and brochure print 69. The ruling decides whether 79 binds or is a scrivener''s error. The other 440 cells of the + regulation and the chart agree. Issue 10471 proposes encoding the full table, which needs this ruling first.' - id: us-il:joint-childless-eitc-dependency-skip program: income-tax years: From b3a2fbf23f64ae9a5eb702d8a26c3e87cdabff4a Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 27 Oct 2026 15:21:34 -0400 Subject: [PATCH 5/5] Record the ruling for the Illinois HBWD 79-or-69 premium cell The project lead ruled for the regulation's 79 on 2026-10-27. The candidate is now ruled, with PE-US marked as giving the conflicting source's 69 until issue 10471 encodes the full premium table. Co-Authored-By: Claude Opus 5.5 --- source_conflicts/candidates.yaml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 7b8413354ff..8b36bed506f 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -2191,22 +2191,21 @@ candidates: example: Countable earned income of $1,300 and gross unearned income of $600 a month give a $79 premium under the regulation and a $69 premium under the chart and in PE-US. pe_us: - follows: unknown + follows: conflicting-source code: - policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml - policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml - policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py prs: - https://github.com/PolicyEngine/policyengine-us/pull/10372 - state: unreviewed - note: 'PE-US gives the chart''s 69 because it adds an earned component (31) and an unearned component (38). The - sources are a regulation and two agency publications, with no statute, so the statute-first rule does not settle - the cell. CONTRIBUTING treats a regulation as binding ("Regulations are law"), which favours 79; the agency - tie-break applies only where the text and the canons do not settle a reading. Against 79: the regulation''s row - reads 31, 50, 79, 87, 106 (steps of about $19 elsewhere), and its column reads 63, 79, 76 for earned income - 1001-1250, 1251-1500 and 1501-1750, so under 79 more earned income would lower the premium; the agency''s chart - and brochure print 69. The ruling decides whether 79 binds or is a scrivener''s error. The other 440 cells of the - regulation and the chart agree. Issue 10471 proposes encoding the full table, which needs this ruling first.' + state: ruled + note: 'Ruled 2026-10-27 for the regulation''s 79 by the project lead for the Medicaid fixes; the ruling record is + https://github.com/PolicyEngine/policyengine-us/pull/10372#issuecomment-6451385205. Under "Regulations are law" the + regulation binds, and the written canons have no exception for an apparent typesetting error, so the 69 in the + HFS chart and the HFS 3792 brochure does not override it. PE-US gives 69 because its premium adds an earned + component (31) and an unearned component (38), which cannot represent a cell that departs from that sum. Issue + 10471, which encodes the full 21 x 21 table, will make PE-US follow the ruling. The other 440 cells of the + regulation and the chart agree.' - id: us-il:joint-childless-eitc-dependency-skip program: income-tax years: