Repository navigation
Follow the adopted California Premium Subsidy design at the 150% FPL boundary - #10301
Conversation
Gov. Code 100800(c) delegates the state premium subsidy design to the Covered California Board. The adopted 2026 Program Design runs its bands "100% up to 150%" (0%) and "Above 150% up to 165%"; the 2026 Policy Explainer labels the upper band "150% - At or Below 165%". The model now puts a fraction equal to a threshold in the lower band (searchsorted side="left"), keeping the existing whole-percentage FPL truncation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r1 P3s: searchsorted comments now say side="left"; Case 13 explains the continuous rate at 165% in 2027; Case 2b tests 1.505 instead of duplicating Case 7; a new case derives 150.49% from wages and shows the truncated fraction pays 0%; the threshold comment notes the truncation is the federal form's gap-fill; the eligibility test header matches the formula's FPL-band description. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hand-off to the US + core hub (statute-first backlog session).
|
PR Review: Follow the adopted California Premium Subsidy design at the 150% FPL boundarySummaryCompared with main, the PR makes one change. Exactly 150% of the prior-year FPL now pays 0% instead of the starting rate of the next band (3.19% in 2026, 2.69% in 2027). To do this, the formula picks the band from the exact ratio There are two problems:
The Axiom issue also no longer matches the head. Critical (must fix)1. The 2027 expectations pin a superseded placeholder schedule (wrong result in a claimed year)
This affects every 2027 enrollee between 150% and 200%, not just the boundary.
Should address1. The conflict at exactly 150% is decided but not recorded under the source-conflict process
2. Axiom issue rulespec-us#1832 does not match the head
3. The PR body misstates the baseline and is stale
Suggestions
Verified correct
Hand-checks (13) All of these match the head's formula. The 2026 results also match the adopted design. The 2027 results match the head's V4 parameters but not the Final Design (Critical 1).
Axiom line assessmentThe line reads It does not match the head:
Not valid until the body is updated (Should 2, and Critical 1 for 2027). CI status
Branch status
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
The 2026 boundary matches the adopted Design (d)(4), the exact-band plus truncated-lookup split matches FTB 3849, and the prior-year FPL is right. One critical: the 2027 cases and claims pin the V4 placeholder schedule (2.69/3.41/5.1, under 200%), but the Final 2027 Design has 2.8% to 5.28% above 150% through 200%, with 200% eligible. Either fix 2027 here or drop the 2027 claims. Three should-address items: record the decided at-150% conflict, bring rulespec-us#1832 up to date with the head, and correct the PR body's 'remains at 0%' (main gives 3.19%). Three suggestions. Full report in the comment above.
|
David, thanks. This answers your 10-22 review at
Main is merged, and fresh CI is running. An independent delta review is queued, and the hub is rerunning the microsimulation impact on the new head. The rulespec-us#1832 parity issue is corrected as well: the 2026 raw-income control ($23,569 gives 3.19%, not 0) and the 2027 pointer. |
PR Review (round 2): Follow the adopted California Premium Subsidy design at the 150% FPL boundarySummaryThis round covers one author commit (cc1af12) and a clean merge of main. It resolves every round-1 finding in this PR's own code and tests:
I fetched the Final 2027 Program Design again. The one 2027 expectation left (Case 16a: 0% at exactly 150%) agrees with it. CI is 27/27 green at the head, and the source-conflict ratchet passes on a tree merged with current main. One new Should remains. The PR body, the author's reply and rulespec-us#1832 all say #10305 moves 2027 to the Final Design with 200% included. At its current head, #10305 does neither: it keeps the V4 rates and makes exactly 200% ineligible. So nothing on GitHub owns main's wrong 2027 schedule today, though this PR and the Axiom issue say something does. Prior findings
New findingsCriticalNone. Should address1. The 2027 hand-off to #10305 doesn't hold at #10305's head
Suggestions
Verified
Hand-checks (every new or changed expectation, plus the requested boundaries)
Every ratio is mid-band or clips to the same bracket, so float32 storage of the pinned FPGs cannot change which band a case falls in. Axiom line assessmentThe line reads Its 2027 instruction defers to #10305 for the Final Design and inclusive 200%, which #10305 does not contain (Should 1). The line is valid for the behaviour this PR changes once that pointer is corrected. CI status
Branch status
Verdict: REQUEST_CHANGES |
DTrim99
left a comment
There was a problem hiding this comment.
Round 2: the round-1 critical is fixed (the V4 2027 cases and claims are gone, and the remaining 2027 case matches the Final Design), and so are all three should items and both suggestions. One new should-address item: the body, your reply and #1832 say #10305 moves 2027 to the Final Design with 200% included, but #10305's head still has V4's 2.69/3.41/5.1 and makes exactly 200% ineligible, so main's wrong 2027 schedule has no owner. Please push the Final schedule to #10305 or a new PR, or open an owning issue and repoint the body and #1832. Two small suggestions. Full report in the comment above.
|
Thanks. Round 2's Should 1 is taken as your option (a), with the pointers corrected in the meantime. No code changes here.
🤖 Generated with Claude Code |
Conflicts in ca_premium_subsidy.yaml Cases 4 and 11: keep this branch's whole-dollar boundary incomes ($25,822.50 and $15,650) and pin the 2025 FPG at $15,650, following #10301's FPG pinning. Drop this branch's duplicate ca_premium_subsidy_eligible input in Case 6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Final 2027 Program Design replaces the V4 schedule this model carried: (d)(4) has one paying band, "Above 150% up to 200%", from 2.8% to 5.28% (V4: 2.69%-3.41% to 165%, then 3.41%-5.1%), and (d)(7) makes household income "at or below 200 percent" eligible (V4: "under 200 percent"). - Thresholds [1, 1.5, 2.0], initial [0, 0.028], final [0, 0.0528]. - Both years' limits are inclusive, so drop fpl_limit_inclusive and test the exact ratio with <=. - The OE27 enroller deck's summary slide says "up to under 200% FPL" while its own 200% example applies 5.28%; follow (d)(7) and record candidate us-ca:premium-subsidy-200-fpl-limit. - Rate, amount and eligibility cases move to the Final Design, including the deck's $31,920 example (5.28%, $478.80 a year) and incomes that truncate to 2.00 but exceed 200%; the property tests read 2027 as inclusive and #10301's rate properties now cover 2027. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Follow-up on Should 1: #10305 now carries the Final 2027 schedule at 🤖 Generated with Claude Code |
Every point in this round-2 review is fixed or answered: the 2027 schedule now has an owner in #10305 at 1238297, which the body and rulespec-us#1832 point to, and both suggestions are done (#10301 (comment), #10301 (comment)). No point is left that needs a reviewer to adjudicate (we hold for a human review only when one does), so I'm dismissing this review and landing on the other gates: green CI at the head, and an independent review that approved cc1af12. Thanks for both rounds.
|
US + core hub merge audit, us#10301 at
|
Main now has #10301 squashed (81056c4) at #10301's final head cc1af12, which this branch already contains. Five files conflicted: - ca_premium_subsidy.yaml, ca_premium_subsidy_applicable_percentage.yaml, test_ca_premium_subsidy_applicable_percentage.py and ca_premium_subsidy_applicable_percentage.py: main's versions equal cc1af12's exactly, so this branch's side already includes them; took this branch's side. - source_conflicts/candidates.yaml: one hunk, this branch's new us-ca:premium-subsidy-200-fpl-limit candidate against nothing on main; kept it. Main's other candidate edits (#10315's Minnesota entry, #10350-#10352, #10441, #10444) auto-merged unchanged. Against main, the merged tree differs only in this PR's files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t the Final 2027 design (#10305) * Follow the adopted CA Premium Subsidy design at the 150% FPL boundary Gov. Code 100800(c) delegates the state premium subsidy design to the Covered California Board. The adopted 2026 Program Design runs its bands "100% up to 150%" (0%) and "Above 150% up to 165%"; the 2026 Policy Explainer labels the upper band "150% - At or Below 165%". The model now puts a fraction equal to a threshold in the lower band (searchsorted side="left"), keeping the existing whole-percentage FPL truncation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Tidy CA premium subsidy tests and pin the FPL truncation (review r1) Review r1 P3s: searchsorted comments now say side="left"; Case 13 explains the continuous rate at 165% in 2027; Case 2b tests 1.505 instead of duplicating Case 7; a new case derives 150.49% from wages and shows the truncated fraction pays 0%; the threshold comment notes the truncation is the federal form's gap-fill; the eligibility test header matches the formula's FPL-band description. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Pin truncation, not rounding, in the CA 150% income case (review r2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Select California premium subsidy bands from exact income * Document exact California subsidy boundaries and lookup rounding * Decide CA Premium Subsidy eligibility on the exact FPL ratio ca_premium_subsidy_eligible compared the truncated aca_magi_fraction with <= 1.65, so every PY2026 income from 165.003% to 165.994% of FPL passed an "at or below 165 percent" test (Program Design (d)(7)). Compare the exact ratio of nonnegative ACA MAGI to prior-year FPG instead, as FTB 3849 Table 1-2 does for the predecessor program's band edges. The PY2027 limit was 1.99 on the truncated fraction, which equals "under 200 percent" only under truncation. Express it as 2.0 with a new fpl_limit_inclusive parameter (true in PY2026, false in PY2027), the same pattern as NM's benchmark_gross_up.boundary_inclusive. Tests: boundary cases from derived income at $25,822.50 / $25,823 / $25,978 / $25,979 (PY2026) and $26,335 / $31,919 / $31,920 (PY2027); supplied cases now set aca_magi and prior-year FPG instead of the fraction; a Hypothesis differential test against an exact-rational reading of (d)(7). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Add 100% floor cases from derived income; merge duplicate reference Cases 1b and 2b test the PY2026 floor at $15,649 (99.994%, ineligible) and $15,650 (exactly 100%, eligible) of the 2025 one-person FPG, so the PE tests mirror the companion cases added to rulespec-us#1832. The two 2026 Program Design references differed only by #page=, so they become one entry per the repo's reference rules. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Divide in float64; make the property test cache-safe The model stores MAGI and FPG as float32. A float32 quotient can round a ratio a fraction of a cent above 165% of a fractional guideline down to 1.65 (e.g. $18,711.599609375 over $11,340.36328125), so the gate now divides in float64. On float32 inputs that classifies every ratio exactly against 1.00, 1.65 and 2.00. The property test built one simulation per year and reused it, deleting only the output array, so derived intermediates could stay cached across Hypothesis examples. It now builds a fresh simulation per example. Its reference reads (d)(7) on the stored float32 values, the generator adds fractional guidelines and incomes a few float32 steps from each edge, and explicit examples cover the float32 counterexamples and a 72-person household at exactly 166% that main's float32 truncation misrounds to 165.99%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Address California premium subsidy reviews and record the 150 percent source conflict * Move PY2027 to the Final 2027 California Premium Subsidy Program Design The Final 2027 Program Design replaces the V4 schedule this model carried: (d)(4) has one paying band, "Above 150% up to 200%", from 2.8% to 5.28% (V4: 2.69%-3.41% to 165%, then 3.41%-5.1%), and (d)(7) makes household income "at or below 200 percent" eligible (V4: "under 200 percent"). - Thresholds [1, 1.5, 2.0], initial [0, 0.028], final [0, 0.0528]. - Both years' limits are inclusive, so drop fpl_limit_inclusive and test the exact ratio with <=. - The OE27 enroller deck's summary slide says "up to under 200% FPL" while its own 200% example applies 5.28%; follow (d)(7) and record candidate us-ca:premium-subsidy-200-fpl-limit. - Rate, amount and eligibility cases move to the Final Design, including the deck's $31,920 example (5.28%, $478.80 a year) and incomes that truncate to 2.00 but exceed 200%; the property tests read 2027 as inclusive and #10301's rate properties now cover 2027. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Divide the CA Premium Subsidy band ratio in float64 The model stores aca_magi and tax_unit_fpg as float32. Their float32 quotient can round an exact ratio just above 150% of a fractional FPG down onto 1.5, which side="left" then puts in the 0% band. Divide in float64, as the eligibility gate already does, and add a float32 regression test for both plan years. Whole-dollar FPGs pick the same band either way. Amount Case 19 supplies aca_ptc at the official Rev. Proc. 2026-26 credit. Say why in the case: the federal parameters still carry the 2026 applicable percentages into 2027, so a derived credit would use 6.60% instead of 6.78% at 200% FPL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Derive Case 19's federal credit from the 2027 table Main now carries the federal 2027 applicable percentage table (#10443, Rev. Proc. 2026-26), which gives 6.78% at exactly 200% FPL. Case 19 no longer supplies aca_ptc; it derives it and pins the federal credit, 8,256 - 0.0678 * 31,920 = 6,091.824, as an output. The state subsidy stays 478.80. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
California Premium Subsidy now selects the income band from exact household income as a share of prior-year FPL, then uses the existing truncated FPL fraction to calculate the rate within that band. Compared with main, the only behavioral change is at exactly 150% FPL. In 2026 that rate moves from 3.19% to 0%, increasing the annual subsidy by up to $748.85 for a single filer with $23,475 of ACA MAGI ($23,475 × 0.0319 = $748.8525), subject to the premium and residual-subsidy caps. Incomes immediately above 150% still enter the 3.19% band. The same boundary applies in 2027, where main's 2.69% at exactly 150% becomes 0%: $23,940 against FPG of $15,960 gives up to $643.99 a year before caps (Case 16a). The rest of the 2027 schedule, the Final Design's 2.8%–5.28% band and inclusive 200% limit, is #10305's: its head
1238297ebf(a draft stacked on this PR, independent review pending) adopts it.Rule and rounding
max(aca_magi, 0) / tax_unit_fpg(period.last_year)to choose the band withsearchsorted(..., side="left"), and retainsaca_magi_fractionfor interpolation within that band. A 2026 single filer with $23,569 of ACA MAGI has income of 150.6006% FPL, enters the upper band, and has a 3.19% rate: a $751.85 annual contribution. Exactly $23,475 gives 0%; $23,477 gives 3.19%.Source conflict
The adopted 2026 Design, (d)(4), PDF p.2 starts the paying tier above 150% FPL. Covered California's OE27 enroller deck, PDF p.40 instead applies 2.80% to an illustrative household at exactly 150% FPL ($23,940). The Final 2027 Design, (d)(4), PDF p.2 also starts its paying tier above 150%.
This PR follows the adopted Design's 0% treatment at exactly 150%, recorded as
us-ca:premium-subsidy-150-fpl-boundary. A conflict comment in the deciding code and a candidate insource_conflicts/candidates.yamlrecord the opposing sources, affected code, and PR #10301. The source-conflict ratchet records one unmarked conflict comment in sortedKNOWN_UNMARKEDorder. Registration in rulespec-us, the registered marker, and the corresponding pin update remain follow-up work under the source-conflict protocol.Validation
CI passed 27/27 checks at the head
cc1af12cd1e9ae88ee8e02e273313ea49d65b45f(run 39897425796, started 2026-10-23 03:53 UTC, after the source-conflict ratchet reachedmain).Updated local results at
cc1af12cd1e9ae88ee8e02e273313ea49d65b45f, with each test file run in its own foreground process and numerical-library threads capped at four:ca_premium_subsidy_applicable_percentage.yamlca_premium_subsidy_eligible.yamlca_premium_subsidy.yamlintegration.yamltest_source_conflicts.pytest_ca_premium_subsidy_applicable_percentage.pymake format)All 177 local cases passed. The properties call the registered formula on small arrays without constructing Simulations. The new rate expectations cover the 2026 boundary at exactly 150%, immediately above 150%, 150.6%, and both sides of 151%. Hypothesis checks zero through 150%, the upper-band starting rate, monotonicity, and continuity at the other band joins. The lookup retains the existing small steps caused by whole-percentage truncation. The subsidy cases now pin FPG so their income and supplied fraction agree.
Hub microsimulation impact (current head)
A real microsimulation on the default dataset, main at the merge base
1da4af0f2fagainst this PR's headcc1af12cd1, for 2026 and 2027. The runs went one at a time under the shared heavy-job lock. Sums are weighted.ca_premium_subsidyassigned_ca_premium_subsidyhealthcare_benefit_valuehousehold_net_income_including_health_benefitsstate_income_taxincome_taxhousehold_net_incomehousehold_benefitsNo default-dataset record's subsidy changes in either year, so no record that receives the subsidy sits exactly at 150% of prior-year FPG; the per-household maximum above is an arithmetic check, not a population estimate.
Comparison files are in
fixes/10301-impact/on the hub host.Known follow-up
#10305 covers the exact-ratio eligibility gate and, from its head
1238297ebf(a draft stacked on this PR), the Final 2027 schedule: thresholds[1, 1.5, 2.0], rates 0% and 2.8%–5.28%, and an inclusive 200% limit on the exact ratio. The existing 2026 gate compares a truncated fraction with<= 1.65, admitting some incomes above the adopted 165% cap. The 2026 Design, (d)(7), PDF p.2 includes exactly 165% and excludes income above it. For 2027, the Final Design, (d)(4) and (d)(7), PDF p.2 requires 2.8%–5.28% above 150% through 200%, with exactly 200% eligible. Those parameters are outside this PR's scope; the new 2027 cases asserting the superseded paying rates and their claims have been removed.axiom: TheAxiomFoundation/rulespec-us#1832 queued (pe-parity; every provision needs encoding). Parity updated on #1832 (2026-10-23): wages of $23,569 against prior-year FPG of $15,650 give 3.19%; $23,475 gives 0%; $23,477 gives 3.19%. The exact ratio selects the band, truncation supplies the rate lookup, and the Final 2027 schedule is #10305's (head
1238297ebf, draft).