Skip to content

Supply the certified SPM independence role for legacy ACS-local ASEC and PUF records #598

Closed

Description

@anth-volk

Problem

The certified ACS-local source (populace_us_2024_acs_local.h5, SHA-256 769756c31f3ca646d12c272511744dec04c0e68870c6946dd945fbba65b6a7ec) does not store is_spm_independent_minor_role for its ASEC and PUF records. policyengine-us therefore falls back to "household head or spouse".

Census builds 28 of those records' SPM units around an independent 15–17-year-old who is not the household head:

  • 27 are single-person units;
  • 1 is a teen parent with a young child.

Under the fallback these units have no classified adult and raise SPM_COMPOSITION_REQUIRED. They are spread across 17 states (MA, SD, MS, NY, PA, CO, IN, OR, MD, MI, LA, OH, VA, MT, RI, MO, HI), none of them in Utah. Once the group-quarters fix (#597) lands, these units would still stop every state and district run that contains them.

The same records are in the certified national release (populace-us-2024-spm-20260915). Its independence list, releases/populace-us-2024-spm-20260915/source_spm_person_independence.csv, has its SHA-256 already pinned in the .py bundle manifest. That list covers exactly the source's 166,321 ASEC/PUF people, joined on person_id and person_spm_unit_id, and its provenance resolves exactly 28 minor-only units. The ACS-local build lacks the role because it ran a few hours before PolicyEngine/microcosm#959 merged.

Backward-compatible fix

When cutting year files from this exact source, .py would set is_spm_independent_minor_role for each person:

  • ASEC/PUF people get the value from the hash-verified national list. The match must be exact: no missing, extra or duplicated people, and no SPM unit disagreements.
  • ACS people get is_household_head, which is the value the model computes for them today.

Only the 28 units change.

When this is no longer needed

This is backward compatibility for a legacy certified source, kept while anything still reads that source. The source-specific derivation can be retired once a certified ACS-local release stores is_spm_independent_minor_role for its ASEC/PUF records itself, for example a rebuild that includes PolicyEngine/microcosm#959.

Activity

  1. changed the title [-]Temporarily supply the certified SPM independence role for ACS-local ASEC and PUF records[/-] [+]Supply the certified SPM independence role for legacy ACS-local ASEC and PUF records[/+] on Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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