Skip to content

Follow the adopted California Premium Subsidy design at the 150% FPL boundary - #10301

Merged
MaxGhenis merged 8 commits into
mainfrom
statute-first-ca-premium-subsidy
Oct 26, 2026
Merged

MaxGhenis merged 8 commits into
mainfrom
statute-first-ca-premium-subsidy

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

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

  • The adopted 2026 Program Design, (d)(4), PDF p.2 places income through 150% FPL in the 0% band and income above 150% through 165% in the 3.19%–3.91% band.
  • The Design leaves rounding unspecified. California's predecessor-program 2020 FTB 3849 instructions, Table 1-2, PDF p.6 and 2021 instructions, same table and PDF page distinguish exact percentages above a boundary before truncating for the lookup. Their above-200%-but-below-201% row enters 200 for the table while continuing through the eligible branch. This PR applies that California convention to the rate lookup.
  • The 2025 Form 8962 instructions, Worksheet 2 line 4, PDF p.9 similarly compare income with four times FPL before truncating on the other branch. The citation now uses the fixed prior-year copy.
  • The formula uses max(aca_magi, 0) / tax_unit_fpg(period.last_year) to choose the band with searchsorted(..., side="left"), and retains aca_magi_fraction for 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 in source_conflicts/candidates.yaml record the opposing sources, affected code, and PR #10301. The source-conflict ratchet records one unmarked conflict comment in sorted KNOWN_UNMARKED order. 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 reached main).

Updated local results at cc1af12cd1e9ae88ee8e02e273313ea49d65b45f, with each test file run in its own foreground process and numerical-library threads capped at four:

Check Result
ca_premium_subsidy_applicable_percentage.yaml 22 passed
ca_premium_subsidy_eligible.yaml 21 passed
ca_premium_subsidy.yaml 18 passed
integration.yaml 8 passed
test_source_conflicts.py 103 passed
test_ca_premium_subsidy_applicable_percentage.py 5 passed
Ruff formatting and lint passed (make 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 1da4af0f2f against this PR's head cc1af12cd1, for 2026 and 2027. The runs went one at a time under the shared heavy-job lock. Sums are weighted.

Output 2026 change 2027 change 2026 records changed (weighted) 2027 records changed (weighted)
ca_premium_subsidy +0 +0 0 (0) 0 (0)
assigned_ca_premium_subsidy +0 +0 0 (0) 0 (0)
healthcare_benefit_value +0 +0 0 (0) 0 (0)
household_net_income_including_health_benefits +0 +0 0 (0) 0 (0)
state_income_tax +0 +0 0 (0) 0 (0)
income_tax +0 +0 0 (0) 0 (0)
household_net_income +0 +0 0 (0) 0 (0)
household_benefits +0 +0 0 (0) 0 (0)

No 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).

MaxGhenis and others added 3 commits October 19, 2026 23:29
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>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 20, 2026 03:44
@MaxGhenis

MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor Author

Hand-off to the US + core hub (statute-first backlog session).

  • Head: a5d51e415c3b5fcde630d965a2ca67b6c3f692ae
  • Independent review: GPT-6.1 Sol, r3 APPROVE at this head. Reviews: ~/reviews/us-hub/source-conflicts/backlog/reviews/10301-r*.md.
    • Correction (2026-10-20): dispatched without -s workspace-write, so the lane was read-only: all three rounds (r1 to r3) were served by Opus 5.5 in plan mode with no shell, not by GPT-6.1 Sol; they read files but ran no diff or tests. No review executed the tests. Treat these as reading reviews, not the landing gate; the hub has dispatched a shell-backed GPT-6.1 Sol review of this PR.
  • Passed locally: the targeted YAML files and Hypothesis invariants named in the PR body (single-file runs, mutation-checked).
  • Pending: CI (queued in the Actions backlog); the impact run, after the route-a hold (2026-10-21 04:00Z); the Axiom parity issue. The parity audit found every provision needs encoding. The dispatch-ready issue body is drafted at ~/reviews/us-hub/source-conflicts/backlog/parity/draft-CA-10301.md for filing under the standing parity go, which also sets the axiom: line here.
  • Depends on: nothing.
  • Follow-ups owed after merge: register the squash commit in rulespec-us known-source-conflicts.yaml (once rulespec-us#1825 lands), then a follow-up PE-US PR with the # Source conflict marker, the pin bump and the candidates.yaml deletion, per HUB-PROTOCOL.

@DTrim99

DTrim99 commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Follow the adopted California Premium Subsidy design at the 150% FPL boundary

Summary

Compared 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 max(aca_magi, 0) / tax_unit_fpg(period.last_year) using side="left", and keeps the truncated aca_magi_fraction for the rate within the band. For 2026 this matches the Board-adopted 2026 Program Design, and the split between an exact band test and a truncated lookup follows FTB 3849 Table 1-2. The code is clean, the boundary tests are thorough, and every 2026 expectation I checked is right.

There are two problems:

  • 2027 rates. The PR claims 2027 results and adds five new 2027 expectations. They pin the V4 placeholder schedule (2.69%/3.41%/5.1%, under 200%). Covered California has since finalized the 2027 Design at 2.8% to 5.28% for incomes above 150% up to 200%, with 200% itself eligible.
  • Unrecorded source conflict. The PR settles a conflict between the Design text and Covered California's own materials at exactly 150% without recording it. This includes a 2027 enroller example that charges 2.80% at exactly 150% FPL.

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)

  • Files:
    • ca_premium_subsidy_applicable_percentage.yaml, new Cases 16b–16e (2.69% and 2.738%).
    • tests/unit/test_ca_premium_subsidy_applicable_percentage.py: the (2027, 0.0269) parametrization and the 2027 knot at 1.65.
    • The changelog and PR body: "the adopted 2027 Design … 2.69%–3.41%".
    • The new V4 reference in ca_premium_subsidy_applicable_percentage.py.
  • Root cause: inherited from main's 2027 values in applicable_percentage/{threshold,initial,final}.yaml and fpl_limit.yaml. This PR restates them as adopted law and adds new tests that lock them in.
  • The operative 2027 design. On June 18, 2026 the Board approved V4 "and direction to finalize the program design document contingent upon passage of the State Budget for Fiscal 2026-27 and the release of the 2027 required contribution percentages by the Internal Revenue Service" (June 18, 2026 Policy and Action, PDF p.38; minutes, PDF p.7). The design is "1.5 percentage points less than the federal required contribution amount for individuals with incomes between 150 and 200% FPL" (same deck, PDF p.36).
    • V4's 2.69/3.41/5.1 are the 2026 IRS figures (4.19/4.91/6.6) minus 1.5.
    • Rev. Proc. 2026-26 then set the 2027 federal table at "At least 150% but less than 200%: 4.3% / 6.78%".
  • The finalized document. The Final 2027 Program Design, (d)(4), PDF p.2 reads: "100% up to 150%: 0% / 0%" and "Above 150% up to 200%: 2.8% / 5.28%". Its (d)(7) reads: "at or above 100 percent and at or below 200 percent of the federal poverty level".
  • Corroboration:
  • Wrong 2027 results at the head (single filer):
Income Head Final Design
$24,036 (150.6%) 2.69% ($646.57) 2.80% ($673.01)
157.5% (Case 12) 3.05% 3.172%
182.5% (Case 14) 4.255% 4.412%
Exactly 200% ineligible eligible at 5.28%

This affects every 2027 enrollee between 150% and 200%, not just the boundary.

  • Fix, either option:
    • (a) Update 2027 here:
      • Set threshold [1, 1.5, 2.0], initial [0, 0.028], final [0, 0.0528], and an inclusive 200% upper bound tested on the exact ratio (coordinate with Decide CA Premium Subsidy eligibility on the exact FPL ratio and adopt the Final 2027 design #10305).
      • Cite the Final Design and the June 18 action.
      • Re-derive the 2027 expectations: 16b/16c/16d → 0.028; 16e (truncated 1.51) → 0.028496; Case 12 → 0.03172; Case 13 (1.65) → 0.03544; Case 14 → 0.04412; Case 15 (1.99) → 0.052304.
      • Change the Hypothesis 2027 starting rate to 0.028.
    • (b) Drop the 2027 claims and cases from this PR and land the 2027 schedule in its own PR first. Either way, new tests should not pin V4 values.

Should address

1. The conflict at exactly 150% is decided but not recorded under the source-conflict process

  • Where it is decided: threshold.yaml comment and ca_premium_subsidy_applicable_percentage.py (the searchsorted(..., side="left") line). Both say "the model follows the adopted design".
  • Design side: 2026 Design (d)(4), PDF p.2 has "100% up to 150%" at 0% and "Above 150% up to 165%". The Final 2027 Design has the same shape.
  • Agency side, consistently:
    • 2026 Policy Explainer, Table 1, PDF p.2: "150% – At or Below 165%: 3.19% – 3.91%*".
    • The 2027 Insight, Table 1: "150% – At or Below 200%".
    • The OE 2027 Enroller Kick-off deck, PDF p.40 works the example at exactly 150% FPL: "$23,940 … $688 … $633 … $55". That is $23,940 × 2.80% / 12 = $55.86, the paying band. It adds: "For individuals at 150% of the FPL, the required contribution percentage decreases from 4.30% to 2.80%".
    • This also matches the federal convention ("At least 150%").
    • I could not run Covered California's Shop and Compare calculator. The enroller example is the closest available evidence of agency practice.
  • Recommendation:
    • Keep the PR's reading. The Design is the Board-adopted instrument under Gov. Code 100800(c). It is internally consistent: "up to 165%" pairs with (d)(7)'s "at or below 165 percent", so "up to" is inclusive, and "Above 150%" excludes 150% itself.
    • Record the conflict in this PR with a source_conflicts/candidates.yaml entry, for example us-ca:premium-subsidy-150-fpl-boundary:
    • Alternatively, register the conflict in rulespec-us and add the # Source conflict us-ca:<id> marker on the deciding line.
    • Main has no CA premium-subsidy candidate. The hand-off plan to "delete" one later means nothing records this conflict today. Also note in the body that Covered California's own 2027 example charges 2.80% at exactly 150%.

2. Axiom issue rulespec-us#1832 does not match the head

  • The issue body (created 03:53 UTC Oct 20, never edited) predates the exact-ratio commits (f8fedc0 and 38efe45, 16:41 UTC).
  • Its raw-income control says "single person, wages 23569, applicable prior-year FPG 15650 … derived fraction 1.50 -> applicable percentage 0". The head's Case 2c expects 0.0319 for the same household.
  • It describes band selection as Form 8962 truncation, where the head selects the band on the exact ratio and truncates only within the band.
  • Its 2027 rows are the V4 placeholders (see Critical 1).
  • Fix: update the body:
    • Change the 23,569 control to 0.0319.
    • Add the 23,475 → 0 and 23,477 → 0.0319 controls.
    • Describe the two stages (exact ratio picks the band; FTB 3849 Table 1-2 truncation sets the lookup).
    • Use the final 2027 schedule.

3. The PR body misstates the baseline and is stale

  • "Exactly 150% remains at 0%" is wrong against main. Main computes 3.19% at exactly 150%: its Case 2 expected 0.0319, and Scenario 2 expected $2,282.25. This is the PR's only behavioral change.
  • The Validation section says "Local runtime validation is blocked … no completed Hypothesis or YAML results are claimed". CI has since run 27/27 green at the head, and the hand-off comment says the targeted files passed locally.
  • Fix:
    • Say the change against main: exactly 150% moves from 3.19%/2.69% to 0%, about +$749 a year for a 2026 single filer at $23,475.
    • Refresh Validation with the CI results.
    • Update the 2027 claims per Critical 1.

Suggestions

  1. ca_premium_subsidy.yaml cases with inconsistent inputs (Cases 1–5, 11, 12, 16, 17). They supply aca_magi_fraction with an aca_magi that disagrees under the default FPG. The band now reads aca_magi / tax_unit_fpg, so for example Case 4, "exactly 165%", has an exact ratio of 166.13%. Outputs are unchanged only because both ratios fall in the same band, and these cases will collide with Decide CA Premium Subsidy eligibility on the exact FPL ratio and adopt the Final 2027 design #10305's exact-ratio eligibility. Pin tax_unit_fpg as the PR already does in the other two files.
  2. Form 8962 reference URL. https://www.irs.gov/pub/irs-pdf/i8962.pdf#page=9 rolls over each year, so the Worksheet 2 anchor will move. Pin a year-specific copy (for example, the 2025 instructions under irs-prior).
  3. Known follow-up. The "Known follow-up" (165% eligibility) is now Decide CA Premium Subsidy eligibility on the exact FPL ratio and adopt the Final 2027 design #10305. Link it from the body. Decide CA Premium Subsidy eligibility on the exact FPL ratio and adopt the Final 2027 design #10305 also encodes 2027 as strict "under 200%", while the Final 2027 Design (d)(7) says "at or below 200 percent". Fix both together.

Verified correct

  • 2026 boundary. Exactly 150% → 0%, and anything above 150% → 3.19% start. This matches 2026 Design (d)(4). side="left" with clipping keeps an exact threshold in the lower band and both bracket edges valid.
  • Rate within the band. Using the truncated fraction matches FTB 3849 (2020) Table 1-2, PDF p.6: "Above 200 and less than 201: Enter 200 … Check the 'No' box". The 2021 instructions have the same table on the same page. It also matches Form 8962 Worksheet 2 line 4, PDF p.9. Anchors verified.
  • FPL year. tax_unit_fpg(period.last_year) matches Design (d)(11): the "most recently published" FPL "as of the first day of the annual open enrollment period". That is $15,650 for PY2026 and $15,960 for PY2027.
  • Other thresholds unchanged against main. Against main, only an exact 150% ratio changes. 100%, 165% (2026: 3.91% either way; 2027: 3.41% from either tier) and 200% give the same rates as before.
  • Federal interaction. The 2026 Design's trigger (enhanced PTC "not extended by September 30, 2025") fired, and in_effect starts in 2026. The residual subtracts aca_ptc, so at exactly 150% in 2026 the state now covers the full federal 4.19% contribution instead of 1.00%. Enhanced CSR would have been funded only if the enhanced PTC had been extended (July 28, 2025 Policy and Action, PDF p.15), so there is nothing to model for 2026.
  • Statute. Gov. Code 100800(c) delegates the schedule to the Board-adopted design, and 100805(b) waives the federal income requirements.
  • Callers and gating. The only caller is ca_premium_subsidy. defined_for = StateCode.CA has no enum or int parameter-key lookups, so the NH Add New Hampshire state supplementation for 2026 #10156 pattern does not apply. Negative MAGI is floored.
  • Microsimulation. Only tax units whose ACA MAGI exactly equals 1.5 × prior-year FPG change. With continuous survey incomes the effect is about $0, which agrees with the PR body.
  • Changelog. Top-level changelog.d/statute-first-ca-premium-subsidy.fixed.md.
  • Hypothesis properties (monotone, zero up to 150%, upper-band start, continuity elsewhere) hold for the formula. They call the formula directly without building a Simulation.

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).

Case Inputs Hand result
2d (2026) $23,475 / $15,650 = 150.0000% 0
2e (2026) $23,477 = 150.0128%, truncated 1.50 0.0319, $748.92
2c (2026) $23,569 = 150.6006% 0.0319, $751.85
2f (2026) $23,630 = 150.9904% 0.0319, $753.80
2g (2026) $23,632 = 151.0032%, truncated 1.51 0.0319 + 0.0667 × 0.0072 = 0.03238, $765.20
16a (2027) $23,940 / $15,960 = 150.0000% 0
16b (2027) $23,942 0.0269, $644.04
16c (2027) $24,036 0.0269, $646.57
16e (2027) $24,100 = 151.0025% 0.02738, $659.86
2b (2026) supplied 1.505 0.0319 + (0.005 / 0.15) × 0.0072 = 0.03214
Integration Scenario 2 (2026) $22,500 / $15,000 0% → 6,000 − 3,000 = $3,000
Integration Scenario 4 (2026) $53,047.50 / $32,150 = 1.65 0.0391 → 18,000 − 9,000 − 2,074.16 = $6,925.84
ca_premium_subsidy Case 18 (2026) $31,500 / $20,000 0.0355 → 8,000 − 3,000 − 1,118.25 = $3,881.75

Axiom line assessment

The line reads rulespec-us#1832 queued. The issue is OPEN and labelled pe-parity. It has the proposed module path, citations, verbatim law, required outputs and companion tests, and it records the blocker (the corpus citations are not yet in the pinned release, and signed generation needs approval).

It does not match the head:

  • Its raw-income control (wages 23,569) expects 0, while the head gives 0.0319.
  • It describes truncation-based band selection.
  • Its 2027 rows are V4.

Not valid until the body is updated (Should 2, and Critical 1 for 2027).

CI status

  • gh pr checks 10301: 27/27 pass at 38efe45. None pending.
  • The runs started 2026-10-20 between 17:11 and 19:50 UTC, before Tie source-conflict markers to the register shared with Axiom #10287 merged at 22:02 UTC.
  • Source-conflict ratchet, checked statically on the merged tree. The PR's two scanned files (threshold.yaml and the variable) have zero comments matching CONFLICT_COMMENT_RE. Neither file is in KNOWN_UNMARKED, and neither adds or loses a marker. Tests are not scanned. The ratchet passes.
  • The 2026-10-21 FL/SD LIHEAP main failure does not apply.

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.

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.

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

David, thanks. This answers your 10-22 review at cc1af12c, together with the GPT-6.1 Sol r2 review.

  1. 2027: Cases 16b–16e, the 2027 property-test lines, the changelog and body claims, and the V4 citation are gone. Main's 2027 parameters are unchanged. Decide CA Premium Subsidy eligibility on the exact FPL ratio and adopt the Final 2027 design #10305 moves 2027 to the Final Program Design, and the body links it.
  2. The exactly-150% conflict is recorded under the in-flight protocol: a conflict comment at the deciding line, a sorted KNOWN_UNMARKED count of 1, and a candidate in candidates.yaml citing both the adopted Design ("Above 150%") and the OE27 enroller deck's 2.80% example, with the code paths and this PR.
  3. The body now says the PR's only behavioural change is exactly 150% FPL moving from 3.19% to 0% in 2026, worth up to $748.85 a year: $23,475 × 3.19% = $748.8525.
  4. P3s: FPG is pinned throughout the amount fixtures, the exactly-100% and 165% inputs are corrected, and Form 8962 is pinned to the 2025 instructions, page 9.
  5. Tests: applicable percentage 22, amount 18, integration 8, eligibility 21, source conflicts 103 and properties 5, all passing.

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.

@MaxGhenis
MaxGhenis requested a review from DTrim99 October 23, 2026 04:00
@DTrim99

DTrim99 commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

PR Review (round 2): Follow the adopted California Premium Subsidy design at the 150% FPL boundary

Summary

This 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:

  • 2027 placeholder expectations are gone. The V4-pinned cases 16b–16e, the 2027 Hypothesis lines, the 2027 changelog claim and the V4 citation have all been removed.
  • The 150% conflict is recorded. There is a candidates.yaml entry and a comment at the deciding line.
  • rulespec-us#1832 is corrected for 2026.
  • The PR body now states the real change against main.
  • The FPG pins and the year-specific Form 8962 link are in.

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

Finding Status Evidence
Critical 1: new 2027 expectations pinned the V4 placeholder (2.69/3.41/5.1, under 200%) Fixed The PR's tests and claims no longer assert V4 values:
• Cases 16b–16e are deleted.
• The (2027, 0.0269) starting-rate property and the other 2027 property parametrizations are deleted.
• The changelog cites only the 2026 Design.
• The variable's V4 reference is replaced by the Final 2027 Design.
The remaining Case 16a (2027, $23,940 / $15,960 = 150.0000% gives 0) matches the Final 2027 Design (d)(4), PDF p.2, fetched again this round: "100% up to 150%: 0% / 0%" and "Above 150% up to 200%: 2.8% / 5.28%". (d)(7) reads "at or above 100 percent and at or below 200 percent". The 2027 Insight, Table 1, PDF p.2 gives "150% – At or Below 200%: 2.8% – 5.28%*" and cites the September 1, 2026 Program Design.
Main's own V4 expectations remain: rate Cases 12–15 and amount Case 16. The PR only added FPG pins there and reworded the Case 13 comment. Fixing the 2027 schedule itself has no owner (new Should 1).
Should 1: the decided 150% conflict wasn't recorded Fixed Candidate us-ca:premium-subsidy-150-fpl-boundary contains:
• sources: the statute (Gov. Code 100800(c)), both Designs, the Explainer, the Insight and the OE27 example;
• follows: statute and state: ruled;
• the threshold file and the variable as code paths;
• this PR.
The deciding line in the variable carries a conflict comment, and the body notes the OE27 2.80% example.
Should 2: rulespec-us#1832 didn't match the head Fixed (one pointer problem moves to new Should 1) The body was edited 2026-10-23 04:00 UTC:
• Raw-income controls: wages 23,475 give 0; 23,477 give 0.0319; 23,569 give 0.0319.
• It now states that "the exact ratio selects the band; Form 8962 truncation sets only the lookup point within the band".
• The V4 table is labelled a superseded placeholder.
The issue is still OPEN and labelled pe-parity. Its 2027 instruction relies on #10305, which does not contain the final schedule.
Should 3: "remains at 0%" was wrong, and the Validation section was stale Fixed The body now says exactly 150% moves from 3.19% to 0% in 2026: up to $748.85 = $23,475 × 0.0319. In 2027 it moves from 2.69% to 0%: $643.99 = $23,940 × 0.0269. Validation lists the local results at the head. It still says CI for the revised head is pending (Suggestion 1).
Suggestion 1: pin FPG in the inconsistent amount cases Fixed Every case in ca_premium_subsidy.yaml now pins prior-year tax_unit_fpg, and the MAGI/FPG ratios equal the supplied fractions (hand-checks below). Case 6 now supplies eligibility and a zero fraction, consistent with aca_magi_fraction's max_(0, aca_magi).
Suggestion 2: year-specific i8962 URL Fixed The variable, changelog and body cite i8962--2025.pdf#page=9. Worksheet 2 line 4 ("Is the amount on line 1 more than…") and "drop any numbers after the decimal point" are on PDF p.9.
Suggestion 3: link #10305; fix the 200% boundary there Partly fixed #10305 is linked from the body. Its 2027 upper bound is still strict "under 200 percent", which leads to new Should 1.

New findings

Critical

None.

Should address

1. The 2027 hand-off to #10305 doesn't hold at #10305's head

Suggestions

  1. Refresh Validation. CI passed 27/27 at cc1af12 (run 39897425796, started 2026-10-23 03:53 UTC). The body still says CI for the revised head is pending.
  2. Tidy rulespec-us#1832's rounding source. It still links the rolling https://www.irs.gov/instructions/i8962 and presents truncation as a Form 8962 convention only. The PR now grounds the split between the exact-ratio band test and the truncated lookup in FTB 3849 Table 1-2 (2020), PDF p.6. Citing that, plus the 2025 prior-year i8962, would match the head.

Verified

  • Formula. Since round 1 only comments and references changed. The band comes from the exact ratio max(aca_magi, 0) / tax_unit_fpg(period.last_year) with side="left". The rate within the band comes from the truncated aca_magi_fraction. 2026 still matches 2026 Design (d)(4), PDF p.2.
  • 2027 against main. Main uses the truncated 1.50 with side="right", so it gives 2.69% at both exactly 150% and $23,942. The head gives 0% at exactly 150% (supported by the Final Design) and the same 2.69% at $23,942. The PR's only 2027 effect is the exactly-150% point. At 200% both pick the same bracket, so nothing there changes.
  • Source-conflict ratchet, checked statically on the merged tree (main 693254b plus the head):
    • The variable has exactly one CONFLICT_COMMENT_RE match ("The OE27 enroller example conflicts with the adopted Designs at 150%:"). KNOWN_UNMARKED lists it at 1.
    • threshold.yaml has 0 matches, and neither file carries a marker.
    • The candidate passes the schema: kinds statute/policy/guidance/agency-practice, years.type: program, state: ruled, follows: statute, and tracked code paths. Its id is not in the vendored register, and it sorts between us-ca:joint-childless-eitc-claimable-spouse and us-ca:renter-credit-2025-joint-income-limit.
    • Main's 8 newer commits touch neither KNOWN_UNMARKED nor the PR's files, and the register pin is unchanged.
    • Adding a new KNOWN_UNMARKED file together with a candidate is the same in-flight pattern main accepted in Take the 2020 charitable deduction for non-itemizers above the line #10186 (charitable_contributions/cap.yaml).
  • Candidate facts (all re-fetched):
    • OE27 deck, PDF p.40: "150% FPL $23,940 $688 $633 $55" and "For individuals at 150% of the FPL, the required contribution percentage decreases from 4.30% to 2.80%". $23,940 × 2.80% / 12 = $55.86.
    • The 2026 Design and Final 2027 Design both read "Above 150%".
    • The 2027 Insight reads "150% – At or Below 200%".
  • Property tests. They now cover 2026 only (5 tests) and call the registered formula without building a Simulation.
  • Changelog. Top-level changelog.d/statute-first-ca-premium-subsidy.fixed.md, now 2026-only and citing the 2025 i8962.
  • Merge. The merge commit 16310f4 had no hand-resolved conflicts.
  • Scope. The integration and eligibility test files are unchanged since round 1. No partner contract files are touched.

Hand-checks (every new or changed expectation, plus the requested boundaries)

Case Inputs Hand result Head expects
Rate 2d (2026), exactly 150% $23,475 / $15,650 = 150.0000% bracket 0, 0% 0 ✓
2026, 149.99% (probe) $23,473 / $15,650 = 149.9872% 0% (Hypothesis "zero at or below 150%" and Case 8 at 1.49 cover this) n/a
Rate 2e (2026), 150.01% $23,477 = 150.0128%, truncated 1.50 0.0319 0.0319 ✓
Rate 16a (2027), exactly 150% $23,940 / $15,960 = 150.0000% 0%; Final Design agrees 0 ✓
2027, 149.99% (probe) $23,938 / $15,960 = 149.9875% 0% at the head and under the Final Design n/a
2027, 150.01% (probe) $23,942 / $15,960 = 150.0125% head 2.69% (same as main); Final Design 2.80%. No longer asserted by the PR n/a
2027, exactly 200% (probe) $31,920 / $15,960 = 2.00 head: rate 5.1% but ineligible (truncated 2.00 > 1.99), $0. Main is the same, and #10305 is also ineligible. Final Design: eligible at 5.28% n/a (Should 1)
2026 vs 2027 change at exactly 150% before premium/residual caps $23,475 × 0.0319 = $748.85; $23,940 × 0.0269 = $643.99 body ✓
Amount Case 1 (2026) 21,000 / 15,000 = 1.40; SLCSP 6,000; APTC 6,000 0% → max(0, 0) = 0 0 ✓
Amount Case 2 1.40; 6,000 − 3,500 2,500 2,500 ✓
Amount Case 3 25,000 / 15,873.016 = 1.575 0.0355 → 6,000 − 2,000 − 887.50 = 3,112.50 3,112.50 ✓
Amount Case 4, exactly 165% 26,000 / 15,757.576 = 1.65; eligible at 1.65 ≤ 1.65 0.0391 → 7,000 − 2,500 − 1,016.60 = 3,483.40 3,483.40 ✓
Amount Case 5 24,000 / 15,000 = 1.60 0.0367 → 3,000 − 2,500 − 880.80 < 0 → 0 0 ✓
Amount Case 6, negative MAGI eligibility and 0.0355 supplied; fraction 0 = max(−10,000, 0) / 10,000 6,000 − 2,000 − 0 = 4,000 4,000 ✓
Amount Case 8 (2025) FPG pinned for 2024 = period.last_year; not yet in effect 0 0 ✓
Amount Cases 9/14 27,000 / 16,265.060 = 1.66 rate clipped to 0.0391; ineligible → 0 0.0391 / 0 ✓
Amount Case 11, exactly 100% 15,000 / 15,000 = 1.00 bracket 0, eligible → 6,000 − 3,500 = 2,500 2,500 ✓
Amount Case 12 1.60; 6,000 − 2,000 − 880.80 3,119.20 3,119.20 ✓
Amount Case 13 (2028) FPG pinned for 2027; sunset 0 0 ✓
Amount Case 15 14,850 / 15,000 = 0.99 0%; ineligible → 0 0 / 0 ✓
Amount Case 16 (2027, main's case) 25,000 / 15,873.016 = 1.575 V4: 0.0305 → 3,237.50 (Final Design: 0.03172 → 3,207.00) 3,237.50 (pre-existing V4)
Amount Case 17 1.575; SLCSP = APTC = 6,000 max(0, −887.50) = 0 0 ✓

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 assessment

The line reads rulespec-us#1832 queued (pe-parity; …). The issue is OPEN and labelled pe-parity. It still has the module path, citations, verbatim law (Gov. Code 100800(c) and Design (d)(4)), required outputs, companion cases, and the corpus-release blocker. Its 2026 controls and two-stage rule now match the head.

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 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.

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.

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

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

@MaxGhenis
MaxGhenis requested a review from DTrim99 October 23, 2026 23:15
MaxGhenis added a commit that referenced this pull request Oct 23, 2026
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>
MaxGhenis added a commit that referenced this pull request Oct 23, 2026
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>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Follow-up on Should 1: #10305 now carries the Final 2027 schedule at 1238297ebf (still a draft, stacked on this PR; its independent review is pending). It sets thresholds [1, 1.5, 2.0], initial [0, 0.028], final [0, 0.0528], an inclusive 200% limit on the exact ratio, and the candidate us-ca:premium-subsidy-200-fpl-limit for the OE27 deck's 200% inconsistency. The body's three 2027 pointers and rulespec-us#1832's 2027 instruction now name that head.

🤖 Generated with Claude Code

@MaxGhenis
MaxGhenis dismissed DTrim99’s stale review October 26, 2026 04:37

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.

@MaxGhenis
MaxGhenis merged commit 81056c4 into main Oct 26, 2026
27 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#10301 at cc1af12cd1e9ae88ee8e02e273313ea49d65b45f (squash): Follow the adopted California Premium Subsidy design at the 150% FPL boundary.

@MaxGhenis
MaxGhenis deleted the statute-first-ca-premium-subsidy branch October 26, 2026 04:44
MaxGhenis added a commit that referenced this pull request Oct 26, 2026
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>
MaxGhenis added a commit that referenced this pull request Oct 26, 2026
…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>
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.

2 participants