PolicyEngine / PolicyEngine/microcosm

is_part_time_college_student never populated — SNAP student rule misses half-time students

Open
#664 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
4
Avg merge
1d 3h
Merged PRs (30d)
94

Description

Finding

The US eligibility-inputs stage (packages/microcosm-build/src/microcosm/build/us_runtime/eligibility_inputs.py) populates is_full_time_college_student (A_HSCOL == 2 & A_FTPT == 1, direct CPS ASEC measurement, per #244) but never populates is_part_time_college_student, which is not among US_ELIGIBILITY_INPUTS_OUTPUT_COLUMNS.

policyengine-us's SNAP student test binds on half-time or more enrollment:

# is_snap_higher_ed_student
return is_full_time_student | is_part_time_student

With the part-time flag defaulting to False, every half-time-to-three-quarter-time college student is treated as a non-student:

  • Baseline: they escape the 7 USC 2015(e) student ineligibility test entirely (SNAP over-eligibility for that group).
  • Reforms: any student-rule analysis (e.g., state E&T designation options) sees only full-time students, understating the affected population.

Why now

PolicyEngine is scoping a student-SNAP state-options project with the Student Basic Needs Coalition (modeling which states extend student exemptions via E&T designations, and what adoption elsewhere would change). The federal student rules are fully encoded in policyengine-us (#8793, #9118, #9119); this input gap is the main data blocker for honest population-level estimates.

Proposed direction

The stage already requires A_FTPT (it fails loudly when missing), so enrollment intensity is in the loaded frame. Extend the stage to emit is_part_time_college_student from A_HSCOL == 2 & the part-time A_FTPT code — confirm the exact code value against the ASEC data dictionary before implementing (the stage docstring documents only A_FTPT == 1 = enrolled full-time). Note the CPS "part-time" category does not distinguish half-time-or-more from less-than-half-time enrollment, while the statute binds at half-time — document whichever mapping is chosen.

Also worth noting in the same pass: work-study receipt (a separate student exemption input) has no CPS source and would need imputation (NPSAS-type) or documentation as unsourced, in the spirit of #351.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in packages/microcosm-build/src/microcosm/build/us_runtime/eligibility_inputs.py and inspect US_ELIGIBILITY_INPUTS_OUTPUT_COLUMNS alongside the existing A_HSCOL and A_FTPT logic. Check the ASEC data dictionary to verify the part-time A_FTPT code and document how CPS part-time maps to the statutory half-time threshold; done when the output includes the part-time student input.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.