PolicyEngine / PolicyEngine/microcosm

Regenerated ledger feeds fail the period contract: year-filtered bundles drop the CBO aging pivot and prior-year SOI tables

Open
#410 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
4
Avg merge
1d 3h
Merged PRs (30d)
94

Description

Found during the first off-build-machine release run (Build K staging, 2026-07-13). Fail-closed catch #1 of 3.

What happened

A feed regenerated with ledger build-bundle --year 2024 compiled a registry whose 1,486 dollar targets all failed the period contract with aging_factor_unavailable: the cbo_growth_factor_aging model needs the CBO revenue-projections income-by-source series at the TY2023 pivot (the published detail's first year) and the build year, plus prior-year SOI tables for the chained observed-growth segment — but the year filter had cut every non-2024 vintage (CBO detail down to a single year; SOI tables 1_1/1_2/1_4/2_1/4_3 skipped entirely as "not available for requested year").

Why it matters

The v8 feed carries these implicitly, so any consumer who regenerates the feed from the ledger repo — the documented deterministic path — hits this. Nothing states which (package, year) tuples the populace consumer surface requires.

Repro / fix used

Supplemental per-year bundles merged into the feed: irs_soi tables for ty2020–2023 and cbo packages for ty2023, dedup on aggregate_fact_key. Registry then compiles clean (5,712 specs, version 6ac800691458 at main 556166a).

Proposal

Either a ledger build-bundle --consumer populace-us mode that owns the required package×year set, or a checked-in requirement manifest in populace that a feed preflight validates against (family × period coverage), so the gap fails at bundle time with names instead of at registry compile with 1,486 violations.

🤖 Generated with Claude Code

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the failure with ledger build-bundle --year 2024 and follow the registry compile path that reports aging_factor_unavailable. Inspect how year filtering handles the cbo and irs_soi package/year tuples required by the populace consumer. Done means the documented regeneration path validates or includes the required coverage and no longer produces the reported contract violations.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, cli, data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.