Document the work-program participation inputs as unsourced assumptions#362
Conversation
Add the three work-program inputs (is_snap_work_program_participant, weekly_snap_work_program_hours, is_snap_workfare_participant) to the documented-absent-inputs register: no ASEC item measures SNAP E&T, qualifying work-program, or workfare participation, so the always-False defaults are now visible in every release manifest with the compliance channels they suppress. USDA reports E&T reaches a small minority of participants, so the default understates compliance only modestly. Add contract tests pinning the register's coverage, issue citations, disjointness from the degenerate exclusions, and non-overlap with seeded inputs. Closes #249; advances #248. Stacked on #352. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fe1f9a7 to
1fd7b8d
Compare
|
#352 merged, so this is rebased onto main and out of draft — the diff is now exactly the register extension (three work-program entries) plus the contract tests. |
MaxGhenis
left a comment
There was a problem hiding this comment.
Approve
Verified each new register entry against the underlying policyengine-us variables (installed build pin, gov/usda/snap/eligibility/work_requirements/). All three are real, unseeded, and the reasons are accurate — two of them match the variable's own documentation on the load-bearing citations.
weekly_snap_work_program_hours(float, defaults 0): variable doc states these hours "count toward the 20-hour weekly ABAWD work-activity threshold, alone or combined with hours of employment ... Survey data does not capture this input, so it defaults to zero; see #249." The register reason ("combined work-plus-program hours toward the 20-hour ABAWD test omit program hours") is exactly this. Feedsmeets_snap_abawd_work_requirements.is_snap_workfare_participant(bool, defaults False): variable doc cites "7 CFR 273.7(m)" and "satisfies the SNAP ABAWD work requirement regardless of the number of hours." The register reason reproduces both facts verbatim. Feedsmeets_snap_abawd_work_requirements.is_snap_work_program_participant(bool, defaults False): per its doc, this drives general work-requirement compliance (7 CFR 273.7(a)(1)) and explicitly "does not satisfy the ABAWD work requirement," so it flows tomeets_snap_general_work_requirements. The "always-False default understates compliance only modestly" framing is directionally correct (defaulting False marks would-be E&T compliers as non-compliant) and appropriately hedged for an assumptions register; #249 tracks the sourcing.
Confirmed absent, not degenerate: none of the three columns is seeded or persisted anywhere in packages/ or tools/, so the disjointness with US_DEGENERATE_INPUT_REVIEWED_EXCLUSIONS is real, not just asserted. The comment edit generalizing "exemption channels" to "compliance/exemption channels" is correct — the #351 inputs drive exemption, the new #249 family drives compliance.
Pattern matches #352/#351: entries added to US_DOCUMENTED_ABSENT_INPUTS with issue-citing reasons, plus a contract test that pins the register to exactly the six known unsourced inputs, requires every reason to cite a tracking issue, and enforces disjointness from both the seeded stages and the degenerate-exclusions register. CI green (test + wheels, 3.13/3.14), MERGEABLE/CLEAN.
Not merging (review-only per request).
Closes #249; advances #248. Stacked on #352 (draft until it merges, then rebases to main — the diff vs #352 is one register extension plus contract tests).
Summary
The CPS ASEC has no item measuring SNAP E&T, qualifying work-program, or workfare participation — confirmed against both the raw ASEC column inventory and the retired enhanced-CPS pipeline, which never carried these inputs either. Per #249's scope ("if no source exists, add an explicit release diagnostic/documented assumption rather than relying on an invisible default"), this adds the three work-program inputs to the
documented_absent_inputsregister introduced in #352:is_snap_work_program_participant— general work-registration compliance via program participation never fires; USDA reports E&T reaches a small minority of participants, so the always-False default understates compliance only modestly.weekly_snap_work_program_hours— combined work-plus-program hours toward the 20-hour ABAWD test omit program hours.is_snap_workfare_participant— workfare under 7 CFR 273.7(m) satisfies the ABAWD requirement regardless of hours; defaults False.Contract tests
New
test_us_documented_absent_inputs.pypins the register: exact coverage of the six known unsourced inputs, every entry citing a tracking issue, disjointness from the degenerate-exclusions register (persisted-stuck vs never-persisted classes must not overlap), and no seeded input (pregnancy, disability, discretionary exemptions) listed as absent.Why documentation rather than seeding
Unlike pregnancy (#352) or discretionary exemptions (#353), there is no statutory rate or stable administrative share to seed against at the person level — E&T participation is state-program-specific and small. If a citable assignment basis emerges (e.g., state E&T participation counts), the register entry converts to a seeded stage the same way; until then the honest treatment is a visible always-False assumption.
🤖 Generated with Claude Code