Skip to content

SSA SSI federal-payment recipients by age band, December 2024#114

Merged
MaxGhenis merged 1 commit into
mainfrom
ssa-ssi-age-bands-470
Jul 21, 2026
Merged

SSA SSI federal-payment recipients by age band, December 2024#114
MaxGhenis merged 1 commit into
mainfrom
ssa-ssi-age-bands-470

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Ledger half of PolicyEngine/populace#470: SSI federal-payment recipient counts by age group from SSA's SSI Monthly Statistics December 2024 Table 1 — the exact primary page populace's hardcoded US_SSI_TAKE_UP_AGE_TARGETS constants cite. Four facts under ssa_ssi_monthly.month2024_12.ssi_federal_payment_recipients.by_age.*: all-ages 7,289,843, under-18 1,001,922, 18–64 3,905,779, 65+ 2,382,142 — every value verbatim from the published row, bands summing exactly to the total, each band fact carrying first-class age constraints (the census-S0101 pattern) so populace can bind them as indicator count targets and delete the constants (#469/#473 machinery removal).

Provenance note: SSA 403s non-browser fetches, so the committed byte-exact HTML capture was fetched in a real browser with sha256 computed in page context and proven equal to the on-disk file; the parsed CSV artifact follows the repo's ssa HTML-source convention. Both files sha-recorded in the manifest with canonical R2 keys — the object upload shares the existing credentialed-machine residual (ledger publish-raw, same as cms-nhe-table-24).

Validation: validate-package + build-suite green (4 facts, acceptance clean, lineage 1.0); rebased mid-task onto the #87 consumer-fact schema enforcement and re-verified — full CI-parity pytest 582 passed / 1 skipped incl. the bundle, ruff clean, wheel smoke reproduces the oracle values from packaged resources.

🤖 Generated with Claude Code

New ssa-ssi-monthly-statistics-2024-12 source package minting the SSA
age-band recipient counts that populace hardcodes today as
US_SSI_TAKE_UP_AGE_TARGETS, so populace can bind them as ordinary
age-band count targets on the SSI take-up flag
(PolicyEngine/populace#470) once the count-match assignment machinery
is deleted (PolicyEngine/populace#469) in favor of
characteristic-varying take-up priors (PolicyEngine/populace#473).

Source of record: SSA "SSI Monthly Statistics, December 2024", Table 1
(Number of recipients, total payments, average monthly payment, and
number of awards, by type of payment, eligibility category, and age,
December 2024), row "Total with-- Federal payment" -- persons receiving
a federal SSI payment in December 2024:
https://www.ssa.gov/policy/docs/statcomps/ssi_monthly/2024-12/table01.html

  Under 18       1,001,922
  18-64          3,905,779
  65 or older    2,382,142
  All ages       7,289,843 (= sum of the three bands)

These byte-match the populace US_SSI_TAKE_UP_AGE_TARGETS constants, and
the exported consumer facts reproduce all four values exactly. The
publication is HTML-only, so per the existing ssa package convention
the parsed artifact is the extracted long-form CSV (sha256
44438b49392c2a581a239c7490492152c408213f313f450a762d84281de98e40) and,
beyond that convention, the verbatim page capture is committed
alongside it (sha256
fa999c78ffac664b6c269e57b9a115a2fa3c74fe7d894ee137f966fa68d69ad6,
hash-verified against the exact bytes the browser fetched from ssa.gov;
the page embeds per-request Akamai analytics tokens, so refetched bytes
differ inside one inline script block while the table content is
stable).

Record set
ssa_ssi_monthly.month2024_12.ssi_federal_payment_recipients.by_age
(period_type month, period 2024-12) carries census-S0101-style age
constraints (>=0/<18, >=18/<65, >=65) that the agent-acceptance
age-band evidence rules validate against the CSV's "Aged 0-17" /
"Aged 18-64" / "Aged 65 and over" labels, plus an exact concept
alignment to ssa.ssi_federal_payment_recipient_count whose evidence
notes state the federal-payment universe (includes recipients also
receiving state supplementation; excludes the 134,013
state-supplementation-only recipients; includes retroactive payments
per footnote c) and the populace#470 binding. The manifest declares
canonical ledger-raw locations; publish with `ledger publish-raw
--root db/data` from a credentialed environment.

Bundle pins move +4 facts / +1 package (ssa 422 -> 426, month:2024-12
260 -> 264, country:0100000US 2105 -> 2109, person 3684 -> 3688); a
focused package test pins all four values, the constraint sets, and
the alignment metadata.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis merged commit 40b44c6 into main Jul 21, 2026
2 checks passed
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.

1 participant