You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ACS-local donor worker count uses the earnings proxy because the support base drops A_LFSR #1554
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.
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).
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