PolicyEngine / PolicyEngine/microcosm
SSA SSI recipients by age band: mint as ledger facts, bind as registry count targets
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 94
Description
Verified gap (Max, 7/21): the three SSA age-band recipient counts (under-18 / 18–64 / 65+, December 2024: 1,001,922 / 3,905,779 / 2,382,142) exist only as hardcoded constants in ssi_take_up.py (US_SSI_TAKE_UP_AGE_TARGETS) driving the assignment machinery — they were never minted as ledger facts nor bound as calibration targets. The registry's SSA SSI surface today: ssi_recipients national+state totals, ssi_total national dollars, ssi_state_payments state dollars; the supplement's aged/blind/disabled category sub-rows stay reviewed-exclusions (engine models no category split — that reasoning does NOT apply to age, which the frame carries directly).
Work: (1) ledger — mint the SSA SSI recipients-by-age table (the source the constants were copied from) as a package with oracle-verified rows; (2) populace — age-band indicator targets on the take-up flag (the reference builder needs age-bound metadata like the AGI-band slices already carry); (3) delete the constants with #469's machinery removal — the bands live in the registry like every other count, and the scorecard reports their misses. Should have been targets even under the old contraption; mandatory once take-up is plain Bernoulli (#469).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in ssi_take_up.py at US_SSI_TAKE_UP_AGE_TARGETS, then trace the ledger, populace, registry, and reference-builder paths involved in age-band targets. Review #469 for the machinery-removal context. Done means the source table is minted as oracle-verified ledger facts, age-band indicator targets are bound with age metadata, the constants are removed, and scorecard misses are reported.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100