Skip to content

ACS-local donor worker count uses the earnings proxy because the support base drops A_LFSR #1554

Open

Description

@MaxGhenis

After #779 (the #767 humanitarian immigration statuses), the US immigration kernel tests workers with measured labor-force status: A_LFSR in (1, 2, 3, 4) at age 16 or older (us_runtime/immigration.py, _CPS_LABOR_FORCE_STATUS_CODES). The ACS-local stage (us_runtime/acs_local_immigration.py) applies the same test to ACS rows by mapping ESR onto the A_LFSR codebook. It also measures the donor's delivered worker mass with that test, but only when the donor carries A_LFSR.

In production the donor does not carry it:

  • tools/build_us_puf_support_base.py (_with_us_immigration_inputs_from_asec_source) attaches A_LFSR from the pinned ASEC archives as an ephemeral input, runs the immigration stage, and then drops the column from its output.
  • tools/_legacy/build_us_acs_multispine_base.py reads that support base as the ACS-local donor.
  • So _donor_status_masks falls back to the earnings pair (WSAL_VAL > 0 or SEMP_VAL > 0, or the harmonized income equivalents) on donor rows. The stage receipt records the test it used in donor_status_columns.worker.

Effect. The ACS worker residual (the 9.7M national control minus what the donor delivers at pooled weights) carries the gap between prior-year earnings and current labor-force status on donor rows. When the kernel bound the national control, it classified those same rows with A_LFSR. The ACS side and the kernel agree; only the donor's delivered count uses the proxy.

Fix options.

  1. Restore A_LFSR on donor rows in the ACS multispine builder with fill_asec_labor_force_status_source, using the pinned archives the support base already uses (exact PERIDNUM join).
  2. Keep A_LFSR, or a derived labor-force flag, on the support base output.

Once the donor carries A_LFSR, _donor_status_masks uses it with no further change. The earnings fallback can then become a refusal, so the two sides can never use different worker tests again.

Acceptance: an ACS-local staging receipt whose donor_status_columns.worker reads A_LFSR in [1, 2, 3, 4] and age >= 16, and a test that refuses a donor without A_LFSR.

Activity

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