Skip to content

SSA SSI recipients by age band: mint as ledger facts, bind as registry count targets #470

Description

@MaxGhenis

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions