Skip to content

Complete Nebraska Child Care Subsidy implementation - #9186

Merged
hua7450 merged 12 commits into
PolicyEngine:mainfrom
hua7450:ne-ccdf
Aug 13, 2026
Merged

Complete Nebraska Child Care Subsidy implementation#9186
hua7450 merged 12 commits into
PolicyEngine:mainfrom
hua7450:ne-ccdf

Conversation

@hua7450

@hua7450 hua7450 commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR replaces the incomplete Nebraska Child Care Subsidy model with a current-law, monthly eligibility and provider-reimbursement model. It preserves the existing annual ne_child_care_subsidies output by summing the 12 monthly subsidy amounts.

Fixes #9185

Regulatory authority

The implementation follows:

Research archived and page-verified 10 official PDFs totaling 328 pages.

Income eligibility tests

  • Use the SPM unit as the documented proxy for Nebraska's assistance unit and apply family-size-specific FPL and SMI amounts.
  • Require Nebraska residence, at least one eligible child, an eligible provider arrangement, and every modeled caretaker to meet an observable or explicitly reported qualifying activity.
  • Apply the child-only CCDF immigration test. Adult immigration status and Social Security numbers do not determine eligibility.
  • Apply ordinary eligibility through age 12, enrolled-period continuity at age 13, and verified special-needs eligibility through age 18.
  • Require assets at or below $1,000,000 unless an approved foster, protective-services, adoption, guardianship, or ward category waives the income and asset tests. These categories do not waive activity or provider requirements.
  • Use explicit monthly enrollment, redetermination, and completed-12-month status inputs. Their false defaults treat a household as an initial applicant rather than inferring administrative history from current survey data.

Income deductions and exemptions

The model separately sums parameter-listed earned and unearned sources. It excludes mapped tax, nutrition, housing, education, and other noncountable benefits and excludes earnings of an in-school child through age 18 — K-12 or postsecondary, and never a unit head or spouse, so a teen parent's own wages stay counted — following 392 NAC pages 11–14.

After 12 continuous months of receipt — proxied by the monthly enrollment status input — the model disregards 10% of gross earned income only. It uses available net self-employment and farm income as the documented proxy for Nebraska's gross-receipts and allowable-expense calculation. Regular military pay is counted, but available inputs cannot isolate the legally excluded combat-pay portion.

TANF enrollment and approved categorical cases waive the family fee. The model excludes computed Nebraska AABD from countable income to avoid a child-care-benefit dependency cycle.

Income standards

Determination Current-law standard Boundary
Initial eligibility 185% FPL Income at the limit qualifies
Redetermination 200% FPL Income must be strictly below the limit
Enrolled-period continuation 85% SMI Income at the limit qualifies (limit rounds to the nearest dollar, matching Nebraska's published SMI column; the FPL limits round up)
Fee-free tier 100% FPL Gross income at the limit has no fee

LB304 permanently retains the first three current-law tiers and the 10% earned-income disregard. Above 100% FPL, one monthly family fee equals 7% of gross program income under the approved current-income approximation; the fee applies once across all children.

Benefit calculation

For an eligible family, the monthly model:

  1. Determines each child's maximum provider reimbursement from location, provider type, age group, quality tier, authorized unit, attending days or hours, and a special-needs adjustment.
  2. Caps each child's state maximum at the family's pre-subsidy private charge; when the matrix prices nothing for a child (the care schedule is unreported, the general survey and microdata case), the reimbursement falls back to the billed childcare expenses.
  3. Subtracts one monthly family fee and floors the result at zero.

Survey defaults keep the program live in microsimulation: an unreported provider defaults to the licensed-center category, unreported daily hours default to a full-day authorization, and a licensed provider with no reported quality rating receives the chart's base rate. The October 2025 transition to the rate matrix is governed by a provider_rate_model_in_effect parameter rather than dates hard-coded in formulas.

The model's only program-specific inputs are provider type, quality tier, enrollment status, and redetermination status, each with precedent in other state childcare models; every other fact derives from observable household variables.

The model transcribes all 192 licensed urban/rural rate cells from the current rate chart. It also models license-exempt family-home rates of $9.90 partial day and $16.50 full day in urban counties, $8.80 and $14.90 in rural counties, and license-exempt in-home care at $13.50 per hour. Billing units are partial day below 5 hours, full day from 5 through under 10 hours, and full plus partial from 10 through 18 hours, subject to 18-hour daily and 60-hour weekly caps.

Special-needs care (per the observable ne_dhhs_has_special_needs status) increases the normal rate by 25%. The model dates the 2025–2027 rate matrix to October 1, 2025 based on the chart label, the current DHHS schedule, and the statutory October 1 rate-setting rule.

The final annual ne_child_care_subsidies variable adds monthly results, preserving monthly eligibility, fees, attendance, and provider facts rather than applying one annual determination.

Requirements coverage

  • Tracked the approved not-modeled groups separately (see below).
  • 26 parameter files, including the complete provider-rate matrix.
  • 22 Nebraska program variable files plus the existing annual aggregator.
  • 17 YAML test files with 115 cases, including 7 integration scenarios.

Not modeled

These groups remain explicit limitations:

  1. Administrative compliance and approval facts, including immunization, child-support good cause, fraud, provider background checks, and owner or employee accommodations.
  2. Detailed activity and case-plan facts, including Employment First, treatment, on-the-job training, incapacity, job-search timing, course load, night work, travel, and study time. Scenarios can supply the generic approved-activity fallback.
  3. Historical enrollment and redetermination facts beyond the two monthly status inputs, irregular-income lookback, and fee-freeze history; the completed-12-month disregard is proxied by enrollment. Conservative defaults are false.
  4. Provider type, quality, authorized unit, attendance, and private charge remain scenario inputs. An unreported provider defaults to the licensed-center category and unreported hours to a full-day unit; a month with no reported attendance is reimbursed at the billed expenses rather than a matrix price.
  5. Provider-billing add-ons: registration, transportation, and summer activity fees, absence-day billing, and caseworker rate or placement approvals. Their inputs are unobservable in survey data, and no other state childcare model in this repository carries them.

The SPM unit and tax-unit head or spouse roles approximate Nebraska's assistance unit and caretakers. The model does not infer shared custody, temporary absence, minor-parent, unborn-child, or placement exceptions.

Historical notes

The 10% earned-income disregard dates to LB359, effective July 18, 2014, and the flat 7% family fee to the State Plan amendment effective July 1, 2020; both predate the PR's target years, so the dated parameters carry those origins without affecting 2025+ results.

LB304 was approved April 14, 2026 and became effective July 18, 2026. It removed the October 1, 2026 sunset that would have reverted initial eligibility to 130% FPL. The implementation therefore keeps the 185% FPL initial threshold, strict below-200% FPL redetermination tier, 10% earned-income disregard, and 85% SMI continuation ceiling after October 1, 2026.

The implementation replaces obsolete citations and earlier rate values with the current Nebraska Legislature, Secretary of State, and DHHS sources. It leaves the existing federal CCDF and household state-benefit registries unchanged.

Files

Variables and tests are organized into eligibility/, income/, rates/, and fee/ subfolders, matching the layout of other state childcare programs.

  • 26 Nebraska Child Care Subsidy parameter files.
  • 22 files in the program variable directory; with the unchanged annual aggregator, the manifest contains 23 variables.
  • 17 Nebraska Child Care Subsidy YAML test files (115 cases).
  • 1 towncrier changelog fragment.

The PR does not include local research under sources/, uv.lock, partner contract tests, or registry changes.

Testing

  • make format: passed.
  • The full Nebraska CCDF program directory passes locally: 115/115 cases. The branch is merged with current main (including the weekly_hours_worked_before_lsr default change, which Nebraska is unaffected by — its activity test keys on earned income, student status, or the CCDF activity fallback, not work hours).

Testing was scoped to the Nebraska Child Care Subsidy paths. No broader state, package, partner-contract, or microsimulation test suite ran locally.

@codecov

codecov Bot commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (83acd68) to head (714844b).
⚠️ Report is 15 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #9186    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            4        23    +19     
  Lines           62       415   +353     
  Branches         0         4     +4     
==========================================
+ Hits            62       415   +353     
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 5 commits July 31, 2026 17:24
Remove unobservable administrative and provider-billing inputs that no
other state childcare model carries: registration fees, transportation
and summer activity fee add-ons, absence-day billing, and caseworker
approval flags. The earned-income disregard now keys on the enrollment
flag as the proxy for LB304's 12-continuous-month requirement, the
in-home provider condition on observable special-needs or child-count
pathways, and the categorical waiver on observed foster care.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mirror the eligibility/income/rates/fee layout used by other state
childcare programs in both the variable and test trees, updating the
intra-package Enum import paths accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Address the review's seven critical findings and selected
should-address items:

- Default the provider type to the licensed-center category and treat
  unreported care hours as a full-day unit so survey households flow
  through the rate matrix; reimburse billed expenses when the matrix
  prices nothing (C1).
- Pay the base rate to licensed providers with no reported quality
  tier (C2).
- Guard the in-school child earnings exclusion against unit heads and
  spouses and extend it to K-12 students (C3, A4).
- Replace the hard-coded October 2025 transition tuple with a
  provider_rate_model_in_effect parameter and drop the now-redundant
  zero backfills from the rate matrix files (C4).
- Correct the age-threshold citations to 392 NAC 2-004(E) (C5), date
  the 10% earned income disregard to LB359's 2014-07-18 effective date
  (C6), and date the 7% family fee to the July 2020 State Plan
  amendment (C7).
- Extend the categorical waiver to protective-services cases (A1),
  round the 85% SMI exit limit to the nearest dollar (A3), and fix
  reference anchors and sections (A16-A21).
- Add coverage: unreported-quality base rate, in-home two-child
  boundary, the four unasserted license-exempt rate cells, federal
  aggregator assertions, SMI rounding, teen-head earnings, and
  expense-fallback cases (A9-A11, A13).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hua7450
hua7450 marked this pull request as ready for review August 13, 2026 02:57
@hua7450
hua7450 requested a review from DTrim99 August 13, 2026 02:59
@DTrim99

DTrim99 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Program Review — Nebraska Child Care Subsidy (rewrite)

PR #9186 · Fixes #9185 · Branch: 7 ahead / 0 behind main (CURRENT — no rebase needed) · CI: 33/33 pass

Scope — what it does

This is a rewrite of an incomplete model, not a fresh program. It converts Nebraska's Child Care Subsidy (CCDF) from a stub into a current-law implementation with:

  • Monthly eligibility (income tiers, child/parent/activity/asset/provider gates) under the SPM unit as the assistance-unit proxy.
  • A provider-reimbursement matrix priced by location × provider type × age group × quality tier × rate unit, plus license-exempt family-home and in-home rates.
  • The provider_rate_model_in_effect toggle (flips false→true on 2025-10-01): before the date, the legacy expense-based path is preserved; after, reimbursement = Σ over children of min(state_max_rate, private_charge) − monthly family fee, floored at 0.
  • LB304 income tiers: 185% FPG initial / 200% FPG redetermination / 85% SMI current-period exit, with a 10% earned-income disregard after 12 continuous months.
  • A 7% family fee (waived for TANF-enrolled / categorical / fee-free ≤100% FPG).
  • Annual output contract preserved: the top-level ne_child_care_subsidy switched YEAR→MONTH, and the unchanged ne_child_care_subsidies (adds=["ne_child_care_subsidy"], YEAR) auto-sums the 12 monthly values, so the federal aggregator chain is unaffected.

Sources: Neb. Rev. Stat. § 68-1206 (as amended by LB304, effective 2026-07-18), LB304/LB359 slip PDFs, 392 NAC (Title 392), the FFY2025-27 CCDF State Plan, and the DHHS Subsidy-Rates.pdf 2025-27 rate chart (10 source PDFs total).

Note: the rate value audit is a SAMPLE (14 licensed cells + license-exempt + structure), not an exhaustive check of all ~192 licensed cells. See Caveats.


Verified correct — the rewrite-risk verifications

This rewrite deliberately verified the hardest failure modes, and all held up:

  1. Deleted-variable integrity — CLEAN. All 5 old flat-dir variables (ne_child_care_subsidy_countable_income, _eligible, _eligible_child, _eligible_parent, _income_eligible) are deleted and recreated under eligibility/ & income/ subdirs with identical class name strings. PolicyEngine resolves by class name, so the moves are safe. Grep for references outside the NE CCS dir returned zero dangling references; the federal aggregator chain (child_care_subsidiesne_child_care_subsidiesne_child_care_subsidy) is intact. The 5 deleted test YAMLs were replaced/expanded, not dropped.
  2. YEAR→MONTH entity/period change — CLEAN. ne_child_care_subsidy is now MONTH; every referenced variable's definition_period was checked against its usage — YEAR stocks read with period.this_year, MONTH booleans with bare period. All consistent.
  3. provider_rate_model_in_effect toggle — CLEAN and BOTH branches tested. Flips 2025-10-01; every gated rate parameter has a value on/before that date (no backward-extrapolation gap). The legacy false-branch (period: 2024) and the true-branch (period: 2026-01) are both pinned.
  4. Annual output contract preserved via the unchanged adds=["ne_child_care_subsidy"] aggregator.
  5. Rate value audit — 0 mismatch (sample). 14/14 sampled licensed cells match Subsidy-Rates.pdf exactly across both locations × both provider types × 4 ages × 4 tiers × both units; license-exempt family-home (urban+rural) and in-home hourly match; the urban county list (Dakota/Douglas/Lancaster/Sarpy) matches; FULL_PLUS_PARTIAL derivation (= full + partial) verified on 6 cells. The distinctive "collapsed" rural Center cells (Half=Full) reproduce correctly — a strong signal of row-by-row transcription.
  6. Income-tier boundaries pinned. 185% (<=), 200% (strict <), and 85% SMI exit boundaries all have at/below/above cases; SMI rounding, FPG Oct-vintage switchover, and the earned-only 10% disregard are pinned.
  7. Regulatory core SOUND. Income tiers, benefit/reimbursement formula, immigration (child-only CCDF test), asset ceiling ($1M federal CCDF), and variable reuse all match § 68-1206 as amended. Removing the old 2026-10-01 → 1.30 sunset step is correct — LB304 supersedes it. 0 regulatory criticals.

Critical (must fix)

None.

Reclassification note (transparent): our code-pattern validator rated one item CRITICAL — the non-vectorized boolean-mask in-place assignment for the in-home per-child division in ne_child_care_subsidy_maximum_provider_rate.py:4326-4331. We are reclassifying it as the top SHOULD-ADDRESS, not critical. The validator itself states the value is "likely float-safe here" — it demonstrates no wrong output at current values; the concern is dtype-fragility / non-idiomatic index-assignment (a robustness/style issue). Per our classification rules, CRITICAL requires a value mismatch, hard-coded value, incorrect formula, or demonstrated wrong output. A pattern that is currently correct but fragile is SHOULD-ADDRESS. It is nonetheless the first thing to fix — see Should-address #1.


Should address

1. Vectorize the in-home per-child division (top priority; robustness).
variables/.../rates/ne_child_care_subsidy_maximum_provider_rate.py:4326-4331

in_home_base_per_child = np.zeros_like(in_home_monthly)
has_in_home_children = in_home_child_count > 0
in_home_base_per_child[has_in_home_children] = (
    in_home_monthly[has_in_home_children] / in_home_child_count[has_in_home_children]
)

np.zeros_like(in_home_monthly) inherits the source dtype; if that array ever comes from an int-typed parameter path, the per-child rate silently truncates, feeding the payment directly. It is provably float here (built from currency × hours), so there is no wrong output today — but the canonical, dtype-safe form should be used regardless:

in_home_base_per_child = where(
    in_home_child_count > 0,
    in_home_monthly / max_(in_home_child_count, 1),
    0,
)

Our code-pattern validator rated this CRITICAL on robustness grounds; we classify it should-address because it produces no wrong output at current values — but it's the first thing to fix.

2. Confirm the categorical-waiver category list is complete per 392 NAC. (Regulatory) ne_child_care_subsidy_categorical_waived returns only foster | protective. The brief listed adoption/guardianship/ward as well. If 392 NAC 001.32 / State Plan 2.2.2(f)-(g) waive income+asset for those additional categories, the model under-covers them; if not, the code is correct and the brief overstated. The State Plan PDF could not be parsed to confirm — author should verify and either add categories or document the exclusion. (Positive: the waiver correctly scopes to income+asset only, not activity/provider.)

3. Give hhs_smi the same Oct-1 vintage that FPG receives. (Regulatory) ne_child_care_subsidy_fpg uses the October publication vintage, but income_eligible pulls hhs_smi at the plain month. If NE's 85%-SMI exit column refreshes on the October cycle (§ 68-1206(3) makes the whole schedule effective Oct 1), FPG and SMI limits sit on different vintage cycles for Jan–Sep. Low materiality (SMI moves slowly; only bites the transitional-exit branch), but worth aligning.

4. Document the microsim downward bias from unpopulated enrolled/at_redetermination input flags. (Regulatory) Both the 10% disregard and the higher redet/current-period ceilings gate on these INPUT booleans, which default false in microsimulation → no household gets the disregard or the 185%→200% bands, biasing modeled eligibility downward toward the 185% initial tier for continuing recipients. Per the microsim-default rule: report the direction, don't prescribe. Remedy options: populate the dataset flags, or document in the docstrings.

5. Confirm the 392 NAC 2-004(E) age-13 continuity citation. (Regulatory) eligible_child uses enrolled & age < 13+1 so a child turning 13 mid-period stays eligible. Fine as modeled (never fires in microsim without the input); confirm the NAC citation actually supports "turns 13 during eligibility period stays through period."

6. Changelog type: added vs changed (maintainer judgment). (Code) changelog.d/ne-ccdf.added.md uses added, but this PR redefines an already-shipped variable (ne_child_care_subsidy YEAR→MONTH), deletes/relocates 5 variables, and changes existing-user outputs — which fits changed (or a split: added for new sub-variables, changed for the redefinition). The team may still prefer added since the program was a stub. A fragment DOES exist, so the hard CI requirement is satisfied — flag for maintainer, not a blocker.

7. adds mechanism asymmetry between gross-income sub-variables. (Code) gross_unearned_income consumes the source list via adds = "<param path>"; gross_earned_income reads p.sources.earned in a formula (to exclude student earnings — intentional/correct); gross_income uses adds = [var names]. All valid; a reviewer may prefer consistency. No change required.

8. Cross-variable Enum imports — confirm import-smoke green. (Code) provider_eligible.py and maximum_provider_rate.py import Enum classes from sibling variable modules. Accepted PolicyEngine pattern, but makes provider-eligibility import-order-dependent. CI import-smoke should confirm the tree loads cleanly (the enum-defining modules only depend on model_api, so they are importable standalone).

Test-hardening (MEDIUM):

9. Legacy false-branch eligibility formula is never directly tested. (Tests, MEDIUM-1) ne_child_care_subsidy_eligible.py's pre-matrix path (parent & child & income, without activity/provider/asset gates) is only reached via ne_child_care_subsidy.yaml Case 5, which supplies ne_child_care_subsidy_eligible: true as an input — so the legacy formula itself never executes. Add a period: 2024 case computing ne_child_care_subsidy_eligible from a household.

10. enrolled & at_redetermination waiver-withdrawal is not isolated. (Tests, MEDIUM-2) No case sets enrolled=true AND at_redetermination=true at the eligibility level to confirm the asset/activity waiver is correctly withdrawn at redetermination. Add an eligible.yaml case (enrolled=true, at_redetermination=true, is_ccdf_asset_eligible=false, failing caretaker → expect false).

11. No month-varying annual-aggregation case. (Tests, MEDIUM-3) ne_child_care_subsidies.yaml only asserts a constant-across-months value, so the tests would pass even if the adds= wrapper silently used only January. This is the exact contract the YEAR→MONTH rewrite changed — worth one case where the monthly subsidy varies across months to confirm annual = sum-of-12.


Suggestions

  1. Unmodeled ancillary in-home fees (scope note, MICROSIM-report-only). The rate chart also publishes in-home Transportation $5.00/occurrence and Summer Activity Fees $50.00/child/month (Toddler/Preschool/School-Age, Jun–Aug). These are not encoded in the PR. Out of the daily-rate-matrix scope audited; flag as an unmodeled-scope item for any microsim writeup. Not prescribing a change.
  2. Special-needs 0.25 value not source-verified this pass. special_needs/max_increase and in_home_increase_per_child = 0.25; the rate chart does not state the 25% figure (it is a handbook/392 NAC provision), and the handbook was not fetched this pass. Structural-only note — the logic and a +25% test are present; the value itself is uncorroborated against a primary source here.
  3. initial_eligibility.yaml back-year date convention (regulatory suggestion). The single 1-day 2021-08-27:1.3 / 2021-08-28:1.85 step is a modeling convention for "the 185% era." Historically 185% arrived via LB485 (~2023) with a 130% interim. Consider a date closer to the actual LB485/2023 effective date if back-year accuracy matters. Low materiality.
  4. LOW test-hardening (Tests, LOW-1..4): (a) in-home mixed-provider unit counting (3 eligible children, only 2 using in-home → the 2 should fail); (b) in-home zero-authorized-weekly-hours fallthrough to FULL_DAY; (c) min(weekly, daily×days) interior of the weekly-hours cap; (d) INFANT ceiling just-below case (17mo → INFANT).
  5. Verified-correct-for-the-record items (Code SUGGESTIONs): the 192-leaf licensed breakdown is complete with string keys and currency outputs (avoids the breakdown/int-output and boolean-key traps); Enum defaults (CENTER/NONE/RURAL/SCHOOL_AGE) are safe because NONE remaps to BASE/PARTIAL_DAY at index time; hard-coded values essentially clean (only +1 age-band offsets and framework constants); reference/label/naming formatting clean.

Caveats

  • Rate audit is a SAMPLE. 14 licensed cells + license-exempt + structure were checked (0 mismatch); not all ~192 licensed cells were verified. Sampled cells span both locations, both provider types, all 4 ages, all 4 tiers, both units.
  • Special-needs 0.25 not source-verified this pass (handbook/392 NAC not fetched; structural-only).
  • State-Plan-only regulatory items (exact categorical-waiver category list, family-fee 7% in the Plan) could not be independently parsed from the binary PDF; relied on the codified statute + in-code citations.
  • Branch is CURRENT (0 behind main) — no rebase needed, unlike the other CCDF PRs.

Validation summary

Dimension Result
Regulatory 0 critical. Income tiers (185/200% FPG, 85% SMI), 10% disregard, benefit/reimbursement formula, immigration, asset, variable reuse all match § 68-1206 (as amended by LB304). Sunset-removal correct. 4 should-address (waiver list, SMI vintage, microsim bias, NAC 2-004(E) cite).
Rate value audit (sample) 14/14 sampled licensed cells match; license-exempt + urban county list + FULL_PLUS_PARTIAL derivation match. 0 mismatches. Special-needs 0.25 unsourced this pass; transportation/summer fees unencoded (scope).
Code 0 true critical (validator's CRITICAL reclassified → top should-address). Deleted-var integrity, YEAR→MONTH, toggle alignment, hard-coded scan all CLEAN. Should: vectorize division, changelog type, adds asymmetry, Enum import-smoke.
Tests No critical gaps; both rate-model branches pinned; 96+96 licensed cells asserted; income-tier boundaries + deleted-file scenarios re-covered. 3 MEDIUM (legacy branch, waiver-withdrawal, month-varying annual) + 4 LOW.
CI 33/33 pass. Branch current (0 behind main).

Review severity: APPROVE (recommend)

Justification: there are 0 true criticals — the code validator's CRITICAL is a currently-correct, provably-float pattern reclassified to should-address; the rate sample is clean; tests are strong with both toggle branches pinned; and every rewrite-risk (deleted-var integrity, YEAR→MONTH, toggle, output contract) was verified. This clears the bar to approve. The top should-address (vectorization robustness) and the changelog-type question are worth the author's eyes before merge, but neither blocks.

Next steps

/fix-pr 9186

🤖 Generated by /review-program (Claude Code)

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

Address minor nits

hua7450 and others added 5 commits August 13, 2026 13:03
- Vectorize the in-home per-child rate division
- Align the 85% SMI exit limit to the October vintage via a new
  ne_child_care_subsidy_smi variable
- Document the categorical waiver legal basis and the unmodeled
  subsidized guardianship/adoption extension
- Document microsimulation defaults on the enrollment input flags
- Add a changed changelog fragment for the YEAR-to-MONTH redefinition
- Add legacy-path, waiver-withdrawal, SMI-vintage, and month-varying
  aggregation tests

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The merge with main left two coverage lines under the CCDF program, one
carrying Tennessee and the other Oregon. YAML keeps the last key, so Tennessee
dropped out of the coverage list while retaining a complete state entry. Fold
both states into a single line.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…into pr/hua7450/9186

# Conflicts:
#	policyengine_us/programs.yaml
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@hua7450
hua7450 merged commit 9c3d6a1 into PolicyEngine:main Aug 13, 2026
33 checks passed
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.

Complete and correct Nebraska Child Care Subsidy (CCDF) implementation

2 participants