Skip to content

Remove the inert federal CCDF implementation - #9355

Draft
hua7450 wants to merge 2 commits into
mainfrom
remove-inert-federal-ccdf
Draft

Remove the inert federal CCDF implementation#9355
hua7450 wants to merge 2 commits into
mainfrom
remove-inert-federal-ccdf

Conversation

@hua7450

@hua7450 hua7450 commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

Removes the inert federal CCDF implementation under gov/hhs/ccdf/. The "federal" encoding was legacy New York data (market rates, copay percentages, county clusters), and the whole subsystem contributed $0 to every household: spm_unit_ccdf_subsidy is not listed in child_care_subsidy_programs.yaml or any benefit aggregate. New York now has a proper state implementation (#9282) that reads none of these files.

Fixes #9283

Changes

Commit 1 — inert NY legacy:

  • Variables: ccdf_age_group, ccdf_market_rate, ccdf_county_cluster, spm_unit_ccdf_subsidy, spm_unit_total_ccdf_copay, is_ccdf_home_based, and the orphan input stubs is_ccdf_initial_income_eligible, is_ccdf_continuous_income_eligible
  • Parameters: amount.yaml (NY market rates), copay_percent.yaml, county_cluster.yaml
  • Their 5 test files under tests/policy/baseline/gov/hhs/ccdf/

Commit 2 — the eligibility chain:

  • Variables: is_ccdf_eligible, is_ccdf_income_eligible, is_ccdf_reason_for_care_eligible, ccdf_income_to_smi_ratio, ccdf_income, and their 5 test files
  • Prose touch-ups in NY CCAP and SD CCA files that named the deleted variables
  • The intermediate CI run at this commit failed exactly on Household API Partners, confirming the partner contract tests guard this surface

Commit 3 — partner test update:

  • Deleted edge_cases/federal/childcare/ccdf/federal.yaml and ccdf/ma.yaml (existed solely to contract-test the removed chain)
  • signatures/ma.yaml: removed 20 is_ccdf_eligible output pins and 20 is_ccdf_reason_for_care_eligible input lines
  • 7 Head Start edge-case files: removed 38 inert is_ccdf_reason_for_care_eligible input lines (nothing reads them; no expected outputs change)

Partner impact

The API partner was informed and approved removing is_ccdf_eligible (appears in their requests as an output) and is_ccdf_reason_for_care_eligible (as an input).

Kept — genuinely shared federal infrastructure

is_ccdf_asset_eligible (38 state readers), is_ccdf_immigration_eligible_child (41), meets_ccdf_activity_test (29), is_enrolled_in_ccdf, is_ccdf_age_eligible, child_care_subsidies, ccdf_duration_of_care (Idaho ICCP), and the shared parameters (asset_limit, age_limit, income_limit_smi — read by MO CCS, child_care_subsidy_programs).

Testing

  • All 619 partner tests pass locally after the update (8-shard parallel run, zero failures)
  • 23 remaining gov/hhs/ccdf tests, 119 NY CCAP, 151 SD CCA, and 69 Idaho ICCP tests pass
  • Repo-wide sweep confirms no remaining references to any deleted name

🤖 Generated with Claude Code

@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.24%. Comparing base (724e795) to head (5c891e7).
⚠️ Report is 29 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##              main    #9355       +/-   ##
============================================
- Coverage   100.00%   67.24%   -32.76%     
============================================
  Files            1        3        +2     
  Lines           35       58       +23     
  Branches         2        0        -2     
============================================
+ Hits            35       39        +4     
- Misses           0       19       +19     
Flag Coverage Δ
unittests 67.24% <ø> (-32.76%) ⬇️

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 marked this pull request as ready for review August 28, 2026 14:05
MaxGhenis added a commit that referenced this pull request Sep 7, 2026
Remove the inert New York-data federal CCDF path (part 1 of #9355)
hua7450 and others added 2 commits September 7, 2026 07:45
Delete is_ccdf_eligible, is_ccdf_income_eligible,
is_ccdf_reason_for_care_eligible, ccdf_income_to_smi_ratio, and
ccdf_income with their tests, and reword the NY/SD prose that named
them. The income_limit_smi parameter stays (MO CCS reads it), as does
is_ccdf_age_eligible per the issue keep list.

The partner analytics-coverage tests still reference these variables
on purpose: their expected failure demonstrates the contract coverage.
A dedicated follow-up commit will update the partner tests.

Part of #9283

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Delete the two ccdf edge-case files, which existed solely to
contract-test the removed chain; strip the is_ccdf_eligible output
pins and is_ccdf_reason_for_care_eligible input lines from the MA
signature tests; and drop the inert is_ccdf_reason_for_care_eligible
inputs from the Head Start edge cases (nothing reads them, so no
expected output changes). Partner was notified and approved removing
both variables from their request surface.

Fixes #9283

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis force-pushed the remove-inert-federal-ccdf branch from 1d4fd56 to 4853b91 Compare September 7, 2026 11:46
@MaxGhenis

Copy link
Copy Markdown
Contributor

Thanks for this, Ziming. I dug into the partner side before merging and split it in two.

The NY-data path (your first commit) was safe, so I merged it as #9401. It touched no partner test, passed the full suite including Household API Partners on its own, and it is where the #9400 crash lived.

The eligibility-chain removal needs partners to ship first. MyFriendBen's main still sends is_ccdf_reason_for_care_eligible on every member and reads is_ccdf_eligible as the CCDF program output (programs/framework/pe_dependencies/member.py, programs/programs/cross_white_label/ccdf/base.py, both touched within the last three weeks). They send one bucketed request per screen, and the household API rejects an unknown input with a 400 that their client treats as a whole-bucket failure, so the first request against a model without those variables would blank every PolicyEngine program on that screen. Axiom's inventory of household API traffic (90 days to July 2) shows is_ccdf_eligible requested by 4 clients across 5,238 uses, so this is wider than one partner. I could not find the approval thread. If you have it, could you link it here and ask MFB for the PR that drops both variables? Once that ships, this half can go in, ideally with is_ccdf_reason_for_care_eligible added to the API's deprecated-inputs shim as a safety net.

What I did to this branch. Rebased it onto main so it now carries only the chain half (your two commits, authorship intact), rewrote the changelog fragment for that scope since towncrier consumed the original on merge, and marked the PR draft until the partner side is settled. The remaining CCDF, NY CCAP, SD CCA, and childcare partner suites pass locally on the rebased head.

@MaxGhenis
MaxGhenis marked this pull request as draft September 7, 2026 11:47
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.

Remove the inert federal CCDF implementation (New York data under gov/hhs/ccdf)

2 participants