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
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 2024compiled a registry whose 1,486 dollar targets all failed the period contract withaging_factor_unavailable: thecbo_growth_factor_agingmodel 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_soitables for ty2020–2023 andcbopackages for ty2023, dedup onaggregate_fact_key. Registry then compiles clean (5,712 specs, version6ac800691458at main556166a).Proposal
Either a
ledger build-bundle --consumer populace-usmode 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