Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,48 @@ See [SYSTEM_REQUIREMENTS.md](SYSTEM_REQUIREMENTS.md) for the measured memory,
disk, and CPU footprint of developing and building locally (and what to budget
on a build machine — RAM is the binding constraint).

## Release-gate preflight

Several release gates fail on facts that are already determined by the base
pool, the frozen selection, and the target/coverage registry — no calibration
solve needed to see them. `tools/preflight_us_release_gates.py` recovers those
signals in **minutes** so a two-hour release launch is not the first place a
knowable defect surfaces:

```bash
uv run python tools/preflight_us_release_gates.py \
--base-h5 out/base-m/base_populace_us_2024_puf_support.h5 \
--selection-source-manifest inputs/buildm_keogh_swap_selection_source.json \
--export-input-mass-reference-h5 forensics/populace_us_2024.h5
```

It is read-only against the H5 artifacts and reports, per check, `PASS` /
`FAIL` / `AT-RISK` with the measured numbers (exit `1` on any FAIL, `2` on
AT-RISK only, `0` clean):

1. **Selection carryover** — the frozen selection-source manifest maps cleanly
onto the base pool (the frozen-support recovery contract, run pre-solve).
2. **Zero-support preview** — compiled positive fiscal targets whose
materialized support is ~0 under the selection at base weights stay a
structural zero after the solve. Direct-column targets are checked;
engine-derived measures are marked *not statically checkable* (pass
`--ledger-facts` to compile the target surface).
3. **Export-mass parity risk** — each export-mass column's pool mass at *base*
weights against its reference band, honoring the release tool's
`US_EXPORT_INPUT_MASS_REVIEWED_EXCLUSIONS` register (reused, never
re-declared). A column out of band pre-solve is flagged for review.
4. **Smoke-probe support audit** — every reform-coverage probe leaf's pool vs
*selected* nonzero support and pool sign-leg decomposition. A leaf with pool
support but zero selected support **fails** (the input the frozen selection
cannot express); a thin selection or a signed leaf whose net sign
contradicts the probe's `expected_sign` is AT-RISK.

**Run it** at base-build exit, before any release launch, and after any change
to the selection-source manifest or the target/coverage registry. The
synthetic-fixture unit tests
(`packages/populace-build/tests/test_us_release_gate_preflight.py`) run in the
normal `uv run pytest` suite; the real-H5 mode above is a local/runbook step.

## Releasing & alerts

Publishing uploads the locally built `releases/<id>/` artifacts to the Hugging
Expand Down
Loading
Loading