Skip to content

Decide Washington Cascade Care Savings eligibility on the exact FPL ratio - #10314

Draft
MaxGhenis wants to merge 1 commit into
mainfrom
wa-cascade-care-savings-exact-fpl-ratio
Draft

MaxGhenis wants to merge 1 commit into
mainfrom
wa-cascade-care-savings-exact-fpl-ratio

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Draft. Done: the fix and YAML cases. Pending: full-file impact, Axiom parity line, GPT-6.1 Sol review.

Bug

wa_cascade_care_savings_eligible compared the truncated aca_magi_fraction (np.floor(100 * magi / fpg) / 100) with <= 2.5. Truncation maps every income from 250.00% to 250.99% of the poverty line to 2.50, so all of them passed. WAHBE's PY2026 Cascade Care Savings Policy, Section 4(1)(c) makes an individual an eligible enrollee who "Has income up to 250% of the Federal Poverty Level"; the PY2027 policy keeps the same words. RCW 43.71.110(4)(a)(ii) leaves the threshold to the appropriation or the exchange. No source prescribes truncating the percentage.

"Up to 250%" leaves exactly 250% open to either reading. The model already treats it as inclusive and this PR keeps that. Income above 250% is not "up to 250%" on any reading, so the truncation sliver is unambiguous.

Executed on main (645fcd3; the file is unchanged at 740e1eb), single filer in Washington, 2026, 2025 one-person guideline $15,650, Group 1 member:

Income Exact % of FPL aca_magi_fraction Eligible on main Eligible here
$39,125 250.000% 2.50 yes yes
$39,125.47 250.003% 2.50 yes no
$39,280.56 250.994% 2.50 yes no
$39,281.50 251.000% 2.51 no no

The end-to-end run (wages only, nothing supplied) gave the same results, since the federal credit continues to 400%.

Fix

Decide eligibility on the exact ratio max(aca_magi, 0) / tax_unit_fpg(period.last_year), the pattern of #10305. Nothing else in Cascade Care Savings reads the fraction. The fpl_limit comment now says the limit applies to the exact ratio.

Invariants

For every input, with the program in effect and a Group 1 or Group 3 member:

  1. Band = policy. Eligible if and only if r <= 2.5, r = max(MAGI, 0) / FPG(prior year).
  2. Only the sliver changes. Relative to main, eligibility can only be lost, and only for r in (2.50, 2.51), so wa_cascade_care_savings can only fall. Deduced: floor(100r)/100 <= 2.5 holds exactly when r < 2.51.

No Hypothesis test is added: the gate is one comparison on a ratio, and the YAML cases hit the limit, 0.003 and 0.994 points above it. The repo's test-design rules keep such cases in YAML.

Tests

  • All cases in wa_cascade_care_savings_eligible.yaml, wa_cascade_care_savings.yaml and integration.yaml that supplied aca_magi_fraction now supply aca_magi against a prior-year tax_unit_fpg of $10,000, so each still drives the gate (the gate no longer reads the fraction; nothing else in these files did). The derived fraction outputs are unchanged.
  • New income-derived cases with the real guideline: $39,124 (249.994%) and $39,125 (250%) eligible; $39,125.47 (250.003%) and $39,280.56 (250.994%) ineligible.
  • Mutation check: main's gate fails exactly the two new above-limit cases.
  • Local differential sweep (a script, not committed, per the repo's test-design rules): 256 tax units per year, 60% with income in cents within $2 of an edge and the rest uniform, guidelines $10,000-$80,000 including $20 multiples, comparing the eligibility gate with an exact-rational reading of the source on the float32 values the model receives. 0 mismatches here; on main the same draws give 58 mismatches, all in the truncation sliver.
  • Local run: the Cascade Care Savings YAML folder, 73 passed.

Impact

Pending: full-file microsimulation via the US hub impact queue, 2026 and 2027.

Coordination

#10041 (draft) edits wa_cascade_care_savings.yaml and two other files in this folder and changes aca_magi_fraction's denominator to a new aca_fpg; if it lands, this gate's exact ratio should use the same denominator. Part of the aca_magi_fraction audit (table: #10329) begun with #10305; federal edge in #10312.

axiom: pending

🤖 Generated with Claude Code

WAHBE's PY2026 and PY2027 Cascade Care Savings policies cover an enrollee
who "has income up to 250% of the Federal Poverty Level" (Section
4(1)(c)). The gate compared the truncated aca_magi_fraction with 2.5, so
every income from 250.00% to 250.99% passed. Test the exact ratio of
nonnegative ACA MAGI to the prior-year guideline instead. Exactly 250%
stays eligible, as before.

Tests that supplied aca_magi_fraction now supply aca_magi against a
prior-year guideline of $10,000, since the gate no longer reads the
fraction; new cases use the real 2025 guideline at the edge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

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.

1 participant