Skip to content

Published release exports can no longer serve as --base-h5: QBI input reconciliation requires base-only PUF columns #412

Description

@daphnehanse11

Found during the Build K staging run (2026-07-13). Fail-closed catch #3 of 3 — this one is structural, not feed drift.

What happened

Passing the published Build J export (populace_us_2024.h5, sha 9d1e460d…) as --base-h5 fails at with_us_qbi_input_reconciliation (release tool, unconditional since the QBI/SOI wiring): it requires 15 PUF-imputed columns (business_is_sstb, w2_wages_from_qualified_business, unadjusted_basis_qualified_property, …) that only exist on the 337k base produced by build_us_puf_support_base.py — the release export's column surface never carried them.

Why it matters

--base-h5 documents itself as "Existing Populace US H5 to recalibrate. Defaults to HF latest." That default path — recalibrate the published artifact — now fails unconditionally, since HF latest is a release export. Anyone without a base h5 is blocked; until 2026-07-13 the base existed only on the build machine (now mitigated: populace-us-staging carries bases/build-j/… with a MANIFEST, and #406's checkpointed base builder makes rebuilds feasible).

Options

  1. Carry the 15 QBI columns in release exports (they are person-level inputs; cost is export width).
  2. Make the reconciliation conditional on the columns being present, with a loud gate downgrade recorded in the manifest when absent (weakens the SSTB identity guarantee — probably wrong).
  3. Keep it hard, but fix the --base-h5 help text and fail with a message that names the staging bases/ path — recalibration simply requires a base, not an export.

(3) is the minimal truth-telling fix; (1) is the one that restores the "recalibrate HF latest" default.

🤖 Generated with Claude Code

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