Skip to content

Implement Oregon Employment Related Day Care#8993

Open
hua7450 wants to merge 8 commits into
PolicyEngine:mainfrom
hua7450:or-ccap
Open

Implement Oregon Employment Related Day Care#8993
hua7450 wants to merge 8 commits into
PolicyEngine:mainfrom
hua7450:or-ccap

Conversation

@hua7450

@hua7450 hua7450 commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Closes #8991.

Summary

  • implements Oregon Employment Related Day Care (ERDC) eligibility, countable income, copays, and benefits
  • encodes all 2026 provider reimbursement rates for Areas A, B, and C
  • uses Enum-indexed area, provider-type, age-group, and billing-tier dimensions, consolidating rates into three parameter files
  • registers ERDC in Oregon and federal CCDF child care subsidy aggregators

Modeling notes

  • or_erdc_provider_area and or_erdc_provider_type are direct inputs; the model does not track provider location or license type at the moment, so it defaults to AREA_C and CERTIFIED_CENTER. Because Areas B and C share the same rates, the AREA_C default understates benefits for Area A (metro ZIP) families; supply the input or populate it from data to override.
  • a disabled second caretaker who cannot provide care is now excused from the need-hours minimum per OAR 414-175-0023(1)(b)(A), so a two-caretaker family is no longer denied when one caretaker is unable to work; a lone non-working caretaker still yields zero need hours
  • TANF is listed but commented out of ERDC countable income because adding calculated tanf would create a circular dependency through child care expenses and TANF deductions
  • administrative eligibility requirements that cannot be inferred from household inputs remain out of scope

Review fixes (round 5)

Criticals:

  • add the CCDF immigration eligibility check (is_ccdf_immigration_eligible_child) to or_erdc_eligible_child, matching sibling state child care programs (45 CFR 98.20(a)(1)(ii))
  • add pre-increase 2024-01-01 entries for the FAM/QFM license-exempt rates (Areas A/B/C × five age groups × two provider types, in both the hourly and monthly rate files) from the archived DELC 7492i (01/24) provider guide insert, so January–February 2026 and 2024–2025 no longer backward-extrapolate the March 1, 2026 rate increase
  • read expanded child welfare (EXP-CW) eligibility at the month period in or_erdc_income_eligible instead of period.this_year, matching or_erdc_categorically_eligible

Should-address:

  • exclude an excused (disabled) second caretaker from the need-hours min() per OAR 414-175-0023(1)(b)(A), guarded to multi-caretaker units so a lone non-working caretaker still yields zero hours
  • corroborate the 215-hour monthly cap against the DELC rate chart's monthly billing range
  • standardize all OAR references to rule-specific URLs (view.action?ruleNumber=414-175-00XX) in place of the division landing page
  • document the provider area and provider type data limitations in the variable comments
  • add 7 YAML test cases: multi-caretaker need-hours minimum, 20-hour weekly band edge, excused caretaker, unearned income in countable income, sub-bracket copay, non-categorical eligibility false, and per-business self-employment flooring

Sources

Validation

  • 54 focused ERDC YAML cases (7 added in round 5); CI pending
  • 12 parameter syntax, Enum breakdown, system import, and parameter code-health tests pass
  • round-5 fixes verified statically (py_compile 10/10, YAML load 23/23) and confirmed clean by the implementation validator
  • make format and Ruff checks pass
  • official provider-rate PDF audit found no value or effective-date mismatches

The broad make test-yaml-structural target was stopped while it was spending several minutes in an unrelated existing contributed-policy batch; the direct parameter structural/import checks and all Oregon tests passed.

@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

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

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #8993    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            1        31    +30     
  Lines           18       432   +414     
==========================================
+ Hits            18       432   +414     
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 and others added 7 commits July 11, 2026 14:24
- Floor self-employment losses at zero per OAR 414-175-0035(81)(e)
- Authorized care hours: 20/40/75 weekly bands, 20h categorical default,
  25% travel allowance, 4.3 weekly-to-monthly conversion per OAR 414-175-0023(5)
- Part-time billing tier now requires provider part-time billing input
  per OAR 414-175-0075(3)(b),(c),(e)
- Cap hourly billing at the monthly maximum per OAR 414-175-0075
- Add job-loss and at-application copay waivers per OAR 414-175-0023(3)(d),(f)
- Restrict supervised-contact exception to multiple-caretaker units
- Parameterize education activity age limit; add GED pathway input
- Age-13-17 pathway now requires OAR 414-175-0076 high-needs eligibility;
  add high-needs supplemental payment ($5 hourly / $840 monthly per factor)
- Point variable/parameter references at controlling OAR subsections
- Document microsim default bias and CNT infant-boundary ambiguity
- Untrack sources/working_references.md; fix trailing whitespace
- Update/add tests: 88 cases passing

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rlap rule

Per OAR 414-175-0076(1) and the OPEN manual (07/2026, pp. 428, 448-449):
- High-needs eligibility implies the special-needs rate category, so the
  supplement adds to the special-needs base rate rather than the ordinary
  age-based rate.
- Monthly authorized hours round up before the 215-hour cap (the worker
  guide publishes the 20-hour band as 108 hours, not 107.5).
- Two-caretaker units count only overlapping work or school hours; the
  lowest caretaker's hours remain as the maximum-possible-overlap proxy
  since schedules are not tracked, now documented with the OPEN citation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
OAR 414-175-0035(21)(a) excludes the earned income of a child, and the
OAR 414-175-0015(2)(d) filing group counts earned income only from
caretakers. Sum earned sources per person and zero them out for
non-caretakers (tax unit heads and spouses).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace 14 program-specific input variables with existing repo
variables or documented simplifications:
- Special needs rate, 13-17 child eligibility, and the second-caretaker
  exception key on is_disabled, is_incapable_of_self_care, and
  is_in_foster_care; Expanded Child Welfare is now a formula over
  is_in_foster_care.
- GED study is covered by is_in_secondary_school.
- Part-time billing, the high needs supplement, copay waivers, medical
  leave, and supervised contact are unmodeled, each noted in a formula
  comment; billing collapses to hourly-vs-monthly full-time thresholds
  (158 standard, 136 enhanced/licensed).
- Reorganize variables into eligibility, income, rates, hours, and
  copay folders.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Criticals:
- Add CCDF immigration eligibility check to or_erdc_eligible_child
- Add pre-increase 2024-01-01 FAM/QFM rates from the DELC 7492i (01/24)
  insert so Jan-Feb 2026 and 2024-2025 no longer backfill the 3/1/2026
  increase
- Read EXP-CW eligibility at the month period in or_erdc_income_eligible

Should-address:
- Exclude excused (disabled) second caretakers from the need-hours min()
  so OAR 414-175-0023(1)(b)(A) families are not denied
- Corroborate the 215-hour cap with the rate chart; standardize all OAR
  references to rule-specific URLs
- Document provider area/type data limitations
- Add 7 test cases: multi-caretaker min, 20-hour band edge, excused
  caretaker, unearned income, sub-bracket copay, categorical false, and
  per-business self-employment flooring

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PolicyEngine's age-based headship assigns an 18-year-old child as the
tax-unit spouse when no real spouse exists, so the head-or-spouse
caretaker filter counted their wages. Per OAR 414-175-0015(2)(d), the
filing group's children include those under 18 or age 18 attending
secondary school, so their earned income stays excluded under OAR
414-175-0035(21)(a). Narrow the filter with a parameterized
filing-group child definition.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hua7450 hua7450 marked this pull request as ready for review July 14, 2026 00:59
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.

Implement Oregon Employment Related Day Care (ERDC)

1 participant