Skip to content

Apply Colorado's OAP payment floor and count OAP income under 3.533-3.534 - #10176

Open
MaxGhenis wants to merge 11 commits into
mainfrom
co-oap-payment-floor
Open

MaxGhenis wants to merge 11 commits into
mainfrom
co-oap-payment-floor

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Colorado Old Age Pension (co_oap) gets two changes under 9 CCR 2503-5 (ruleVersionId 12428):

  1. Payment floor. From January 1, 2026, a grant below the $189 payment floor standard is raised to it, month by month (3.530(C), 3.531(D)(2), 3.532(B), 3.533(B)). The floor applies only to a positive grant. A client whose total countable income "equals or exceeds the OAP grant standard after the disregards are applied ... shall be denied or discontinued" (3.533; also 3.520.781(A)).
  2. OAP's own income rules for every client. co_oap counted ssi_countable_income, which is 0 for anyone who is not SSI-eligible. So every Coloradan aged 60–64 who is not disabled and whose resources were under the limit got the full $1,032/month whatever their income. A 62-year-old earning $60,000 got $12,384 a year. OAP now counts income under 3.533 (the client's own income) and 3.534 (deemed spousal income), whether or not the client is SSI-eligible. Payments drop cents unless SSI reduces the grant (3.581(E)).

The payment floor

Source What it says
3.530(C) "Effective January 1, 2026, the payment floor standard for OAP is $189."
3.532(B), 3.533(B) "If the grant payment is less than the OAP payment floor standard ..., a state supplementary payment will be issued to raise the grant payment to meet the payment floor standard."
3.510 "Payment Floor Standard" is "the minimum Adult Financial grant payment that an eligible Old Age Pension (OAP) ... client may receive."
3.533 (opening) "If a client's total countable income equals or exceeds the OAP grant standard after the disregards are applied, he or she shall be denied or discontinued".

History. The floor first appears in the January 1, 2026 emergency rule (ruleVersionId 12318, PDF page 58). Through 2025, 3.531(D) provided only discretionary "MOE" lump sums (ruleVersionId 11861). CDHS's rulemaking packet (2025-00596) says Colorado had met the SSI pass-along by the "Total Expenditures method". So payment_floor.yaml is $0 until 2026 and $189 from 2026-01-01, as in #10161 for AND-CS.

Who gets it. The same packet (PDF pages 4 and 8) gives about 15,529 OAP recipients and $13.7 million "to meet payment floor" (SFY 2023-24 basis). That fits a floor paid only on positive grants. CDHS's Adult Financial Reference Guide (December 2025) describes it the same way: a client "eligible for a $195 Grant Allotment" gets a state supplementary payment up to the floor.

Month by month, in cents. co_oap stays annual. It loops over the year's months and pays where(grant > 0, max_(grant, floor), 0) for each, so a year with six eligible months pays at most 6 × $189 from the floor (YAML Case 12).

Colorado records monthly income and grants in dollars and cents, so the OAP variables take each monthly amount in cents (oap/_precision.py):

  • each income source averaged from an annual amount (3.520.781(G)), and earnings, ISM and support, to the nearest cent, with a half cent rounded up;
  • SSI as SSA pays it, a fractional cent raised to the next cent (POMS SI 02001.010).

The rule's own arithmetic then stays on a half-cent grid, because earnings are halved. A tenth of a cent absorbs float32 residue (Cases 24–26 and 28–35). 3.581(E) then drops cents from every payment, "except in cases where SSI income reduces the grant"; those are paid to the cent (Cases 21, 27, 32).

OAP's income rules

Rule ssi_countable_income (before) This PR
Client aged 60–64, not blind or disabled 0, whatever the income 3.533(A)
3.533(A)(1) earnings SSI's $65 + half $65 + half; no SSI student earned income exclusion (3.520.786 lists the exempt earned income)
3.533(A)(2)(c)(2) SSI is the only unearned income $20 moves to earnings no unearned disregard; none reaches earnings
3.533(A)(2)(f) unearned income under $20 always moves to earnings only when gross unearned income, SSI included, is under $20
3.533(A)(2)(c)(1) married $20 (individual) $10 each, including the spillover
Interest and dividends (3.520.786(K), via 20 CFR 416.1124(c)(22)) counted exempt
Child support received (3.520.786(N), (P)) counted exempt
Rental loss (3.520.785(B)(20)) offsets other income counts as zero
ISM (3.520.79(B)(6)) SSI's ISM for SSI-eligible people SSI's matching ISM for SSI recipients, halved for a couple (co_oap_in_kind_support_and_maintenance)
3.534(A) spouse's earnings SSI deeming (threshold, couple computation) (gross − 65) / 2, no threshold
3.534(B) spouse's unearned income as above gross (SSI and matching ISM included) − $1,032 OAP grant standard − child allocations − court-ordered support
3.534(B)(3) child allocation — half the SSI rate less the child's gross income (SSI and child support included, no source below zero), for each dependent child in the spouse's household
3.534(C) spouse on SSI, OAP or Medicaid within the OAP limit — not deemed; the spouse may live in another state

Dating. The 3.533/3.534 text modeled here took effect March 1, 2020 (ruleVersionId 8577). From March 2014 to February 2020, 3.533 applied no disregards when total income equaled or exceeded the grant standard. PolicyEngine's OAP parameters start in 2023, so only the current text is modeled. The disregard parameters are dated March 2, 2014, when OAP moved into 9 CCR 2503-5. 3.581(E) has been in 9 CCR 2503-5 since March 1, 2020.

A conflict, flagged. CDHS's December 2025 guide says applicants "must have gross income below the maximum grant standard at initial application". That is the pre-2020 rule. The current 3.533 says "Disregards shall be applied before determining a client's total countable income", and 3.520.781(A) tests total countable income. This PR follows the rule.

Medicaid, SNAP and calculation order

3.534(C) exempts a spouse who is receiving Medicaid. From 2027, Medicaid's community engagement requirement has a SNAP pass-through (42 CFR 435.554(c)(7)), and SNAP counts OAP as income. So OAP, a spouse's Medicaid enrollment and SNAP depend on each other. co_oap_medicaid_enrolled handles this:

  • Before 2027 it is medicaid_enrolled or reported coverage (receives_medicaid).
  • From 2027 it computes medicaid_enrolled in a private branch where only reported coverage exempts a spouse's income from deeming. Enrollment is therefore decided on the SNAP the household receives while the spouse's income is still deemed. The spouse keeps every route to Medicaid, the SNAP/TANF pass-through and supplied inputs included, and the result does not depend on calculation order.
  • In a SNAP unit with one spouse whose exemption turns on this, higher OAP can only lower SNAP. So at most one outcome is self-consistent, and the branch finds it. When none exists, the spouse is treated as enrolled.
  • With several such spouses in one SNAP unit, enrollment is decided with all their income deemed, which need not be self-consistent.

co_oap_deeming_exempt is true only for the spouse of an OAP-eligible client. Medicaid is read only when some such spouse is within the limit and not otherwise exempt, so most simulations never build the branch.

The first version used medicaid_enrolled_for_ssi_state_supplement, which is meant for SSI and aged, blind or disabled candidates. It dropped the SNAP route and returned a cached medicaid_enrolled when one existed, so Sol's round-1 example gave $10,274 or $12,384 depending on order. #10161 has adopted the same design for AND-CS (co_state_supplement_medicaid_enrolled). Whichever of the two lands second merges them into co_adult_financial_medicaid_enrolled and adds a test with both heads.

Cost, measured on the hub's 10% sample (16,767 people, 2027, macOS under shared load):

Calculation Medicaid term supplied (no branch) Head
Full household_net_income 32.1 s, 2.82 GB peak 32.2 s, 3.03 GB peak
co_oap alone 2.1 s 26.1 s

The branch costs little when SNAP and Medicaid are computed anyway, and a lot when OAP is requested first.

Readings to check

  1. Married spillover. A married client's share of the disregard is $10 (3.533(A)(2)(c)(1)), so the client passes $10 − gross unearned income to earnings, not $20 − it. That keeps every couple within "no more than a $20.00 disregard ... for the married couple". The 2014–2020 text and the pre-2014 rule (9 CCR 2503-3, 3.360.5(C)) support it. Apply Colorado's AND-CS payment floor and 3.549 income rules to every client #10161 and Axiom compute AND-CS's spillover against $20.
  2. No unearned income. A client with neither unearned income nor SSI passes the whole $20 to earnings: $0 is "less than $20.00" (3.533(A)(2)(f)). Axiom's 3.533 passes nothing.
  3. "The OAP limit" (3.534(C)) is undefined. I read it as the spouse's own total countable income under 3.533, SSI included, at most the $1,032 grant standard.
  4. "Receiving Adult Financial grant payments" is judged on the spouse's own income: OAP-eligible, with own total countable income below the standard. Where a reading in which neither spouse receives OAP is also self-consistent, the model takes the one in which both are paid. For example, both 62, each earning $2,075/month: each gets $189.
  5. Interest and dividends are exempt. 3.520.785(B)(10) lists them as countable unearned income, but 3.520.786(K) exempts what SSA excludes, which includes interest and dividends on countable resources (20 CFR 416.1124(c)(22)). 3.520.781(C) makes the exemptions govern.
  6. Child support received by a client (60 or older) or an adult spouse is exempt, as support for another person ((N)) or arrears ((P)). PE-US's child_support_received has no beneficiary or arrears attribute, so current support to a disabled adult child (C.R.S. 14-10-115(13)) aged 60 or older cannot be told apart. It would count under 3.520.785(B)(25).
  7. "Dependent child" (3.534(B)(3)) is undefined. Because 3.520.71(F) sends a client with a dependent child to Colorado Works, I use TANF's ages: a tax-unit dependent under 18, or under 19 in secondary school.
  8. Court-ordered support (3.534(B)(5)) is child_support_expense plus alimony_expense, with alimony treated as court-ordered.
  9. Monthly amounts in cents. The rule averages annual income over twelve months (3.520.781(G)) but does not say how to round. I take each monthly amount to the nearest cent, with a half cent rounded up, as a record in dollars and cents would hold it.

Not modeled

  • Colorado's own ISM for clients not on SSI (3.520.79(C); the $351 maximum in 3.530(B)), and the ISM matching SSA's one-third reduction for SSI recipients in another person's household. Count Colorado's in-kind support and maintenance for AND-CS clients in another person's household #10183 (draft) adds co_ssa_in_kind_support_and_maintenance, and the amount for the one-third reduction is with Max as d1446. Once both PRs are on main, its session will swap that variable into OAP; the hook is co_oap_in_kind_support_and_maintenance.
  • Medical payments for uninsured dependents (3.534(B)(4)), garnishment (3.534(B)(5)), sponsor deeming (3.534(D)) and the institutionalized spouse's MMMNA (3.534(C)).
  • Home Care Allowance, including its $977 floor (3.570.11(B)). PE-US does not model HCA.
  • OAP's citizenship rules (co_oap_eligible is unchanged).
  • SSI and interest. PE-US's SSI still counts interest and dividends, which 20 CFR 416.1124(c)(22) excludes on countable resources (SSI counts interest and dividends from countable resources, which 42 USC 1382a(b)(23) excludes #10079, proposed as its own task). OAP adds SSI back, so OAP absorbs SSI's error and total income stays right. For an SSI couple aged 70 where one spouse has $60/year of interest, SSI is $30/year too low each, and OAP is $30/year too high for the spouse above the floor. main was $2,880/year short for that spouse, because it charged each spouse half the couple's SSI countable income.

Invariants

policyengine_us/tests/core/test_co_oap_invariants.py checks these on Hypothesis-drawn clients aged 60–80, single or married. It runs 15 examples of up to 8 households, one simulation each. The clients have pension, interest, Social Security, earnings, rental income or loss, child support and shelter support, and the spouses have earnings, pension and shelter support. Each married household appears four ways: spouse on Medicaid, spouse not, more spousal earnings, roles swapped.

  1. Payment. Each month OAP is the standard less total countable income when that is positive, raised to the floor if below it, and 0 otherwise. Cents are dropped unless SSI reduces the grant. So it is 0 or between $189 and $1,032.
  2. Singles, against SSI's code. For a client not on SSI, with no earnings or at least $20 of unearned income, 3.533(A) equals SSI's _apply_ssi_exclusions on the same gross income, with interest and child support exempt and a rental loss counted as zero (a differential check). For a client on SSI with none of those, 3.533(A) never counts less than SSI.
  3. Exemption. A spouse's Medicaid enrollment only lowers countable income and only raises OAP.
  4. Monotonicity. While both spouses' SSI is unchanged, more spousal earnings never lower countable income and never raise OAP. Hypothesis found four lawful exceptions, which the test names, all through SSI:
    • OAP counts the client's SSI. In an SSI couple aged 65, $85/month of spousal earnings cut each spouse's SSI by $0.02.
    • SSI falling under $20 releases the 3.533(A)(2)(f) spillover.
    • A client taken off SSI loses SSA's matching ISM.
    • A spouse on SSI above the OAP limit has SSI deemed.
  5. Roles. Swapping tax-unit head and spouse changes nothing.

A one-off 400-example run passes. Mutation checks: the tests catch 34 of these 35 mutations (YAML unless noted):

  • Payment:
    • paying the floor on $0 grants;
    • applying the floor to annual rather than monthly income;
    • zero precision;
    • no 3.581(E) truncation;
    • truncating SSI-reduced grants;
    • not paying SSI-reduced grants to the cent;
    • SSI not as SSA pays it.
  • Own income:
    • Axiom's no-spillover reading;
    • a $20 married spillover;
    • passing SSI-only clients' $20 to earnings;
    • charging SSA's ISM to clients not on SSI;
    • counting interest, or child support;
    • letting a rental loss offset other income;
    • no monthly cents;
    • a half cent not rounded up.
  • Deeming:
    • dropping the 3.534(C) exemption;
    • dropping the grant-standard deduction, or the child allocation;
    • omitting child SSI, spousal SSI, spousal matching ISM, or the child's own child support;
    • taking child allocations from the client's household;
    • children under 18 only.
  • Exemption test:
    • not exempting OAP recipients;
    • a strict OAP limit;
    • zero precision in the OAP-receipt test;
    • masking out-of-state spouses;
    • an exemption not limited to spouses.
  • Medicaid:
    • the SSI/aged/blind/disabled helper (order test);
    • a branch without the SNAP pass-through (order test);
    • a branch seeded with zeros (order test);
    • ignoring reported coverage (YAML and Python).

The survivor tests the grant as np.round(grant, 2) > 0. Cent-valued inputs produce no grant between a tenth of a cent and a half cent, so under the cents convention it is equivalent to the model.

Tests

  • YAML in policyengine_us/tests/policy/baseline/gov/states/co/ssa/oap/, 83 cases in all. Every expectation is computed from the rule in the case's comment.

    • co_oap.yaml: 35 cases. Cases 1–4 now feed co_oap_countable_income; they fed ssi_countable_income, which co_oap no longer reads.
    • co_oap_own_countable_income.yaml: 14 cases.
    • co_oap_deemed_income.yaml: 20 cases.
    • co_oap_deeming_exempt.yaml: 9 cases, rewritten as couples.
    • co_oap_eligible.yaml: 5 cases, unchanged.
  • test_ssi_state_supplement_medicaid_dependency.py adds three tests:

    • a CO couple in the calculation-order test (2027, 2030, 2035; SNAP computed and supplied);
    • a SNAP unit with no self-consistent outcome;
    • two OAP couples sharing a SNAP unit, where one spouse's reported coverage must hold inside the branch.

    Each asserts the client's OAP in both orders. Measured locally on macOS under shared load, before and after on the same host: 15 → 23 tests, 84 s → 89 s, peak RSS 5.11 GB → 5.08 GB.

  • test_co_oap_invariants.py: about 22 s, 1.2 GB peak RSS, nearly all of it model import. Both Python files run in the Rest/core group. Linux CI times are not measured.

  • All CO YAML (6 batches), the 29 other YAML files with Colorado households, and the code-health, aggregate-list and program-registry tests pass.

  • Partner fixtures: two cases change, both from the floor alone:

    • oap.yaml co_oap_age_65_earnings_reduce_grant_partial: 414 → 2,268.
    • state_supplement.yaml co_state_supplement_age_60_handoff_to_oap: 456 → 2,268.

    I have not edited them; the three questions are with @hua7450 in this comment. All other CO fixtures and my_friend_ben/2025.yaml pass.

Impact

No full-file microsimulation yet. The hub's impact queue compares merge-base(main) with the final head; extra variables: co_oap co_oap_countable_income. Expect co_oap to fall a lot from removing the full grants to people aged 60–64, and to rise from the floor for SSI recipients aged 65 and over.

Axiom

axiom: TheAxiomFoundation/rulespec-us#1721 queued (3.532 floor must require 3.520.781(A); state supplementary payment from 2026-01-01; 3.581(E) cents on full-month payments) | TheAxiomFoundation/rulespec-us#1727 queued (3.533(A)(2)(f) spillover with no unearned income and the married share; 2020-03-01 date; 3.520.786(K), (N) companion tests) | TheAxiomFoundation/rulespec-us#1722 queued (3.534(B) unearned deeming, deemed-earnings floor, total with deemed income; 2020-03-01 date). Blocker for all three: signed encoder runs are OpenAI-billed and need Max's approval.

Review

GPT-6.1 Sol, eight rounds. Reports are kept with the US hub's state (~/reviews/co-oap-floor-10176/).

  • Round 1 (fda771a): request changes, 8 findings. Fixed in ef440a5:
    1. cents;
    2. the Medicaid read;
    3. exempt income;
    4. spouses outside Colorado;
    5. child SSI;
    6. spousal SSI;
    7. the spouse's household;
    8. invariant scope.
  • Round 2 (ef440a5): request changes. Fixed in 93cfe1c:
    1. precision;
    2. 3.581(E);
    3. reported Medicaid coverage;
    4. spousal matching ISM;
    5. rental losses;
    6. the child's own child support.
  • Round 3 (93cfe1c): request changes.
    • Fixed in 38d6068: reported coverage now seeds the branch; the fixed-point claim is narrowed; the child budget is floored, with TANF ages.
    • Accepted as documented limitations: readings 5 and 6.
  • Round 4 (38d6068): request changes. Fixed in 479f0f6: explicit cents normalization, and SSI as SSA pays it.
  • Round 5 (479f0f6): APPROVE. SSI interest was reclassified as a documented limitation, because total income is right and main is far worse. Class (c) follow-ups were applied in 858c0c0.
  • Round 6 (858c0c0): APPROVE. Half-cent slack applied in ec4d1c0.
  • Round 7 (ec4d1c0): APPROVE, "No further changes are needed before merge."
  • Round 8 (8d5abf1, head): APPROVE. The delta was a test margin and a comment only.

Rounds 5–8 could not execute code; my executed results at each head are listed above. The readings in "Readings to check" are queued for Max as d1457.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 12, 2026 16:36
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

@hua7450 This PR changes the model output for two partner contract cases. I have not edited the partner files; they wait for your answers.

File Case Variable Expected now Model after this PR
partners/analytics_coverage/edge_cases/state/co/oap.yaml co_oap_age_65_earnings_reduce_grant_partial (co) co_oap 2026 414 2,268
partners/analytics_coverage/edge_cases/state/co/state_supplement.yaml co_state_supplement_age_60_handoff_to_oap (co) co_oap 2026 456 2,268

Why: Colorado's OAP payment floor (new in 2026). 9 CCR 2503-5 3.530(C) (ruleVersionId 12428, PDF page 74): "Effective January 1, 2026, the payment floor standard for OAP is $189." 3.532(B) and 3.533(B): if the grant payment is less than the floor, "a state supplementary payment will be issued to raise the grant payment to meet the payment floor standard."

  • co_oap_age_65_earnings_reduce_grant_partial: countable earnings are (2,080 − 65 − 20) / 2 = 997.50/month, unchanged. The grant is 1,032 − 997.50 = 34.50/month, which the floor raises to 189. 189 × 12 = 2,268.
  • co_state_supplement_age_60_handoff_to_oap: SSI is 994/month. The grant is 1,032 − 994 = 38/month, raised to 189. 189 × 12 = 2,268.

The floor applies only to a positive grant. A client whose total countable income equals or exceeds the $1,032 standard still gets 0 (3.533; 3.520.781(A)). So the other partner cases (the full-grant and resource-limit co_oap cases, and every case where co_oap is 0) are unchanged. All other CO partner fixtures and my_friend_ben/2025.yaml pass.

Stale comment (no expected value changes). oap.yaml notes that "for non-SSI-eligible people (e.g. ages 60-64, non-disabled), ssi_countable_income is zeroed by the model, so their earnings do not reduce OAP". This PR fixes that. OAP now counts every client's income under 3.533, so a 62-year-old's earnings and pension reduce OAP. No current case has a 60–64-year-old with income, so no expected value moves. The header line "benefit = 1,032/month grant standard ... minus (SSI received + SSI-countable income)" also becomes stale. Editing those comments would also touch the partner files, so they are part of the same question.

Before I edit these files:

  1. Are you sure you want to edit this test file?
  2. Have you notified a team member about this change?
  3. Have you notified the API partner about this change?

…er $20

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in deeming, spouse's household

- Round the monthly grant to cents so float residue at the standard pays no floor
- Read the spouse's Medicaid in a branch where no spouse is exempt for OAP
  deeming, so the result keeps SNAP's pass-through and does not depend on order
- Exempt interest, dividends and child support (3.520.786(K), (N), (P))
- Count SSI in a non-exempt spouse's unearned income and in a child's income
- Take the child allocation from the spouse's household; drop the CO mask on
  spouse-side variables
- Scope invariants 2 and 4 to what the rule guarantees

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 13, 2026
co_state_supplement_medicaid_enrolled now computes medicaid_enrolled in a
branch where it is itself false for everyone, rather than one where
January's AND-CS is zero. AND-CS in the branch deems every Medicaid
spouse's or parent's income, so it is no higher than its final value and
SNAP is no lower: one step from the final fixed point, from the
conservative side. The parent never holds this variable before computing
it, so get_override_branch always shares the parent's cache. This matches
co_oap_medicaid_enrolled in #10176, so the two can merge into one
Adult Financial variable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…se ISM, rental losses

- Judge a positive grant, and OAP receipt in the 3.534(C) test, to a tenth of
  a cent: float residue is no grant, a half-cent grant is
- Drop cents from payments not reduced by SSI (3.581(E))
- Count reported Medicaid coverage; skip the Medicaid branch when no spouse
  of an OAP-eligible client needs it; co_oap_deeming_exempt is true only for
  such a spouse
- Deem a non-exempt spouse's matching ISM; count a child's own child support
  in the 3.534(B)(3) allocation; floor each unearned source at zero
- Document how the Medicaid branch resolves a household with no
  self-consistent outcome, and test it in both orders

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

hua7450 commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

Partner cases. Both $2,268 values are correct under the $189 OAP payment floor (9 CCR 2503-5 §3.530(C), §3.532(B), §3.533(B)):

  • co_oap_age_65_earnings_reduce_grant_partial: $1,032 − ($2,080 − $65 − $20) / 2 = $34.50, raised to $189.
  • co_state_supplement_age_60_handoff_to_oap: $1,032 − $994 SSI = $38, raised to $189.

Yes to the three partner-test questions, including fixing the stale comments in oap.yaml. Please update both files; I'll review the PR once it's ready.

MaxGhenis and others added 6 commits October 12, 2026 23:41
…ents convention; child budget

- Seed the branch with reported Medicaid coverage, so a known exemption
  holds there; state exactly when the one-step rule is self-consistent
- Treat monthly amounts as recorded in cents: a quarter cent separates the
  rule's half-cent grid from float residue and averaging remainders
- Count a dependent child by TANF's ages (under 18, or under 19 in secondary
  school) and floor each of the child's income sources at zero
- Precompute arrays before sum() (code-health rule)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Monthly income from each source, earnings, ISM and support to the nearest
  cent before budgeting; SSI raised to the next cent as SSA pays it (POMS
  SI 02001.010). A tenth of a cent now only absorbs float32 residue
- Narrow the Medicaid branch's fixed-point statement to a single unresolved
  exemption in a linked group of households

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts, mills margin

- Round monthly amounts half a cent up, with slack for float residue
- Pay a grant reduced by SSI to the cent (3.581(E) keeps its cents)
- Fix the unit of ssi_paid's margin; gate matching ISM on SSI as paid
- Pin PRECISION with direct-input cases; count SSI as paid in invariant 1

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

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 13, 2026 05:37
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Hand-off to the US hub. Head 8d5abf104845cc22706518c2d0a90e729383f005.

Review. GPT-6.1 Sol approved in rounds 5, 6, 7 and 8; round 8 was at this head. Earlier rounds requested changes, all applied. Reports: ~/reviews/co-oap-floor-10176/review-r{1..8}-sol.md. Rounds 5–8 could not execute code, so the executed results are below.

Passed locally at this head (or at ec4d1c0, which has identical behavior):

  • 83 OAP YAML cases;
  • 25 dependency and property tests (peak RSS 5.08 GB, against 5.11 GB at base);
  • a 400-example Hypothesis search;
  • 956 code-health, aggregate-list and registry tests;
  • all CO YAML (6 batches);
  • the 29 other Colorado-household YAML files and all partner fixtures, except the two partner cases below;
  • 34 of 35 mutants caught. The survivor is equivalent; see the PR body.

Pending:

  1. CI. Just marked ready. The partner-fixture job is expected to fail on exactly these two cases, both from the floor:
    • oap.yaml co_oap_age_65_earnings_reduce_grant_partial: 414 → 2,268;
    • state_supplement.yaml co_state_supplement_age_60_handoff_to_oap: 456 → 2,268.
  2. Partner gate. The three questions are with @hua7450 in this comment, and his review is requested. On his yes, edit those two expected values and the stale comments in oap.yaml: the header line about SSI-countable income, and the note that ages 60–64 are zeroed. Then get his approval on that head.
  3. Max decision d1457 (low, deadline 2026-10-20): the readings listed under "Readings to check".
  4. Impact. The impact queue has not run. Extra variables: co_oap co_oap_countable_income.

Coordination:

Axiom: TheAxiomFoundation/rulespec-us#1721, #1727 and #1722 are queued. Signed encoder runs need Max's approval.

@hua7450

hua7450 commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

Already answered: yes to the three partner-test questions (comment). Please update the two co_oap values to 2,268 and the stale comments in oap.yaml; I'll review once that's pushed.

@codecov

codecov Bot commented Oct 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (909176a) to head (8d5abf1).
⚠️ Report is 443 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main    #10176   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         9    +5     
  Lines           76       167   +91     
  Branches         2         3    +1     
=========================================
+ Hits            76       167   +91     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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

Requesting changes only until the partner values are updated (my earlier comment); I'll approve on that head.

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.

2 participants