Skip to content

Add Orange County General Relief#8557

Draft
hua7450 wants to merge 5 commits into
PolicyEngine:mainfrom
hua7450:ca-oc-general-relief
Draft

Add Orange County General Relief#8557
hua7450 wants to merge 5 commits into
PolicyEngine:mainfrom
hua7450:ca-oc-general-relief

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented Jun 1, 2026

Summary

Adds a partial Orange County, California General Relief (GR) screen — categorical, income, and resource eligibility plus the maximum aid payment (MAP) — from the official Orange County SSA General Relief Regulations Manual. Registered as partial because Orange County does not publish the component-value (in-kind aid) deductions needed to net the grant against in-kind aid met at no cost.

Closes #8556

Regulatory Authority

What's modeled

Area Modeled Basis
Geography Current Orange County residence county_str == ORANGE_COUNTY_CA
Categorical At least one eligible adult: qualified noncitizen, not receiving SSI/SSP, CalWORKs, or CAPI Sec 40.1, Sec 20.4
Income Net income below the MAP; 20% earned deduction; medical-insurance, court-ordered child- and spousal-support deductions; liquid resources over $50 counted as income; other-cash-assistance income excluded Sec 70.2, 70.4, 80.2.d
Resources Primary-home equity, combined property, one-vehicle exclusion, $50 liquid-resource disregard Sec 50, Sec 60
Payment MAP by eligible-person count; flat 15% shared-housing reduction with a Housing Support Program exemption Sec 80.2.d, Sec 80.3.a

Key design decisions

  • Eligibility = categorical & income & resources. ca_oc_general_relief_eligible checks (1) at least one eligible person, (2) net countable income below the MAP (Sec 80.2.d financial eligibility), and (3) resources within the limits.
  • The MAP is sized on the eligible-person count, not the economic-unit size. Sec 80.3.a(2) bases the MAP on "the number of eligible persons in the GR-EU" — adults, excluding any child and any member excluded for cause (SSI/SSP, CalWORKs/CAPI, noncitizen status). ca_oc_general_relief_eligible_person_count computes exactly that. The full GR Economic Unit (Sec 20.4) is the income/resource pooling group (the SPM unit), a superset of the eligible persons.
  • No separate "no minor children" rule. Units with a child are excluded organically: a parent receiving CalWORKs is an excluded GR-EU member (Sec 20.4.b), and a working family with a child whose income clears CalWORKs also clears the GR income limit — so the income test and other-cash-assistance exclusion already remove them, with no extra demographic gate.
  • CAPI exclusion. CAPI (California's SSI-equivalent cash aid for immigrants) recipients are excluded under Sec 20.4.b's non-exhaustive "another type of public assistance." This is the case ssi > 0 misses: a recently-arrived aged/disabled permanent resident who receives CAPI rather than SSI but is otherwise GR-eligible.
  • Shared housing via a generic is_shared_living input. Adds an is_shared_living Household input and applies a flat 15% MAP reduction (Sec 80.3.a(3)) when it is set, waived for housing-assistance recipients to honor the "individuals placed in Housing Support Programs … may be receiving a shelter subsidy" carve-out (proxied by receives_housing_assistance). The manual's graduated 20%/25% tiers are simplified to a single rate for the boolean input.

Who is eligible

The modeled eligible population is narrow: able-bodied, non-aged, childless adults who are citizens / permanent residents / deportation-withheld, with assets below the limits and net income below the MAP. Aged or disabled applicants are swept into SSI or CAPI; applicants with children are routed to CalWORKs.

Not modeled (deferred)

  • Component-value (in-kind aid) deductions for housing/utility, food, transportation, clothing met at no cost (Sec 80.3.b) — Orange County does not publish the component dollar values (the reason this is a partial screen).
  • Graduated shared-housing reduction tiers (20% / 25%) — simplified to a flat 15% for the boolean is_shared_living input.
  • Mandatory federal/state income tax on unearned income (Sec 70.2.p(3)) — negligible for this very-low-income population.
  • Multi-month period of ineligibility for lump sums / excess liquid resources (Sec 70.2.r) — modeled as a single month's income.
  • 15-day prior residence; sponsor deeming; work compliance / sanctions; Refugee Cash Assistance (no California RCA variable); the T/U-visa / VAWA crime-victim immigration pathway (no enum value).

Tests

Tests describe families with real inputs (age, disability, immigration, work history, income, assets) and let the model determine SSI / CalWORKs / CAPI receipt and its effect on GR eligibility — including an eligibility-map integration set that demonstrates the narrow eligible population.

  • policyengine-core test policyengine_us/tests/policy/baseline/gov/local/ca/oc/general_relief -c policyengine_us — 59 passed
  • make format

Files

  • policyengine_us/parameters/gov/local/ca/oc/general_relief/
  • policyengine_us/variables/gov/local/ca/oc/general_relief/
  • policyengine_us/variables/household/demographic/household/is_shared_living.py (new generic Household input)
  • policyengine_us/tests/policy/baseline/gov/local/ca/oc/general_relief/

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (fbb907a) to head (fd1de3a).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #8557    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            3        22    +19     
  Lines           68       258   +190     
==========================================
+ Hits            68       258   +190     
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 force-pushed the ca-oc-general-relief branch from 4e73f02 to 97736b7 Compare June 1, 2026 16:01
hua7450 and others added 2 commits June 1, 2026 15:24
- Restore the no-minor-child eligibility restriction with its regulatory basis
  (Sec 20 must-apply-for-available-aid -> ineligibility, Sec 80.2.d CalWORKs
  time-limit MAP exclusion, Sec 20.4.b excluded members); families with minor
  children are routed to CalWORKs, so the parent cannot also receive GR.
- Exclude CAPI recipients from General Relief (Sec 20.4.b 'another type of
  public assistance'); catches recently-arrived aged/disabled permanent
  residents who receive CAPI instead of SSI.
- Trim qualified immigration statuses to those enumerated in Sec 40.1 (citizen,
  permanent resident, deportation-withheld).
- Fix three resource-parameter subsection citations (60.4.b->60.4.c, 50.2.a and
  50.2.b -> 50.2).
- Document RCA and unearned-income tax deductions as not tracked; replace
  deprecated documentation fields with inline comments.
- Drive program receipt (SSI/CalWORKs/CAPI) from real family inputs in tests
  instead of program values; add eligibility-map integration cases.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Implement the OC General Relief monthly maximum aid payment (MAP) and the
grant calculation, replacing the prior partial (eligibility-only) screen.

- MAP by economic unit size (1-10) from the County of Orange MAP table
  effective April 1, 2015, with the size-1 increase to $355 effective
  October 1, 2016.
- Shared-housing reductions of 15% / 20% / 25% for sharing with 1 / 2 / 3+
  other people (GR manual Sec 80.3.a(3)).
- Grant = max_(MAP - countable income, 0) (Sec 80.2.d, Sec 80.3.c-e).
- Point programs.yaml at ca_oc_general_relief and mark status complete.

Component-value deductions for in-kind aid (Sec 80.3.b) are not modeled
because Orange County does not publish the component-value amounts; MAP
values are the 2015/2016 schedule pending a current published table.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hua7450 hua7450 changed the title Add Orange County General Relief partial screen Add Orange County General Relief Jun 2, 2026
hua7450 and others added 2 commits June 5, 2026 13:45
- Add net-income financial eligibility (countable income < MAP, Sec 80.2.d)
  via ca_oc_general_relief_income_eligible; ca_oc_general_relief_eligible now
  checks categorical, income, and resources.
- Rename ca_oc_general_relief_aided_person_count to
  ca_oc_general_relief_eligible_person_count (the manual's "number of eligible
  persons in the GR-EU", Sec 80.3.a(2)); the MAP sizes on it.
- Remove the redundant no-minor-children demographic gate; units with a child
  are already excluded via CalWORKs receipt (Sec 20.4.b) or the income test.
- Replace the household-size shared-housing derivation with a generic
  is_shared_living Household input; apply a flat 15% reduction with a Housing
  Support Program exemption proxied by receives_housing_assistance
  (Sec 80.3.a(3)).
- Count liquid resources over the $50 disregard as income (Sec 70.2.g).
- Deduct court-ordered spousal support via alimony_expense
  (Sec 70.2.o(5)/70.2.p(2)).
- Add is_shared_living generic Household input variable.

Co-Authored-By: Claude Opus 4.8 (1M context) <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.

Add Orange County, CA General Relief program

1 participant