ACS group-quarters records draw a housing take-up flag in the local-area transfer

未关闭
#975 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@DTrim99 已经在做这个了。

开始于 2026年9月28日。

  • #1055 来自 @DTrim99 —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
52/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python

调研方向

Start in us_runtime/acs_transfer.py by reading _pregnancy_structural_policy_identity and the structural_target_policies registration. Then inspect the stacked-spine terminal contract and the attested imputation.yaml entry, using invented fixtures for a group-quarters unit and a housing unit. Done means both flags are False with a count receipt for group quarters, housing units are unchanged, and an empty mask cannot silently pass.

由索引模型根据 Issue 内容生成。

描述

What

In the ACS local-area build, takes_up_housing_assistance_if_eligible is a rule-less QRF transfer target that the build is required to fill (us/spec catalogs mark it nullable: false; the stacked-spine no-residual gate refuses a null), and the transfer has no group-quarters carve-out for it. So group-quarters records, which have no housing unit, draw a housing take-up flag from the donor.

Measured (2026-09-22, counts only, on the full uncapped staged frame of the local hours rebuild, experiments/us-acs-local-hours-rebuild-20260922/ in #974)

ACS SPM units by household TYPEHUGQ, and how many carry takes_up_housing_assistance_if_eligible == True after the transfer:

TYPEHUGQ SPM units take-up flag True
1 (housing unit) 1,348,408 32,495
2 (institutional GQ) 84,422 2,990
3 (noninstitutional GQ) 98,784 3,331

receives_housing_assistance is missing (nullable) on every ACS unit, so the flag is the only housing-receipt signal these 6,321 group-quarters units carry. The existing carve-out for structurally absent housing inputs is scoped by the literal family name "housing" (pre_subsidy_rent and the rent columns; _reviewed_limitations in tools/_legacy/build_us_acs_multispine_base.py lists them as acs_group_quarters_housing_universe), which these two flags are not in.

Proposed fix

A structural eligibility policy in us_runtime/acs_transfer.py in the shape of _pregnancy_structural_policy_identity: force receives_housing_assistance and takes_up_housing_assistance_if_eligible to False on the TYPEHUGQ in {2, 3} mask with its own receipt (count of units set), registered in structural_target_policies, the stacked-spine terminal contract and the attested imputation.yaml entry; refuse if the mask is empty while group-quarters rows are present, so it cannot silently no-op. Setting False rather than null is forced by the nullable: false catalog entry and the no-residual gate. Tests on invented fixtures: a group-quarters unit comes out False on both flags with the count receipted; a housing unit is untouched.

This stands on its own, independent of the SPM measurement-universe work (policyengine-us#9462); it is PR 2 in docs/us-spm-measurement-universe-producer.md (branch us-spm-measurement-universe-producer-design), where the mechanism is read through with file:line.

🤖 Generated with Claude Code

主要语言
Python
星标
0
派生
6
平均合并
2 天 5 小时
30 天内合并 PR
150

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

PolicyEngine/microcosm 的其他 Issue

查看 PolicyEngine/microcosm 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。