diff --git a/changelog.d/us-labelled-restated-filters.added.md b/changelog.d/us-labelled-restated-filters.added.md new file mode 100644 index 0000000000..4c422bae36 --- /dev/null +++ b/changelog.d/us-labelled-restated-filters.added.md @@ -0,0 +1 @@ +The US fiscal materializer now accepts a Ledger filter key that restates a constraint it already applies — a labelled feed's `ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound` beside the compiled `agi_lower_bound`, or a qualifying-child lower bound or exact count beside `ledger_filter_eitc_child_count` — but only on specs where the restatement and the applied filter select the same population. A restated qualifying-child upper bound is refused outright, whatever it would agree with, until the Ledger confirms whether it means `<` or `<=`. A restatement that disagrees, or that has no compiled counterpart, keeps the existing refusal and now names both values, and the SOI slice's silent skip honours the same rule so an accepted restatement cannot drop a target without an error. diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md new file mode 100644 index 0000000000..4ff82371d4 --- /dev/null +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -0,0 +1,598 @@ +# Restated Ledger filter constraints — build lane report + +Branch `us-labelled-filter-support`, stacked on PolicyEngine/microcosm#955 +(`us-chronicle-feed-repin`). Draft PR: PolicyEngine/microcosm#969. +(2026-09-22: #955 merged into `main` at `6710d0f5f`; this branch is now +re-levelled on `main` and #969 targets `main`. See section 8.) + +## 1. What I read + +Producing the filter metadata: + +- `packages/microcosm-build/src/microcosm/build/ledger_targets.py:3257` — the + **only** producer of `ledger_filter_*` metadata anywhere in the tree: + `metadata[f"ledger_filter_{key}"] = str(value)` over `_dimensions(fact)`. +- `ledger_targets.py:3118` — `_dimensions(fact)` returns the fact's `filters` + mapping, else its `dimensions` mapping, else `{}`. It never reads + `universe_constraints`. +- `ledger_targets.py:3132` — `_constraint_rows(fact)`; the constraint rows are + stamped only as the count `ledger_universe_constraint_count` + (`ledger_targets.py:3253`). + +Producing the compiled constraint the materializer slices on: + +- `us_runtime/fiscal_targets.py:3178` — `_agi_bounds(fact)` folds every + `adjusted_gross_income` constraint row into one pair, `>`/`>=` into the + lower edge and `<`/`<=` into the upper, formatted `str(float(value))` with + `-inf`/`inf` for open ends. +- `us_runtime/fiscal_targets.py:2426-2440` — the SOI target reference's + metadata: `agi_lower_bound`, `agi_upper_bound`, `filing_status`, + `materializer: irs_soi_slice`, plus `_soi_layout_filter_metadata`. +- `us_runtime/fiscal_targets.py:2520-2532` — `_soi_layout_filter_metadata`, + the only place `ledger_filter_eitc_child_count` is emitted by the US + compiler (from the `eitc_child_count` dimension, else the layout groupby). + +Applying it, and the guards (line numbers at this head, after my change): + +- `tools/build_us_fiscal_refresh_release.py:622` — + `SUPPORTED_LEDGER_FILTER_METADATA_KEYS`; `:643` — + `IDENTITY_LEDGER_FILTER_METADATA_KEYS`; `:825` — + `SUPPORTED_SOI_LEDGER_FILTERS` (only `income_range`, `filing_status`, + `eitc_child_count`). +- `:4335` — `_soi_eitc_child_count_filter`; `:4395` — + `_eitc_child_count_mask` (resolves every value to `== 0`, `== 1`, `== 2` or + `>= 3`); `:4418` — `_as_bound`. +- `:4371` — `_unsupported_soi_ledger_filters`, consulted at `:5072` where a + non-empty result `continue`s, dropping the spec from SOI materialization + **with no error**. +- `:4601` — `_unsupported_ledger_filter_metadata`; `:4630` — + `_assert_supported_ledger_filter_metadata`, called once at `:4820`, the top + of `_materialize_target_frame`, i.e. before the SOI loop at `:5068`. +- `:5075-5077` — the applied AGI band: + `mask = (agi_tax_unit >= lower) & (agi_tax_unit < upper)`, half-open. +- `:5085-5089` — the applied child-count filter. +- `tools/build_us_acs_local_release.py:138` — `state_admin_specs`; `:472` — + `materialize_chunked` calls the production + `release_tool._materialize_target_frame` per household chunk, so the ACS + local release runs through exactly these guards. + +Consumers of the three names, exhaustively (`grep` over `packages/*/src`, +`tools`, `experiments`): `SUPPORTED_LEDGER_FILTER_METADATA_KEYS` and +`IDENTITY_LEDGER_FILTER_METADATA_KEYS` are read only inside +`_unsupported_ledger_filter_metadata`; `_unsupported_ledger_filter_metadata` +only from `_assert_supported_ledger_filter_metadata` and the tests; +`_unsupported_soi_ledger_filters` only from the SOI loop and the tests. + +## 2. The rule as implemented + +`_restated_ledger_filter_refusal(key, value, metadata) -> str | None` returns +the refusal entry for one `ledger_filter_*` key, or `None` when the key merely +restates a constraint the materializer already applies to that spec. + +1. `_restated_ledger_filter_concept` splits the key into concept and bound + side using `RESTATED_LEDGER_FILTER_BOUND_SIDES`. A key whose concept is not + in `RESTATED_LEDGER_FILTER_CONCEPTS` returns its bare name — the pre-change + refusal entry, unchanged. +2. `agi_band`: the side selects `agi_lower_bound` or `agi_upper_bound` through + `RESTATED_AGI_BAND_COMPILED_KEYS`; both sides go through `_as_bound`, so + `100000` and `100000.0` agree and `-inf`/`inf` agree with the compiler's own + spelling. Missing compiled key, unparseable value, or inequality refuses and + names both values. A suffix-free (exact-value) restatement always refuses: + the materializer applies a half-open band and no exact-AGI filter. +3. `eitc_child_count`: the compiled constraint is `_soi_eitc_child_count_filter` + — the function the SOI loop calls. Both the restatement (`>= n`, `< n`, or + `== n`) and the applied filter (through `_eitc_child_count_mask`) are + evaluated over counts `0..16` and must produce the identical mask. That is + population equality, not string equality: `>= 3` agrees with `3plus`, + `< 1` agrees with `0`, `== 2` agrees with `2`, and nothing else agrees. + A value outside `0..16` or non-integral refuses rather than being compared. + (2026-09-22, superseded for upper bounds by Max's ruling on question 6.4: + a restated qualifying-child `_upper_bound` is no longer read as `< n` or + compared at all; it is refused outright, naming the unconfirmed operator. + Lower and exact restatements are compared as described. See section 6, + "Rulings".) +4. Both call sites use it. `_unsupported_ledger_filter_metadata` collects the + returned entries per spec, so the existing refusal text gains the + disagreeing values. `_unsupported_soi_ledger_filters` drops a key from its + result when the rule accepts it — necessary, because leaving it there would + have converted an accepted restatement from a refusal into a silent drop. + +Why the probe rather than a value table: `_eitc_child_count_mask` already owns +the mapping from every accepted spelling (`3`, `3+`, `3plus`, `three or more +qualifying children`, …) to a predicate. Comparing masks reuses that mapping +instead of duplicating it, so the two can never drift. + +Why metadata-only and family-blind: `_unsupported_soi_ledger_filters` receives +only a metadata mapping, and running one rule in both places is worth more than +a family gate. A spec of another family carries neither `agi_*_bound` nor a +resolvable child-count filter, so it refuses on the "does not compile" arm. +The guard is already family-blind about `ledger_filter_eitc_child_count` +itself, which is a blanket supported key. + +## 3. Tests + +Unit, on invented specs (`packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py`): + +| Test | Accepted | Refused (negative controls) | +|---|---|---| +| `test_restated_agi_bounds_pass_the_guard_only_where_they_agree` | both bounds; lower only; upper only; `-inf`/`inf` ends | — | +| `test_disagreeing_restated_agi_bounds_are_refused_by_value` | — | lower `50000` vs `100000.0`; upper `250000` vs `200000.0`; labelled lower with **no** `agi_lower_bound`; exact-value AGI restatement; unknown `ledger_filter_novel_dimension` still refused by bare name | +| `test_restated_eitc_child_bounds_pass_the_guard_only_where_they_agree` | lower `3` with `3plus`; exact `2` with `2` (the upper `1` with `0` case moved to the next row, 2026-09-22) | — | +| `test_restated_eitc_child_upper_bounds_are_refused_outright` (added 2026-09-22) | exact `0` and AGI upper `200000` on the same spec, still | upper `1` with `0` (agrees if read `<`); upper `0` with `0` (agrees if read `<=`); upper with no child-count filter; `_upper_bound_inclusive` by bare key; fatal guard raises and SOI skip keeps the key | +| `test_restated_eitc_child_comparison_never_guesses_an_upper_reading` (added 2026-09-22) | — | with `RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES` emptied, upper `0` with `0` raises `ValueError` instead of being compared as an exact count | +| `test_disagreeing_restated_eitc_child_bounds_are_refused_by_value` | — | `3` with `2`; `3` with no child-count filter; `three` (not a count) | +| `test_legacy_agi_usd_dimensions_stay_refused_by_bare_key` (added 2026-09-22) | — | `ledger_filter_agi_{lower,upper}_usd` equal to the compiled band, refused by bare name at both call sites; fatal guard raises | +| `test_restated_filters_clear_the_soi_skip_only_where_they_agree` | agreeing restatement clears the SOI skip | disagreeing stays listed **and** the fatal guard refuses it first; unknown SOI filter unchanged | +| `test_restated_concept_rules_all_have_a_comparison` | the two rules that exist | a concept with no rule would raise | + +Feed-level, engine-free: + +- `test_pinned_chronicle_feed_compiles_no_unsupported_ledger_filters` — the + committed fixture of real compiled metadata (50 targets: one per + (family, `target_role`) plus four SOI rows with a band or a child count) + clears both guards, and every `ledger_filter_*` key in the registry-wide + census that is neither supported nor a reviewed identity qualifier is + noop-valued on every target carrying it. +- `test_restated_bounds_track_each_compiled_band_in_the_fixture` — injects the + restatement a labelled vocabulary would add onto each real banded row: its + own edge is accepted, the same edge moved by one is refused. Asserts at + least four banded rows so it cannot pass vacuously. +- `test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters` — + compiles the real state surface when `MICROCOSM_US_CHRONICLE_FACTS` points + at the 164 MB feed, skips otherwise. + +## 3b. Verbatim summaries, at `5b1326cad` + +``` +$ uv run python -m pytest packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +232 passed, 1 skipped in 54.95s +PYTEST_EXIT=0 + +$ MICROCOSM_US_CHRONICLE_FACTS=/Users/maxghenis/PolicyEngine/_buildh-runtime/inputs/\ + consumer_facts_us_c5e5bf8.jsonl \ + uv run python -m pytest packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py \ + -k pinned_chronicle_feed_state_surface +1 passed, 232 deselected in 768.45s (0:12:48) +exit 0 # the arm skipped in the run above + +$ uv run python tools/ci_test_groups.py --verify +VERIFY_EXIT=0 # test_us_fiscal_refresh_builder.py in the us lane + # group, never under [defaulted] + +$ uv run ruff check . +All checks passed! +RUFF_CHECK_EXIT=0 + +$ uv run ruff format --check tools/build_us_fiscal_refresh_release.py \ + packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py \ + experiments/us-labelled-filter-support/census_compiled_ledger_filters.py +3 files already formatted +RUFF_FORMAT_EXIT=0 +``` + +No attested spec-engine module was touched, so no identity pin moves. + +(Historical, 2026-09-22: true while #969 was based on +`us-chronicle-feed-repin`; it now targets `main`, so CI runs. See section 8.) +**PR CI does not run on this stack.** `.github/workflows/test.yml` and +`.github/workflows/integration-tests.yml` are both +`pull_request: branches: [main]`, so a PR based on `us-chronicle-feed-repin` +gets no checks at all; `gh pr checks 969` reports none because nothing is +triggered, not because a run is pending. CI first runs when #955 merges and +#969 retargets to `main`. `gh pr view 969` reports +`mergeable: MERGEABLE`, `mergeStateStatus: CLEAN` against its current base. + +## 4. Counts, from the pinned feed + +`compile_us_fiscal_target_registry`, `age_targets=True`, CD vintage crosswalk, +`target_period=2024`, feed `consumer_facts_us_c5e5bf8.jsonl` (Chronicle +`c5e5bf8`, 39,158 facts), measured with the real guard functions. + +| Surface | Targets | Refused | SOI silent skips | +|---|---:|---:|---:| +| Whole compiled registry | 32,866 | 0 | 0 | +| State surface, `soi_mode="full"` | 31,066 | 0 | 0 | +| State surface, `soi_mode="totals"` | 760 | 0 | 0 | + +State surface by family and `target_role`: + +| Family \| `target_role` | `full` | `totals` | +|---|---:|---:| +| `irs_soi` \| `soi_fiscal_distribution` | 30,306 | 0 | +| `irs_soi` \| `aca_ptc_returns` | 547 | 547 | +| `irs_soi` \| `aca_spending` | 60 | 60 | +| `usda_snap` \| `snap_households` | 51 | 51 | +| `usda_snap` \| `snap_total` | 51 | 51 | +| `cms_medicaid` \| `medicaid_enrollment` | 51 | 51 | +| **Total** | **31,066** | **760** | + +Dense float32 measure matrix, 4 bytes × 1,588,854 households × specs, beside +the historical ACS local release (3,972 admin specs, 487 population measures, +4,459 fitted targets; `_buildp-runtime/logs/acs-local/release_chain.log`, +2026-08-14, feed v9.3): + +| Surface | Specs | Bytes | GiB | +|---|---:|---:|---:| +| Historical admin specs | 3,972 | 25,243,712,352 | 23.5 | +| Historical fitted targets | 4,459 | 28,338,799,944 | 26.4 | +| Pinned feed, `totals` | 760 | 4,830,116,160 | 4.5 | +| Pinned feed, `totals` + 487 population | 1,247 | 7,925,203,752 | 7.4 | +| Pinned feed, `full` | 31,066 | 197,437,353,456 | 183.9 | +| Pinned feed, `full` + 487 population | 31,553 | 200,532,441,048 | 186.8 | +| Whole registry (all geographies) | 32,866 | 208,877,102,256 | 194.5 | + +No selection or default was changed. + +## 5. The brief's measurement does not reproduce at this head + +The brief reports 1,988 of 31,066 state-surface specs carrying +`ledger_filter_us:statutes/26/62#adjusted_gross_income_{lower,upper}_bound` +and `ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound`. +The spec counts match exactly (31,066 full, 760 totals); the unsupported count +does not — it is 0 on every surface. What I measured: + +1. The pinned feed's facts carry 22 distinct `dimensions` keys + (`income_range` 35,570, `filing_status` 35,064, `eitc_child_count` 4,248, + `agi_lower_usd`/`agi_upper_usd` 2,232 each, …). None contains `#` or a + concept URI. The string `adjusted_gross_income_lower_bound` appears zero + times in the 164 MB file. The concept vocabulary appears only in + `universe_constraints[].variable`, `dimension_labels` and + `layout.groupby_dimension`. +2. `ledger_targets.py:3257` is the only `ledger_filter_*` producer in the tree + and it stamps `_dimensions(fact)` alone. Nothing synthesises a + `*_lower_bound` filter key from a constraint row. +3. The compiled registry carries 13 distinct `ledger_filter_*` keys over all + 32,866 targets, all supported, identity, or always noop-valued. + +The same holds for the other labelled export on this machine +(`inputs/chronicle_us_b571381/artifact/consumer_facts.jsonl`, same 39,158 +facts, same 22 dimension keys). + +So the rule lands as a forward guard on the *next* labelled export, not as an +unblock of a current stop. It is still the right shape: the day a Chronicle +export promotes those constraint rows into dimensions, the guard will refuse +them, and this rule is what lets the equal ones through without ever letting a +disagreeing one pass. + +One adjacent thing worth noting: 2,356 facts already carry `agi_lower_usd` +and/or `agi_upper_usd` *dimensions* that restate their AGI constraint exactly +— 2,232 carry both edges and 124 top-band facts carry only the lower edge, and +every one of the 2,356 agrees with its own constraint rows. Those facts belong to +`irs_soi.table_1_4.total_wages.v1` and `irs_soi.table_1_1.v1` and do not +compile into targets in this registry, so `ledger_filter_agi_lower_usd` never +reaches the guard today. If a future compile does pick them up, they are the +same pattern in the legacy vocabulary. + +## 6. Questions for Max + +1. **The premise.** The 1,988-spec refusal does not reproduce at + `us-chronicle-feed-repin` + this WIP with either feed here. Options: + (a) merge the guard as a forward-compatibility rule, as written; + (b) hold it until the labelled export that produces those keys exists, so + the rule can be tested against real keys rather than invented ones; + (c) point me at the exact feed/checkout the 2026-09-21 pilot used and I + will re-measure against it. +2. **`agi_lower_usd` / `agi_upper_usd`.** Add them to + `RESTATED_LEDGER_FILTER_CONCEPTS` now, under the identical agreement rule? + Options: (a) yes — same pattern, legacy vocabulary, cheap, closes the hole + before the facts compile; (b) no — no target carries them today, so adding + them names a constraint nothing applies; (c) add with a test that fails the + day such a target appears. +3. **Full mode.** 31,066 admin specs is 7.8× the historical 3,972, and a dense + float32 matrix over 1,588,854 households goes from 23.5 GiB to 183.9 GiB. + `soi_mode="totals"` is 760 specs and 4.5 GiB. I changed no default. + Options: (a) keep `full` and size the box for a 184 GiB matrix or a chunked + / sparse representation; (b) make `totals` the ACS local default and treat + the AGI-band distribution as an opt-in; (c) select a middle surface (e.g. + drop `soi_fiscal_distribution` below some state/band granularity) — say the + rule and I will measure it. +4. **EITC upper bounds.** No feed carries one; I read `_upper_bound` as + exclusive to match `_agi_bounds`, which folds both `<` and `<=` into one + edge the materializer applies as `<`. If the Ledger means `<=` for count + dimensions, one line changes and one test flips. + +### Rulings (Max, 2026-09-22) + +Max ruled on all four questions on 2026-09-22. The questions above are kept as +asked; these are the answers, and what this branch did about each. + +1. **The premise: merge.** Answer (a), with the premise no longer in doubt. + Section 7 found the refusal on `origin/main`, and section 8's committed + receipt regenerates it on this tree: on the state surface with + `soi_mode="full"`, 1,988 specs are refused with the rule reverted (which is + `main`'s behaviour) and 0 with it. The rule merges as the fix for a + refusal `main` makes today, not as forward-compatibility scaffolding. +2. **`agi_lower_usd` / `agi_upper_usd`: do not add them.** Answer (b). No + concept is added for them. Nothing slips through meanwhile: a concept not + in `RESTATED_LEDGER_FILTER_CONCEPTS` comes back from + `_restated_ledger_filter_refusal` as its bare key + (`tools/build_us_fiscal_refresh_release.py:4634-4635`), so a + `ledger_filter_agi_lower_usd` that reaches the guard is refused by name and + `_assert_supported_ledger_filter_metadata` raises (`:4675-4687`). The new + `test_legacy_agi_usd_dimensions_stay_refused_by_bare_key` pins that at both + call sites, including where the legacy value equals the compiled edge. +3. **Full mode: `totals` becomes the ACS local default, and the AGI-band + distribution becomes an opt-in.** Answer (b). That change is made in a + separate PR, not here; this branch still changes no default or selection. +4. **EITC upper bounds: refuse them until the Ledger confirms its operator.** + Neither reading is adopted. Done on this branch, in the commit that adds + this block: `_restated_eitc_child_count_refusal` now refuses any key on a + side in `RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES` (`{"upper"}`) before it + reads the compiled filter or parses the value, with + `= restates a qualifying-child upper bound, refused outright: + the Ledger's operator for it (< or <=) is unconfirmed, and the two readings + select different returns`. Lower and exact restatements stay under the + agreement rule. The comparison raises if any other side reaches it, so + taking `"upper"` out of the set cannot quietly fall back to an exact-count + comparison. `test_restated_eitc_child_upper_bounds_are_refused_outright` + and `test_restated_eitc_child_comparison_never_guesses_an_upper_reading` + are new; the upper-`1`-with-`0` case left the acceptance test. + + Why the key name alone does not settle the operator, read at this head: + `_constraint_bound_filters` stamps a `<` constraint row as `_upper_bound` + and a `<=` row as `_upper_bound_inclusive` + (`packages/microcosm-build/src/microcosm/build/ledger_targets.py:3470-3478`), + and `_upper_bound_inclusive` names no restated concept, so it is refused by + bare key. But the dimension stamp runs first (`:3459-3461`) and wins through + `setdefault` (`:3463-3464`), and a dimension of the same name carries no + operator at all. + + **The receipt's counts do not change.** This is deduced from the committed + receipt, not re-measured. In `restated_filter_arms_receipt.json`'s reverted + arm, `_unsupported_ledger_filter_metadata` lists every otherwise-unsupported, + non-noop `ledger_filter_*` key by bare name. On every surface of both feeds, + the only qualifying-child key it lists is + `…earned_income_credit_qualifying_children_lower_bound` (1,137 entries over + the whole registry, 1,076 on the state surface); no `…_upper_bound` or + `…_upper_bound_inclusive` key appears. Noop values are skipped before the + rule in both arms, and the new refusal sits inside the rule. The compile + those specs come from is in `packages/*/src`, which this change does not + touch. So no spec in these compiles carries a key the new refusal can fire + on, and every count in section 8's table stands. The full measurement was + not re-run. +5. **The 939 age-band refusals** (section 7, "Still open") get a follow-up PR + of their own. This PR adds no `age` concept. + +Tests at the commit that adds this block (its parent is `235dc701c`): + +``` +$ MICROCOSM_US_CHRONICLE_FACTS= \ + .venv/bin/python -m pytest packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py -rs +248 passed in 80.37s, no skips, exit 0 # the pinned-feed state-surface arm ran + +$ .venv/bin/python tools/ci_test_groups.py --verify verification=ok, exit 0 +$ ruff check . All checks passed! +$ ruff format --check 2 files already formatted +``` + +The other modules that import `tools/build_us_fiscal_refresh_release.py` were +not re-run for this change: it touches only `_restated_eitc_child_count_refusal` +and its constants. That function is called only from +`_restated_ledger_filter_refusal` (`tools/build_us_fiscal_refresh_release.py:4639`), +which outside the tests is called only from the two guards (`:4424`, `:4665`) +and swapped out by `measure_restated_filter_arms.py` (grep over `tools`, +`packages`, `experiments`, 2026-09-22). + +## 7. 2026-09-22: re-levelled on `origin/main` — the premise does reproduce + +Sections 1–6 above were written at `369dedf1f`, before this branch was +re-levelled. **Section 5 is superseded: the refusal is real.** What changed is +the tree, not the feed. + +### Why the first measurement found nothing + +`origin/main` gained +`microcosm.build.ledger_targets._constraint_bound_filters` after this stack's +merge base `8c44daa52` (the `parameter_gated_threshold` filter-aware work in +the UK CGT lane, changelog `725-filter-aware-gated-provider.changed.md`). It +runs inside `_ledger_metadata` right after the dimension stamp: + +```python +for key, value in sorted(_constraint_bound_filters(fact, dimensions).items()): + metadata.setdefault(f"ledger_filter_{key}", value) +``` + +and turns every `role: filter` universe constraint whose operator is one of +`>= > < <=`, whose value is a finite number, and whose variable is **not** +already a dimension, into `ledger_filter__lower_bound` / +`_lower_bound_exclusive` / `_upper_bound` / `_upper_bound_inclusive`. + +Section 1's reading — "`ledger_targets.py:3257` is the **only** producer of +`ledger_filter_*` metadata and it stamps `_dimensions(fact)` alone; it never +reads `universe_constraints`" — was correct for the tree it was read in, and +is exactly what stopped being true. Section 5's observation that the concept +vocabulary "appears only in `universe_constraints[].variable`" was the +mechanism, seen one commit too early: those constraint rows are now filter +keys. + +### The three counts, same feed, same surface + +`tools/build_us_acs_local_release.py::state_admin_specs(feed, +["snap","medicaid","soi"], soi_mode="full")` over +`consumer_facts_us_c5e5bf8.jsonl`; 31,066 state specs in every run. + +| Tree | `_unsupported_ledger_filter_metadata` | `_unsupported_soi_ledger_filters` | +|---|---:|---:| +| `us-chronicle-feed-repin` merged with `origin/main` (no rule) | **1,988** | 1,988 | +| this head (rule at both call sites) | **0** | 0 | +| this head, both call sites reverted | **1,988** | 1,988 | + +The 1,988 refused specs carry 2,702 refusal entries: +`…earned_income_credit_qualifying_children_lower_bound` 1,076, +`…adjusted_gross_income_lower_bound` 816, +`…adjusted_gross_income_upper_bound` 810 — the three keys section 2's rule was +written for, in the vocabulary it was written for. + +So the rule is not forward-compatibility scaffolding. It is what keeps the ACS +local state surface compiling once this branch sits on `main`, and the +answer to question 6.1 is (a) with the premise now evidenced. + +### Still open: `ledger_filter_age_{lower,upper}_bound`, 939 targets + +`_constraint_bound_filters` also stamps the **bare** vocabulary. Over the whole +compiled registry (32,866 targets, not just the state surface) this head still +refuses 939: + +| Key | Targets carrying it | +|---|---:| +| `ledger_filter_age_lower_bound` | 939 | +| `ledger_filter_age_upper_bound` | 886 | + +936 are `census_population` / `population_age` and 3 are +`ssa` / `ssa_ssi_age_band_recipients`, and every one restates the +`age_lower_bound` / `age_upper_bound` the materializer already slices on in +`_population_age_household_values`. It is section 2's pattern exactly, one +concept further out, and it is **not** this branch's regression. Measured +against `origin/main` at `18c6d39a0` with no part of this stack applied +(main's own `packages/*/src` on `PYTHONPATH`, `ledger_targets.__file__` +asserted to be under that checkout), same feed, +`compile_us_fiscal_target_registry(..., age_targets=True)`: + +| Tree | Compiled targets | Refused | +|---|---:|---:| +| `origin/main` `18c6d39a0` alone | 32,866 | **3,208** | +| this head | 32,866 | **939** | + +Main's 3,208 split `irs_soi|soi_fiscal_distribution` 2,269, +`census_population|population_age` 936, `ssa|ssa_ssi_age_band_recipients` 3. +This branch clears the 2,269; the 939 age-band refusals are main's and survive +it. The ACS local state surface never selects `census_population` or `ssa`, +which is why the state-surface table above reads 0. + +Not fixed here, deliberately: adding `age` to +`RESTATED_LEDGER_FILTER_CONCEPTS` under a third `age_band` rule (compare +`ledger_filter_age_lower_bound` against `age_lower_bound` and +`ledger_filter_age_upper_bound` against `age_upper_bound`, both through +`_as_bound`) is a one-rule change of the same shape, but it widens what this +PR accepts beyond the surface it was reviewed against. It wants its own +decision. + +### What the committed fixture now is + +`tests/fixtures/us_compiled_ledger_filter_specs.json` was captured at +`369dedf1f`, so its key census predates `_constraint_bound_filters` and lists +none of the restated keys. It is kept as-is: it still pins the compile the +supported/identity classification was reviewed against, and the fixture +`description` and the two tests reading it now say so. +`test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters` is +the arm that meets the restated keys — before the re-level it passed over a +feed carrying none, and now it passes over 31,066 real specs of which 1,988 +carry one. + +## 8. 2026-09-22: re-levelled on `main` after #955 merged + +#955 merged into `main` at `6710d0f5f`. `origin/main` was merged into this +branch as `b10e117a0` with no conflicts +(`tools/build_us_fiscal_refresh_release.py` and +`packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py` changed on +both sides and auto-merged), and #969 was retargeted to `main`. Against +`origin/main` the branch then differed in six files (eight after the +measurement script and its receipt below were added, and still eight after +`origin/main` `2b85b7b22` was merged in as `b6e0b04cd`): this report, the census +script, the fixture, the changelog fragment, the test module, and +`tools/build_us_fiscal_refresh_release.py`, where the difference is the rule, +its constants, one docstring and the two call sites. No `packages/*/src` file +differs from `main`, so the compile measured below is `main`'s. + +### The counts on this tree + +Every count in this subsection is in +`experiments/us-labelled-filter-support/restated_filter_arms_receipt.json`, +written by the committed +`experiments/us-labelled-filter-support/measure_restated_filter_arms.py` +(the receipt's `script_sha256`, `00d09505…`, is the committed script's; it ran +at `fb1a09646`, which is `b10e117a0` plus a `REPORT.md` edit, so the code it +measured is `b10e117a0`'s; one process for both feeds, 3.0 GB peak RSS per +the receipt's `max_rss_bytes`; the receipt records compile-and-select time +per feed, 39.2 s and 41.2 s, but no total wall time — the 113 s total was +read off the terminal and is not recorded). Regenerate with: + +``` +uv run python experiments/us-labelled-filter-support/measure_restated_filter_arms.py \ + \ + > experiments/us-labelled-filter-support/restated_filter_arms_receipt.json +``` + +The script uses the same functions as section 7: +`compile_us_fiscal_target_registry(..., age_targets=True)` for the whole +registry, `state_admin_specs(feed, ["snap","medicaid","soi"], soi_mode=...)` +for the state surface, refusals from `_unsupported_ledger_filter_metadata`, +silent skips from `_unsupported_soi_ledger_filters` over `irs_soi` specs. The +reverted arm replaces `_restated_ledger_filter_refusal` with a function that +returns the bare key. That is the pre-rule behaviour of both call sites, and +so `main`'s: on `main` (`2b85b7b22`) both guards list every +otherwise-unsupported, non-noop `ledger_filter_*` key by name, with no +restatement check (`tools/build_us_fiscal_refresh_release.py` on `main`, +`_unsupported_soi_ledger_filters` and `_unsupported_ledger_filter_metadata`, +read 2026-09-22). + +Both US exports on this machine gave identical counts: the pinned +`consumer_facts_us_c5e5bf8.jsonl` (receipt `feed_sha256` `b8543739…`, equal to +the `facts_sha256` in `packages/microcosm-build/src/microcosm/build/us/chronicle_feed.json`) +and `chronicle_us_b571381/artifact/consumer_facts.jsonl` (`4d1dba8c…`). + +| Surface | Targets | Refused, rule | SOI skips, rule | Refused, reverted (`main`) | SOI skips, reverted | +|---|---:|---:|---:|---:|---:| +| Whole compiled registry | 32,866 | 939 | 0 | 3,208 | 2,269 | +| State surface, `soi_mode="full"` | 31,066 | **0** | 0 | **1,988** | 1,988 | +| State surface, `soi_mode="totals"` | 760 | 0 | 0 | 0 | 0 | + +With the rule reverted, the 1,988 state-surface refusals carry 2,702 entries +(`…earned_income_credit_qualifying_children_lower_bound` 1,076, +`…adjusted_gross_income_lower_bound` 816, +`…adjusted_gross_income_upper_bound` 810), all on +`irs_soi|soi_fiscal_distribution`. The whole registry's 3,208 split +`irs_soi|soi_fiscal_distribution` 2,269, `census_population|population_age` +936 and `ssa|ssa_ssi_age_band_recipients` 3. With the rule, the 939 left are +section 7's age-band restatements (`ledger_filter_age_lower_bound` on 939 +targets, `ledger_filter_age_upper_bound` on 886). + +Every number equals section 7's, which stands unchanged. The only new +observation is that the `b571381` export gives the pinned feed's counts on this +tree too; section 5 had compared the two exports only on the pre-merge tree. + +### Provenance of the numbers in sections 3b–7 + +Sections 3b–7 record runs made before this merge, at the heads they name +(section 7: this branch re-levelled on `origin/main` before #955 merged), with +`census_compiled_ledger_filters.py`, the test module and ad hoc calls to the +same guard functions. Their outputs were not committed, so those sections are +records of those runs rather than numbers regenerable from files on this +branch. What the receipt above does regenerate on this tree: the target counts +(32,866 / 31,066 / 760), section 7's state-surface counts with the rule (0) +and reverted (1,988, carrying 2,702 entries split 1,076 / 816 / 810), and +section 7's age-band entries (939 / 886). Section 4's whole-registry +"Refused 0" is superseded by this tree's 939 (rule) and 3,208 (reverted). +Section 4's family-by-role table and section 5's fact-level counts are not in +the receipt and were not re-measured after the merge. Section 4's byte table +is arithmetic (4 bytes × 1,588,854 households × specs), not a measurement; its +historical rows cite `_buildp-runtime/logs/acs-local/release_chain.log`. + +### Tests + +Run at `b6e0b04cd`, the merge of `origin/main` `2b85b7b22` (#976, which +touches only `reform_validation.py`, its test module and a changelog +fragment) into this branch; no conflicts. + +``` +$ MICROCOSM_US_CHRONICLE_FACTS= \ + .venv/bin/python -m pytest packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +245 dots, no skips, exit 0 # the pinned-feed state-surface arm ran + +$ .venv/bin/python -m pytest +11 failed, 1405 passed, 13 skipped, 4 errors in 1681.84s +``` + +Every one of the 15 failures and errors was in +`test_us_multispine_pool_tool.py` (a module this branch does not change) and +every traceback ends in `OSError: [Errno 28] No space left on device` or +pytest failing to create its temp directory: the machine's disk filled during +the run. Re-running those tests with the disk clear passed: +`-k` over the seven affected test functions, 22 passed, exit 0. + +``` +$ .venv/bin/python tools/ci_test_groups.py --verify verification=ok, exit 0 +$ ruff check / ruff format --check on the four changed .py files +All checks passed! / 4 files already formatted +``` diff --git a/experiments/us-labelled-filter-support/census_compiled_ledger_filters.py b/experiments/us-labelled-filter-support/census_compiled_ledger_filters.py new file mode 100644 index 0000000000..0b4c1160c8 --- /dev/null +++ b/experiments/us-labelled-filter-support/census_compiled_ledger_filters.py @@ -0,0 +1,180 @@ +"""Measure the Ledger filter guards against a compiled US fiscal registry. + +Compiles the US fiscal target registry from a Chronicle consumer-facts feed +and reports, for the whole registry and for the state-level surface +``tools/build_us_acs_local_release.py`` selects in both SOI modes: + +* target counts by family and ``target_role``; +* every ``ledger_filter_*`` key carried, with its value histogram; +* what ``_unsupported_ledger_filter_metadata`` refuses (the fatal guard) and + what ``_unsupported_soi_ledger_filters`` would skip silently; +* a sample of compiled metadata mappings, one per (family, ``target_role``) + plus IRS SOI rows carrying an AGI band or an EITC child-count filter, which + regenerates ``tests/fixtures/us_compiled_ledger_filter_specs.json``. + +Usage:: + + uv run python experiments/us-labelled-filter-support/\\ + census_compiled_ledger_filters.py [out.json] + +Needs no engine: the compile path reads the feed and the congressional-district +vintage crosswalk only. It does read the whole feed, so it is slow (order ten +minutes for the 39,158-fact US feed) and is a receipt, not a test. +""" + +from __future__ import annotations + +import collections +import importlib.util +import json +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] + + +def _load_tool(name: str): + spec = importlib.util.spec_from_file_location(name, ROOT / "tools" / f"{name}.py") + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + assert spec.loader is not None + spec.loader.exec_module(module) + return module + + +def _survey(builder, specs: list, label: str) -> dict[str, object]: + unsupported = builder._unsupported_ledger_filter_metadata(specs) + refusals = collections.Counter( + entry for entries in unsupported.values() for entry in entries + ) + skipped = collections.Counter() + skipped_targets = 0 + for spec in specs: + if getattr(spec, "family", "") != "irs_soi": + continue + keys = builder._unsupported_soi_ledger_filters(spec.metadata) + if keys: + skipped_targets += 1 + skipped.update(keys) + keys = collections.Counter() + values: dict[str, collections.Counter] = collections.defaultdict( + collections.Counter + ) + for spec in specs: + for key, value in spec.metadata.items(): + if str(key).startswith("ledger_filter"): + keys[str(key)] += 1 + values[str(key)][str(value)] += 1 + roles = collections.Counter( + (spec.family, spec.metadata.get("target_role", "")) for spec in specs + ) + return { + "label": label, + "targets": len(specs), + "by_family": dict(collections.Counter(spec.family for spec in specs)), + "by_family_role": { + f"{family}|{role}": count for (family, role), count in sorted(roles.items()) + }, + "ledger_filter_key_census": { + key: {"targets": count, "values": dict(values[key].most_common())} + for key, count in keys.most_common() + }, + "refused_targets": len(unsupported), + "refusals": dict(refusals), + "soi_silently_skipped_targets": skipped_targets, + "soi_skipped_keys": dict(skipped), + } + + +def _fixture_rows(specs: list) -> list[dict[str, object]]: + rows: dict[str, dict[str, object]] = {} + for spec in specs: + role = (spec.family, spec.metadata.get("target_role", "")) + if role in { + (row["family"], row["metadata"].get("target_role", "")) + for row in rows.values() + }: + continue + rows[spec.name] = { + "name": spec.name, + "family": spec.family, + "metadata": dict(sorted(spec.metadata.items())), + } + banded = 0 + for spec in specs: + if spec.family != "irs_soi" or spec.name in rows: + continue + metadata = spec.metadata + interesting = metadata.get("ledger_filter_eitc_child_count") or ( + metadata.get("agi_lower_bound") not in (None, "-inf") + and metadata.get("agi_upper_bound") not in (None, "inf") + ) + if not interesting: + continue + rows[spec.name] = { + "name": spec.name, + "family": spec.family, + "metadata": dict(sorted(metadata.items())), + } + banded += 1 + if banded >= 4: + break + return sorted(rows.values(), key=lambda row: row["name"]) + + +def main(argv: list[str]) -> int: + if not argv: + print(__doc__) + return 2 + feed = argv[0] + out_path = Path(argv[1]) if len(argv) > 1 else None + + builder = _load_tool("build_us_fiscal_refresh_release") + acs = _load_tool("build_us_acs_local_release") + + from microcosm.build.ledger_artifact import load_ledger_consumer_artifact + from microcosm.build.us_runtime import ( + default_congressional_district_vintage_crosswalk_path, + load_congressional_district_vintage_crosswalk, + ) + from microcosm.build.us_runtime.fiscal_targets import ( + compile_us_fiscal_target_registry, + ) + + crosswalk = load_congressional_district_vintage_crosswalk( + default_congressional_district_vintage_crosswalk_path() + ) + artifact = load_ledger_consumer_artifact(feed) + registry = compile_us_fiscal_target_registry( + artifact.facts, + target_period=acs.PERIOD, + congressional_district_vintage_crosswalk=crosswalk, + age_targets=True, + ) + whole = list(registry.specs) + + surveys = [_survey(builder, whole, "whole_registry")] + for soi_mode in ("full", "totals"): + selected, _substitutions = acs.state_admin_specs( + feed, ["snap", "medicaid", "soi"], soi_mode=soi_mode + ) + surveys.append( + _survey(builder, list(selected.specs), f"state_surface_{soi_mode}") + ) + + payload = { + "feed": feed, + "target_period": acs.PERIOD, + "surveys": surveys, + "fixture_specs": _fixture_rows(whole), + } + text = json.dumps(payload, indent=2, default=str) + if out_path is None: + print(text) + else: + out_path.write_text(text + "\n") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/experiments/us-labelled-filter-support/measure_restated_filter_arms.py b/experiments/us-labelled-filter-support/measure_restated_filter_arms.py new file mode 100644 index 0000000000..6fcdab3c15 --- /dev/null +++ b/experiments/us-labelled-filter-support/measure_restated_filter_arms.py @@ -0,0 +1,181 @@ +"""Count the restated-filter guard's refusals with the rule and with it reverted. + +For each Chronicle consumer-facts feed given, compiles the US fiscal target +registry and surveys three surfaces — the whole compiled registry and the +state-level surface ``tools/build_us_acs_local_release.py::state_admin_specs`` +selects in both SOI modes — under two arms: + +* ``rule``: the tree as it stands, ``_restated_ledger_filter_refusal`` at both + call sites; +* ``reverted``: ``_restated_ledger_filter_refusal`` replaced by a function that + returns the bare key for every otherwise-unsupported ``ledger_filter_*`` key. + That is the pre-rule behaviour of both ``_unsupported_ledger_filter_metadata`` + and ``_unsupported_soi_ledger_filters``, and so ``main``'s before this branch. + +Per surface and arm it reports refused targets, refusal entries by key, +refused targets by (family, ``target_role``), and ``irs_soi`` targets the SOI +loop would skip silently. Output is aggregate target-spec counts only; no +microdata is read. It regenerates ``restated_filter_arms_receipt.json``:: + + uv run python experiments/us-labelled-filter-support/\\ + measure_restated_filter_arms.py [...] > receipt.json + +Needs no engine. Each surface is compiled through the production path, so a +feed is compiled three times; the receipt records the wall time per feed +(``compile_and_select_seconds``) and the process's peak RSS +(``max_rss_bytes``, bytes on macOS). It also records the SHA-256 of this +script and the ``git status --porcelain`` of the tree it ran in, so a receipt +can be matched to the committed script that produced it. +""" + +from __future__ import annotations + +import collections +import hashlib +import importlib.util +import json +import resource +import subprocess +import sys +import time +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] + + +def _load_tool(name: str): + spec = importlib.util.spec_from_file_location(name, ROOT / "tools" / f"{name}.py") + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + assert spec.loader is not None + spec.loader.exec_module(module) + return module + + +def _sha256(path: str) -> str: + digest = hashlib.sha256() + with open(path, "rb") as handle: + for block in iter(lambda: handle.read(1 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +def _survey(builder, specs: list, label: str) -> dict[str, object]: + unsupported = builder._unsupported_ledger_filter_metadata(specs) + entries: collections.Counter[str] = collections.Counter() + for spec_entries in unsupported.values(): + for entry in spec_entries: + entries[entry.split("=", 1)[0]] += 1 + by_name = {spec.name: spec for spec in specs} + by_role: collections.Counter[str] = collections.Counter() + for name in unsupported: + spec = by_name[name] + by_role[f"{spec.family}|{spec.metadata.get('target_role', '')}"] += 1 + skipped = sum( + 1 + for spec in specs + if getattr(spec, "family", "") == "irs_soi" + and builder._unsupported_soi_ledger_filters(spec.metadata) + ) + return { + "label": label, + "targets": len(specs), + "refused_targets": len(unsupported), + "refusal_entries": sum(entries.values()), + "refusal_entries_by_key": dict(entries.most_common()), + "refused_by_family_role": dict(by_role.most_common()), + "soi_silently_skipped_targets": skipped, + } + + +def main(argv: list[str]) -> int: + if not argv: + print(__doc__) + return 2 + + builder = _load_tool("build_us_fiscal_refresh_release") + acs = _load_tool("build_us_acs_local_release") + + import microcosm.build.ledger_targets as ledger_targets + from microcosm.build.ledger_artifact import load_ledger_consumer_artifact + from microcosm.build.us_runtime import ( + default_congressional_district_vintage_crosswalk_path, + load_congressional_district_vintage_crosswalk, + ) + from microcosm.build.us_runtime.fiscal_targets import ( + compile_us_fiscal_target_registry, + ) + + # The compile must be this checkout's, not another installed tree's. + assert Path(ledger_targets.__file__).resolve().is_relative_to(ROOT), ( + ledger_targets.__file__ + ) + + rule = builder._restated_ledger_filter_refusal + + def reverted(key: str, value: str, metadata: object) -> str: + return key + + results = [] + for feed in argv: + started = time.time() + artifact = load_ledger_consumer_artifact(feed) + registry = compile_us_fiscal_target_registry( + artifact.facts, + target_period=acs.PERIOD, + congressional_district_vintage_crosswalk=( + load_congressional_district_vintage_crosswalk( + default_congressional_district_vintage_crosswalk_path() + ) + ), + age_targets=True, + ) + surfaces = {"whole_registry": list(registry.specs)} + del artifact, registry + for soi_mode in ("full", "totals"): + selected, _substitutions = acs.state_admin_specs( + feed, ["snap", "medicaid", "soi"], soi_mode=soi_mode + ) + surfaces[f"state_surface_{soi_mode}"] = list(selected.specs) + result: dict[str, object] = { + "feed": feed, + "feed_sha256": _sha256(feed), + "compile_and_select_seconds": round(time.time() - started, 1), + } + try: + for arm, function in (("rule", rule), ("reverted", reverted)): + builder._restated_ledger_filter_refusal = function + result[arm] = [ + _survey(builder, specs, label) for label, specs in surfaces.items() + ] + finally: + builder._restated_ledger_filter_refusal = rule + results.append(result) + print(f"done {feed}", file=sys.stderr, flush=True) + + head = subprocess.run( + ["git", "-C", str(ROOT), "rev-parse", "HEAD"], + capture_output=True, + text=True, + check=False, + ).stdout.strip() + status = subprocess.run( + ["git", "-C", str(ROOT), "status", "--porcelain"], + capture_output=True, + text=True, + check=False, + ).stdout.splitlines() + payload = { + "head": head, + "worktree_status": status, + "script_sha256": _sha256(__file__), + "target_period": acs.PERIOD, + "max_rss_bytes": resource.getrusage(resource.RUSAGE_SELF).ru_maxrss, + "results": results, + } + print(json.dumps(payload, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/experiments/us-labelled-filter-support/restated_filter_arms_receipt.json b/experiments/us-labelled-filter-support/restated_filter_arms_receipt.json new file mode 100644 index 0000000000..f7425d11fd --- /dev/null +++ b/experiments/us-labelled-filter-support/restated_filter_arms_receipt.json @@ -0,0 +1,181 @@ +{ + "head": "fb1a096466e2a34c1a4866133ef6c4665ffb9480", + "worktree_status": [ + "?? experiments/us-labelled-filter-support/measure_restated_filter_arms.py" + ], + "script_sha256": "00d09505022d71bf6f496ea6474c8a5b9abee1308c36bf3fbe25ca2f66e51872", + "target_period": 2024, + "max_rss_bytes": 3049095168, + "results": [ + { + "feed": "/Users/maxghenis/PolicyEngine/_buildh-runtime/inputs/consumer_facts_us_c5e5bf8.jsonl", + "feed_sha256": "b85437390021777e746f507c5890305496baf5fc7f2c78ba08ddb090f4839801", + "compile_and_select_seconds": 39.2, + "rule": [ + { + "label": "whole_registry", + "targets": 32866, + "refused_targets": 939, + "refusal_entries": 1825, + "refusal_entries_by_key": { + "ledger_filter_age_lower_bound": 939, + "ledger_filter_age_upper_bound": 886 + }, + "refused_by_family_role": { + "census_population|population_age": 936, + "ssa|ssa_ssi_age_band_recipients": 3 + }, + "soi_silently_skipped_targets": 0 + }, + { + "label": "state_surface_full", + "targets": 31066, + "refused_targets": 0, + "refusal_entries": 0, + "refusal_entries_by_key": {}, + "refused_by_family_role": {}, + "soi_silently_skipped_targets": 0 + }, + { + "label": "state_surface_totals", + "targets": 760, + "refused_targets": 0, + "refusal_entries": 0, + "refusal_entries_by_key": {}, + "refused_by_family_role": {}, + "soi_silently_skipped_targets": 0 + } + ], + "reverted": [ + { + "label": "whole_registry", + "targets": 32866, + "refused_targets": 3208, + "refusal_entries": 5116, + "refusal_entries_by_key": { + "ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound": 1137, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound": 1080, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_upper_bound": 1074, + "ledger_filter_age_lower_bound": 939, + "ledger_filter_age_upper_bound": 886 + }, + "refused_by_family_role": { + "irs_soi|soi_fiscal_distribution": 2269, + "census_population|population_age": 936, + "ssa|ssa_ssi_age_band_recipients": 3 + }, + "soi_silently_skipped_targets": 2269 + }, + { + "label": "state_surface_full", + "targets": 31066, + "refused_targets": 1988, + "refusal_entries": 2702, + "refusal_entries_by_key": { + "ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound": 1076, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound": 816, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_upper_bound": 810 + }, + "refused_by_family_role": { + "irs_soi|soi_fiscal_distribution": 1988 + }, + "soi_silently_skipped_targets": 1988 + }, + { + "label": "state_surface_totals", + "targets": 760, + "refused_targets": 0, + "refusal_entries": 0, + "refusal_entries_by_key": {}, + "refused_by_family_role": {}, + "soi_silently_skipped_targets": 0 + } + ] + }, + { + "feed": "/Users/maxghenis/PolicyEngine/_buildh-runtime/inputs/chronicle_us_b571381/artifact/consumer_facts.jsonl", + "feed_sha256": "4d1dba8c1b6274877bf184fa6de5d99b13fc61f34709ccab1487db2b5c64a79f", + "compile_and_select_seconds": 41.2, + "rule": [ + { + "label": "whole_registry", + "targets": 32866, + "refused_targets": 939, + "refusal_entries": 1825, + "refusal_entries_by_key": { + "ledger_filter_age_lower_bound": 939, + "ledger_filter_age_upper_bound": 886 + }, + "refused_by_family_role": { + "census_population|population_age": 936, + "ssa|ssa_ssi_age_band_recipients": 3 + }, + "soi_silently_skipped_targets": 0 + }, + { + "label": "state_surface_full", + "targets": 31066, + "refused_targets": 0, + "refusal_entries": 0, + "refusal_entries_by_key": {}, + "refused_by_family_role": {}, + "soi_silently_skipped_targets": 0 + }, + { + "label": "state_surface_totals", + "targets": 760, + "refused_targets": 0, + "refusal_entries": 0, + "refusal_entries_by_key": {}, + "refused_by_family_role": {}, + "soi_silently_skipped_targets": 0 + } + ], + "reverted": [ + { + "label": "whole_registry", + "targets": 32866, + "refused_targets": 3208, + "refusal_entries": 5116, + "refusal_entries_by_key": { + "ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound": 1137, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound": 1080, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_upper_bound": 1074, + "ledger_filter_age_lower_bound": 939, + "ledger_filter_age_upper_bound": 886 + }, + "refused_by_family_role": { + "irs_soi|soi_fiscal_distribution": 2269, + "census_population|population_age": 936, + "ssa|ssa_ssi_age_band_recipients": 3 + }, + "soi_silently_skipped_targets": 2269 + }, + { + "label": "state_surface_full", + "targets": 31066, + "refused_targets": 1988, + "refusal_entries": 2702, + "refusal_entries_by_key": { + "ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound": 1076, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound": 816, + "ledger_filter_us:statutes/26/62#adjusted_gross_income_upper_bound": 810 + }, + "refused_by_family_role": { + "irs_soi|soi_fiscal_distribution": 1988 + }, + "soi_silently_skipped_targets": 1988 + }, + { + "label": "state_surface_totals", + "targets": 760, + "refused_targets": 0, + "refusal_entries": 0, + "refusal_entries_by_key": {}, + "refused_by_family_role": {}, + "soi_silently_skipped_targets": 0 + } + ] + } + ] +} diff --git a/packages/microcosm-build/tests/fixtures/us_compiled_ledger_filter_specs.json b/packages/microcosm-build/tests/fixtures/us_compiled_ledger_filter_specs.json new file mode 100644 index 0000000000..bd588b9b09 --- /dev/null +++ b/packages/microcosm-build/tests/fixtures/us_compiled_ledger_filter_specs.json @@ -0,0 +1,3005 @@ +{ + "description": "Compiled US fiscal target spec metadata, one target per (family, target_role) plus four IRS SOI rows carrying an AGI band or an EITC child-count filter, from compile_us_fiscal_target_registry over the Chronicle feed PolicyEngine/microcosm#955 pins. Public aggregate target metadata; no microdata. ledger_filter_key_census covers every compiled target, not only the sampled rows. Regenerate with experiments/us-labelled-filter-support/census_compiled_ledger_filters.py. Captured at 369dedf1f, BEFORE this branch merged origin/main: that merge brought in ledger_targets._constraint_bound_filters, which stamps a fact's numeric universe constraints as ledger_filter__{lower,upper}_bound, so a compile at the current head carries restated keys this census does not list (us:statutes/26/62#adjusted_gross_income_{lower,upper}_bound on 1080/1074 targets, us.tax.earned_income_credit_qualifying_children_lower_bound on 1137, and age_{lower,upper}_bound on 939/886 census_population targets). The rows here therefore pin the pre-merge compile; test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters is the arm that exercises the restated keys against the live feed.", + "chronicle_source_commit": "c5e5bf8aa84960c1a200ee47303b19c953092d0f", + "compiled_target_count": 32866, + "ledger_filter_key_census": { + "ledger_filter_income_range": { + "targets": 31353, + "values": { + "all": 30165, + "under_1": 108, + "50k_to_75k": 106, + "100k_to_200k": 106, + "75k_to_100k": 106, + "1_to_10k": 104, + "25k_to_50k": 104, + "10k_to_25k": 104 + } + }, + "ledger_filter_filing_status": { + "targets": 31084, + "values": { + "all": 31084 + } + }, + "ledger_filter_eitc_child_count": { + "targets": 4313, + "values": { + "2": 1078, + "3plus": 1078, + "0": 1078, + "1": 1078, + "three_or_more_qualifying_children": 1 + } + }, + "ledger_filter_tax_expenditure": { + "targets": 11, + "values": { + "salt_deduction": 1, + "medical_expense_deduction": 1, + "charitable_deduction": 1, + "deductible_mortgage_interest": 1, + "qualified_business_income_deduction": 1, + "self_employed_health_insurance_deduction": 1, + "health_savings_account_deduction": 1, + "student_loan_interest_deduction": 1 + } + }, + "ledger_filter_income_percentile_range": { + "targets": 9, + "values": { + "all": 9 + } + }, + "ledger_filter_us_social_security_and_ssi.program_payment_type": { + "targets": 6, + "values": { + "social_security_benefits": 1, + "social_security_disability_benefits": 1, + "social_security_retirement_benefits": 1, + "social_security_survivors_benefits": 1, + "social_security_dependents_benefits": 1, + "ssi_payments": 1 + } + }, + "ledger_filter_qualifying_children": { + "targets": 3, + "values": { + "all": 3 + } + }, + "ledger_filter_bea_nipa.series_code": { + "targets": 2, + "values": { + "A034RC": 1, + "A041RC": 1 + } + }, + "ledger_filter_amount_basis": { + "targets": 1, + "values": { + "actual": 1 + } + }, + "ledger_filter_medicare.financing_component": { + "targets": 1, + "values": { + "premiums_from_enrollees": 1 + } + }, + "ledger_filter_medicare.part": { + "targets": 1, + "values": { + "part_b": 1 + } + }, + "ledger_filter_administering_entity": { + "targets": 1, + "values": { + "state_programs": 1 + } + }, + "ledger_filter_program": { + "targets": 1, + "values": { + "liheap": 1 + } + } + }, + "specs": [ + { + "name": "bea_nipa.cy2023.proprietors_income.a041rc.amount", + "family": "bea", + "metadata": { + "aged_to": "2024", + "aging_factor": "1.12633002175063", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.net_business_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variables": "self_employment_income_before_lsr,sstb_self_employment_income_before_lsr,farm_operations_income,partnership_s_corp_income", + "basis": "projection", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:a812cd36c4001d072a104d5d", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "bea", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:bf2a32d821966b03e950b1e4", + "ledger_domain": "personal_income", + "ledger_entity_name": "person", + "ledger_entity_role": "proprietor", + "ledger_fact_key": "ledger.aggregate_fact.v2:a812cd36c4001d072a104d5d", + "ledger_fact_label": "United States 2023 calendar year sum bea nipa proprietors income with inventory valuation and capital consumption adjustments for person (bea nipa series code=A041RC) [bea BEA NIPA annual data flat file NipaDataA.txt bea_nipa_annual_release_2026_04_30]", + "ledger_fact_period": "2023", + "ledger_filter_bea_nipa.series_code": "A041RC", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "bea_nipa.series_code", + "ledger_layout_groupby_value_id": "a041rc", + "ledger_layout_groupby_value_label": "A041RC", + "ledger_layout_measure_id": "amount", + "ledger_layout_record_set_id": "bea_nipa.cy2023.proprietors_income", + "ledger_layout_record_set_spec_id": "bea_nipa.proprietors_income.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:0b357d869344048a62a5a188", + "ledger_measure_concept": "bea_nipa.proprietors_income_with_inventory_valuation_and_capital_consumption_adjustments", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:eaf424aa9fc1da2234fb4bc0", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:eee6262acc1479b65a15013b", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "bea_nipa.a041rc_proprietors_income_with_inventory_valuation_and_capital_consumption_adjustments", + "ledger_source_record_id": "bea_nipa.cy2023.proprietors_income.a041rc.amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:101538c670986ea07f3ba0d9", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "amount", + "source_period": "2023", + "target_period": "2024", + "target_role": "nipa_proprietors_income" + } + }, + { + "name": "bea_nipa.cy2024.total_wages_salaries.a034rc.wages_salaries_amount", + "family": "bea", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "employment_income_before_lsr", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum bea nipa wages and salaries for person (bea nipa series code=A034RC) [bea BEA NIPA annual data flat file NipaDataA.txt bea_nipa_annual_release_2026_04_30]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:6b32d829b6c5c305dcb297e6", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "bea", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:8d20e986cdb36cbf41add94a", + "ledger_domain": "compensation_of_employees", + "ledger_entity_name": "person", + "ledger_entity_role": "employee", + "ledger_fact_key": "ledger.aggregate_fact.v2:6b32d829b6c5c305dcb297e6", + "ledger_fact_label": "United States 2024 calendar year sum bea nipa wages and salaries for person (bea nipa series code=A034RC) [bea BEA NIPA annual data flat file NipaDataA.txt bea_nipa_annual_release_2026_04_30]", + "ledger_fact_period": "2024", + "ledger_filter_bea_nipa.series_code": "A034RC", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "bea_nipa.series_code", + "ledger_layout_groupby_value_id": "a034rc", + "ledger_layout_groupby_value_label": "A034RC", + "ledger_layout_measure_id": "wages_salaries_amount", + "ledger_layout_record_set_id": "bea_nipa.cy2024.total_wages_salaries", + "ledger_layout_record_set_spec_id": "bea_nipa.total_wages_salaries.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:71b060c5645eac53f3596f49", + "ledger_measure_concept": "bea_nipa.wages_and_salaries", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:3a4b3bd440073061df97a30e", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:6760c22834b7e22b45953f7d", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "bea_nipa.a034rc_wages_and_salaries", + "ledger_source_record_id": "bea_nipa.cy2024.total_wages_salaries.a034rc.wages_salaries_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:b4434f5d78750804b5f8e6da", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "wages_salaries_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "nipa_wages_and_salaries" + } + }, + { + "name": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "family": "cbo", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_projection_level", + "base_variable": "adjusted_gross_income", + "basis": "fact", + "diagnostic_target_label": "United States 2024 tax year projected sum cbo adjusted gross income projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:06c59904c06817cf61200eef", + "ledger_aggregation_method": "sum", + "ledger_assertion": "source_projection", + "ledger_assertion_policy": "allow_source_projection", + "ledger_concept_authority": "cbo", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:06c59904c06817cf61200eef", + "ledger_fact_label": "United States 2024 tax year projected sum cbo adjusted gross income projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cbo.income_source", + "ledger_layout_groupby_value_id": "adjusted_gross_income", + "ledger_layout_groupby_value_label": "Total AGI", + "ledger_layout_measure_id": "projected_amount", + "ledger_layout_record_set_id": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income", + "ledger_layout_record_set_spec_id": "cbo.revenue_projection.income_by_source.adjusted_gross_income.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:f4a52014350dff619118f3a8", + "ledger_measure_concept": "cbo.adjusted_gross_income_projection", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:00c4cc79830f84a949341c00", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "source_projection", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:cc2c3a752c9fd418bf06ac19", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cbo.adjusted_gross_income", + "ledger_source_record_id": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:2622a7a53f1062b1af2b16a9", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "projected_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "cbo_adjusted_gross_income" + } + }, + { + "name": "cbo.revenue_projection.ty2024.income_by_source.net_business_income.projected_amount", + "family": "cbo", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_projection_level", + "base_variable": "cbo_net_business_income", + "basis": "fact", + "diagnostic_target_label": "United States 2024 tax year projected sum cbo net business income projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:c73e25bbc484b7f87e88dde2", + "ledger_aggregation_method": "sum", + "ledger_assertion": "source_projection", + "ledger_assertion_policy": "allow_source_projection", + "ledger_concept_authority": "cbo", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:c73e25bbc484b7f87e88dde2", + "ledger_fact_label": "United States 2024 tax year projected sum cbo net business income projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cbo.income_source", + "ledger_layout_groupby_value_id": "net_business_income", + "ledger_layout_groupby_value_label": "Net business income", + "ledger_layout_measure_id": "projected_amount", + "ledger_layout_record_set_id": "cbo.revenue_projection.ty2024.income_by_source.net_business_income", + "ledger_layout_record_set_spec_id": "cbo.revenue_projection.income_by_source.net_business_income.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:3ea4ff470851bf98b2c4d2f6", + "ledger_measure_concept": "cbo.net_business_income_projection", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:181a56e9abf6b8e23be350e0", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "source_projection", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:0379d1e73f6a868ea052d46a", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cbo.net_business_income", + "ledger_source_record_id": "cbo.revenue_projection.ty2024.income_by_source.net_business_income.projected_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:2622a7a53f1062b1af2b16a9", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "projected_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "cbo_net_business_income" + } + }, + { + "name": "cbo.revenue_projection.ty2024.income_by_source.net_capital_gain.projected_amount", + "family": "cbo", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_projection_level", + "base_variable": "capital_gains", + "basis": "fact", + "diagnostic_target_label": "United States 2024 tax year projected sum cbo net capital gain projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:07c02eaf03cc25e2d454db3f", + "ledger_aggregation_method": "sum", + "ledger_assertion": "source_projection", + "ledger_assertion_policy": "allow_source_projection", + "ledger_concept_authority": "cbo", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:07c02eaf03cc25e2d454db3f", + "ledger_fact_label": "United States 2024 tax year projected sum cbo net capital gain projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cbo.income_source", + "ledger_layout_groupby_value_id": "net_capital_gain", + "ledger_layout_groupby_value_label": "Net capital gain", + "ledger_layout_measure_id": "projected_amount", + "ledger_layout_record_set_id": "cbo.revenue_projection.ty2024.income_by_source.net_capital_gain", + "ledger_layout_record_set_spec_id": "cbo.revenue_projection.income_by_source.net_capital_gain.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:be6108cbec0aa461d12cd017", + "ledger_measure_concept": "cbo.net_capital_gain_projection", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:75eba7ab71b5f672ae46a483", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "source_projection", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:f3aa0318b47d26380e9d02e2", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cbo.net_capital_gain", + "ledger_source_record_id": "cbo.revenue_projection.ty2024.income_by_source.net_capital_gain.projected_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:2622a7a53f1062b1af2b16a9", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "projected_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "cbo_net_capital_gain" + } + }, + { + "name": "cbo.revenue_projection.ty2024.income_by_source.qualified_dividend_income.projected_amount", + "family": "cbo", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_projection_level", + "base_variable": "qualified_dividend_income", + "basis": "fact", + "diagnostic_target_label": "United States 2024 tax year projected sum cbo qualified dividend income projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:709bcad59f889e75f143f9fc", + "ledger_aggregation_method": "sum", + "ledger_assertion": "source_projection", + "ledger_assertion_policy": "allow_source_projection", + "ledger_concept_authority": "cbo", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:709bcad59f889e75f143f9fc", + "ledger_fact_label": "United States 2024 tax year projected sum cbo qualified dividend income projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cbo.income_source", + "ledger_layout_groupby_value_id": "qualified_dividend_income", + "ledger_layout_groupby_value_label": "Qualified dividends", + "ledger_layout_measure_id": "projected_amount", + "ledger_layout_record_set_id": "cbo.revenue_projection.ty2024.income_by_source.qualified_dividend_income", + "ledger_layout_record_set_spec_id": "cbo.revenue_projection.income_by_source.qualified_dividend_income.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:7f7a6f00fc5401a2b3b24581", + "ledger_measure_concept": "cbo.qualified_dividend_income_projection", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:3159e0b426b7521f21d1cf8d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "source_projection", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:be67588c7276ac27209eb70f", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cbo.qualified_dividend_income", + "ledger_source_record_id": "cbo.revenue_projection.ty2024.income_by_source.qualified_dividend_income.projected_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:2622a7a53f1062b1af2b16a9", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "projected_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "cbo_qualified_dividend_income" + } + }, + { + "name": "cbo.revenue_projection.ty2024.income_by_source.wages_and_salaries.projected_amount", + "family": "cbo", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_projection_level", + "base_variable": "employment_income", + "basis": "fact", + "diagnostic_target_label": "United States 2024 tax year projected sum cbo wages and salaries projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:4ccc6f8f4cd37e7a7071fdd6", + "ledger_aggregation_method": "sum", + "ledger_assertion": "source_projection", + "ledger_assertion_policy": "allow_source_projection", + "ledger_concept_authority": "cbo", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:4ccc6f8f4cd37e7a7071fdd6", + "ledger_fact_label": "United States 2024 tax year projected sum cbo wages and salaries projection for tax unit [cbo Revenue Projections, by Category, February 2026, sheet 3.Individual Income Tax Details cbo_revenue_projections_income_by_source_2026_02.csv cbo_2026_02_baseline]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cbo.income_source", + "ledger_layout_groupby_value_id": "wages_and_salaries", + "ledger_layout_groupby_value_label": "Total employment income", + "ledger_layout_measure_id": "projected_amount", + "ledger_layout_record_set_id": "cbo.revenue_projection.ty2024.income_by_source.wages_and_salaries", + "ledger_layout_record_set_spec_id": "cbo.revenue_projection.income_by_source.wages_and_salaries.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:afc65c9f15e18c9474fa14e2", + "ledger_measure_concept": "cbo.wages_and_salaries_projection", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:fd7172a42f4c3704b2e7b0e0", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "source_projection", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:83fef9d5040c72df9ff43a12", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cbo.wages_and_salaries", + "ledger_source_record_id": "cbo.revenue_projection.ty2024.income_by_source.wages_and_salaries.projected_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:2622a7a53f1062b1af2b16a9", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "projected_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "cbo_wages_and_salaries" + } + }, + { + "name": "census_pep.v2024.cy2024.state_resident_population.09.45_to_49.population", + "family": "census_population", + "metadata": { + "age_group": "45_to_49", + "age_lower_bound": "45", + "age_upper_bound": "50", + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "basis": "fact", + "diagnostic_target_label": "Connecticut 2024 calendar year count census pep resident population for person [census_pep Annual State Resident Population Estimates by Single Year of Age, Sex, Race, and Hispanic Origin sc-est2024-alldata6.csv census_pep_vintage_2024]", + "geography_scope": "state", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:00726f2745d419dec009afc6", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "census", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "resident_population", + "ledger_entity_name": "person", + "ledger_entity_role": "resident_population", + "ledger_fact_key": "ledger.aggregate_fact.v2:00726f2745d419dec009afc6", + "ledger_fact_label": "Connecticut 2024 calendar year count census pep resident population for person [census_pep Annual State Resident Population Estimates by Single Year of Age, Sex, Race, and Hispanic Origin sc-est2024-alldata6.csv census_pep_vintage_2024]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US09", + "ledger_geography_level": "state", + "ledger_geography_name": "Connecticut", + "ledger_geography_vintage": "2024", + "ledger_layout_groupby_dimension": "age", + "ledger_layout_groupby_value_id": "45_to_49", + "ledger_layout_groupby_value_label": "Age 45 to 49", + "ledger_layout_measure_id": "population", + "ledger_layout_record_set_id": "census_pep.v2024.cy2024.state_resident_population.09", + "ledger_layout_record_set_spec_id": "census_pep.v2024.state_resident_population_age.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:93a296e329fd82a3d67b5b52", + "ledger_measure_concept": "census_pep.resident_population", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a91882f1c315808575671d8d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:abd92b14d8e590e1cad746fb", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "census_pep.POPESTIMATE2024", + "ledger_source_record_id": "census_pep.v2024.cy2024.state_resident_population.09.45_to_49.population", + "ledger_universe_constraint_count": "2", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:a5371c16ee8d7f8571df78df", + "ledger_value_operation": "identity", + "materializer": "population_age", + "measure_mode": "indicator_sum", + "source_measure_id": "population", + "source_period": "2024", + "state_fips": "09", + "target_period": "2024", + "target_role": "population_age" + } + }, + { + "name": "census_stc.fy2023.individual_income_tax_collections.nd.t40.collections", + "family": "state_income_tax", + "metadata": { + "aged_to": "2024", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "state_income_tax", + "basis": "projection", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:073a414d2aa87f08bcc12ca5", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "state_government_tax_collections", + "ledger_entity_name": "government", + "ledger_entity_role": "tax_collecting_government", + "ledger_fact_key": "ledger.aggregate_fact.v2:073a414d2aa87f08bcc12ca5", + "ledger_fact_label": "North Dakota 2023 fiscal year sum census stc individual income tax collections for government [census_stc FY2023 STC Flat File item T40 Individual Income Taxes FY2023-Flat-File.txt fiscal_year_2023]", + "ledger_fact_period": "2023", + "ledger_geography_id": "0400000US38", + "ledger_geography_level": "state", + "ledger_geography_name": "North Dakota", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "census_stc.item", + "ledger_layout_groupby_value_id": "t40", + "ledger_layout_groupby_value_label": "T40 Individual income taxes", + "ledger_layout_measure_id": "collections", + "ledger_layout_record_set_id": "census_stc.fy2023.individual_income_tax_collections.nd", + "ledger_layout_record_set_spec_id": "census_stc.individual_income_tax_collections.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:d268100a7a9bbca9e0a93b17", + "ledger_measure_concept": "census_stc.individual_income_tax_collections", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:8ce89cd605b9b32adeaaee3d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "fiscal_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:d5c707523d647be7eedc051b", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "census_stc.individual_income_tax_collections", + "ledger_source_record_id": "census_stc.fy2023.individual_income_tax_collections.nd.t40.collections", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:c4d3b12d278c61dbc0d3418c", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "collections", + "source_period": "2023", + "state_fips": "38", + "target_period": "2024", + "target_role": "state_income_tax" + } + }, + { + "name": "cms_aca.oep2024.state_marketplace.ar.marketplace_enrollment", + "family": "cms_aca", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "has_marketplace_health_coverage_at_interview", + "basis": "fact", + "diagnostic_target_label": "Arkansas 2024 calendar year count cms aca marketplace plan selections for person [cms_aca 2024 OEP State-Level Public Use File 2024-oep-state-level-public-use-file.zip 2024_open_enrollment_period]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:037622d8bf3f3d39b06d9ed0", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "cms", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "aca_marketplace_qhp_selections", + "ledger_entity_name": "person", + "ledger_entity_role": "aca_marketplace_consumer", + "ledger_fact_key": "ledger.aggregate_fact.v2:037622d8bf3f3d39b06d9ed0", + "ledger_fact_label": "Arkansas 2024 calendar year count cms aca marketplace plan selections for person [cms_aca 2024 OEP State-Level Public Use File 2024-oep-state-level-public-use-file.zip 2024_open_enrollment_period]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US05", + "ledger_geography_level": "state", + "ledger_geography_name": "Arkansas", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cms_aca.state_abrvtn", + "ledger_layout_groupby_value_id": "ar", + "ledger_layout_groupby_value_label": "Arkansas", + "ledger_layout_measure_id": "marketplace_enrollment", + "ledger_layout_record_set_id": "cms_aca.oep2024.state_marketplace", + "ledger_layout_record_set_spec_id": "cms_aca.oep_state_marketplace.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:b4725e79db31db9b3f6f9a8e", + "ledger_measure_concept": "cms_aca.marketplace_plan_selections", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a8cd791a7e73cd60dc06a8e4", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:12771a6927dd22319955b4bc", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cms_aca.Cnsmr", + "ledger_source_record_id": "cms_aca.oep2024.state_marketplace.ar.marketplace_enrollment", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:a5b84b91396d2008aa0ac13d", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "marketplace_enrollment", + "source_period": "2024", + "state_fips": "05", + "target_period": "2024", + "target_role": "aca_enrollment" + } + }, + { + "name": "cms_aca.oep2024.state_marketplace.nd.aptc_recipients", + "family": "cms_aca", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "assigned_aca_ptc", + "basis": "fact", + "diagnostic_target_label": "North Dakota 2024 calendar year count cms aca aptc consumers for person [cms_aca 2024 OEP State-Level Public Use File 2024-oep-state-level-public-use-file.zip 2024_open_enrollment_period]", + "indicator_filter_variable": "is_aca_ptc_eligible", + "indicator_map_to": "person", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:031e323360f23d77c946dabc", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "cms", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "aca_marketplace_qhp_selections", + "ledger_entity_name": "person", + "ledger_entity_role": "aca_marketplace_consumer", + "ledger_fact_key": "ledger.aggregate_fact.v2:031e323360f23d77c946dabc", + "ledger_fact_label": "North Dakota 2024 calendar year count cms aca aptc consumers for person [cms_aca 2024 OEP State-Level Public Use File 2024-oep-state-level-public-use-file.zip 2024_open_enrollment_period]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US38", + "ledger_geography_level": "state", + "ledger_geography_name": "North Dakota", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cms_aca.state_abrvtn", + "ledger_layout_groupby_value_id": "nd", + "ledger_layout_groupby_value_label": "North Dakota", + "ledger_layout_measure_id": "aptc_recipients", + "ledger_layout_record_set_id": "cms_aca.oep2024.state_marketplace", + "ledger_layout_record_set_spec_id": "cms_aca.oep_state_marketplace.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:0cb3eb9daec9b5c05a3b67c8", + "ledger_measure_concept": "cms_aca.aptc_consumers", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:576d44f1f1964e439da04908", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:6cdadfc590d48a80b3eb468d", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cms_aca.APTC_Cnsmr", + "ledger_source_record_id": "cms_aca.oep2024.state_marketplace.nd.aptc_recipients", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:a5b84b91396d2008aa0ac13d", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "aptc_recipients", + "source_period": "2024", + "state_fips": "38", + "target_period": "2024", + "target_role": "aca_ptc_recipients" + } + }, + { + "name": "cms_medicaid.month2024_12.state_enrollment.al.total_medicaid_chip_enrollment", + "family": "cms_medicaid", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variables": "medicaid_enrolled,chip_enrolled", + "basis": "fact", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:070c247a00db2216f1e38650", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "medicaid_chip_enrollment", + "ledger_entity_name": "person", + "ledger_entity_role": "medicaid_or_chip_enrollee", + "ledger_fact_key": "ledger.aggregate_fact.v2:070c247a00db2216f1e38650", + "ledger_fact_label": "Alabama 2024-12 month count cms medicaid total medicaid chip enrollment for person [cms_medicaid State Medicaid and CHIP Applications, Eligibility Determinations, and Enrollment Data pi-dataset-april-2026-release.csv april_2026_release]", + "ledger_fact_period": "2024-12", + "ledger_geography_id": "0400000US01", + "ledger_geography_level": "state", + "ledger_geography_name": "Alabama", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cms_medicaid.state_abbreviation", + "ledger_layout_groupby_value_id": "al", + "ledger_layout_groupby_value_label": "Alabama", + "ledger_layout_measure_id": "total_medicaid_chip_enrollment", + "ledger_layout_record_set_id": "cms_medicaid.month2024_12.state_enrollment", + "ledger_layout_record_set_spec_id": "cms_medicaid.state_monthly_enrollment.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:d02b1a888d9486919d30e9f6", + "ledger_measure_concept": "cms_medicaid.total_medicaid_chip_enrollment", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:03cd917ce2db824b8fa835ad", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "month", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:1ea8500d6cbe1e21dd9620f2", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cms_medicaid.total_medicaid_chip_enrollment", + "ledger_source_record_id": "cms_medicaid.month2024_12.state_enrollment.al.total_medicaid_chip_enrollment", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:34f9fde871880b15bbee78e8", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "total_medicaid_chip_enrollment", + "source_period": "2024-12", + "state_fips": "01", + "target_period": "2024", + "target_role": "medicaid_chip_enrollment" + } + }, + { + "name": "cms_medicaid.month2024_12.state_enrollment.va.total_medicaid_enrollment", + "family": "cms_medicaid", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "medicaid_enrolled", + "basis": "fact", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0ceaa0b3e2895a4b21ad80e1", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "medicaid_chip_enrollment", + "ledger_entity_name": "person", + "ledger_entity_role": "medicaid_or_chip_enrollee", + "ledger_fact_key": "ledger.aggregate_fact.v2:0ceaa0b3e2895a4b21ad80e1", + "ledger_fact_label": "Virginia 2024-12 month count cms medicaid total medicaid enrollment for person [cms_medicaid State Medicaid and CHIP Applications, Eligibility Determinations, and Enrollment Data pi-dataset-april-2026-release.csv april_2026_release]", + "ledger_fact_period": "2024-12", + "ledger_geography_id": "0400000US51", + "ledger_geography_level": "state", + "ledger_geography_name": "Virginia", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cms_medicaid.state_abbreviation", + "ledger_layout_groupby_value_id": "va", + "ledger_layout_groupby_value_label": "Virginia", + "ledger_layout_measure_id": "total_medicaid_enrollment", + "ledger_layout_record_set_id": "cms_medicaid.month2024_12.state_enrollment", + "ledger_layout_record_set_spec_id": "cms_medicaid.state_monthly_enrollment.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:1411683a307a5c65fec26ae3", + "ledger_measure_concept": "cms_medicaid.total_medicaid_enrollment", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:9064ab7119aa4583f37eca58", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "month", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:0a1ddeceb9ee0c4240ee7bdc", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cms_medicaid.total_medicaid_enrollment", + "ledger_source_record_id": "cms_medicaid.month2024_12.state_enrollment.va.total_medicaid_enrollment", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:34f9fde871880b15bbee78e8", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "total_medicaid_enrollment", + "source_period": "2024-12", + "state_fips": "51", + "target_period": "2024", + "target_role": "medicaid_enrollment" + } + }, + { + "name": "cms_medicaid.month2024_12.state_enrollment.wi.total_chip_enrollment", + "family": "cms_medicaid", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "chip_enrolled", + "basis": "fact", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:065d38f2bab94be64149d1e8", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "medicaid_chip_enrollment", + "ledger_entity_name": "person", + "ledger_entity_role": "medicaid_or_chip_enrollee", + "ledger_fact_key": "ledger.aggregate_fact.v2:065d38f2bab94be64149d1e8", + "ledger_fact_label": "Wisconsin 2024-12 month count cms medicaid total chip enrollment for person [cms_medicaid State Medicaid and CHIP Applications, Eligibility Determinations, and Enrollment Data pi-dataset-april-2026-release.csv april_2026_release]", + "ledger_fact_period": "2024-12", + "ledger_geography_id": "0400000US55", + "ledger_geography_level": "state", + "ledger_geography_name": "Wisconsin", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "cms_medicaid.state_abbreviation", + "ledger_layout_groupby_value_id": "wi", + "ledger_layout_groupby_value_label": "Wisconsin", + "ledger_layout_measure_id": "total_chip_enrollment", + "ledger_layout_record_set_id": "cms_medicaid.month2024_12.state_enrollment", + "ledger_layout_record_set_spec_id": "cms_medicaid.state_monthly_enrollment.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:68051dd2dc78a43e56bb6349", + "ledger_measure_concept": "cms_medicaid.total_chip_enrollment", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:be9a73d324f489634799b6ef", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "month", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:878c7035fa2065d7bc07de3e", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cms_medicaid.total_chip_enrollment", + "ledger_source_record_id": "cms_medicaid.month2024_12.state_enrollment.wi.total_chip_enrollment", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:34f9fde871880b15bbee78e8", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "total_chip_enrollment", + "source_period": "2024-12", + "state_fips": "55", + "target_period": "2024", + "target_role": "chip_enrollment" + } + }, + { + "name": "cms_medicare.cy2024.part_b_premium_income.premiums_from_enrollees.actual_amount", + "family": "cms_medicare", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "gross_medicare_part_b_premium", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum cms medicare part b premium income for government (amount basis=actual, medicare financing component=premiums from enrollees, medicare part=part b) [cms_medicare 2025 Medicare Trustees Report Table III.C3 cms_2025_medicare_trustees_report.pdf trustees_report_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:60e06aceadaafb429f2c6743", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:e36094365d55d10a87d5bf21", + "ledger_domain": "medicare_financing", + "ledger_entity_name": "government", + "ledger_entity_role": "medicare_part_b_account", + "ledger_fact_key": "ledger.aggregate_fact.v2:60e06aceadaafb429f2c6743", + "ledger_fact_label": "United States 2024 calendar year sum cms medicare part b premium income for government (amount basis=actual, medicare financing component=premiums from enrollees, medicare part=part b) [cms_medicare 2025 Medicare Trustees Report Table III.C3 cms_2025_medicare_trustees_report.pdf trustees_report_2025]", + "ledger_fact_period": "2024", + "ledger_filter_amount_basis": "actual", + "ledger_filter_medicare.financing_component": "premiums_from_enrollees", + "ledger_filter_medicare.part": "part_b", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "medicare.financing_component", + "ledger_layout_groupby_value_id": "premiums_from_enrollees", + "ledger_layout_groupby_value_label": "Premiums from enrollees", + "ledger_layout_measure_id": "actual_amount", + "ledger_layout_record_set_id": "cms_medicare.cy2024.part_b_premium_income", + "ledger_layout_record_set_spec_id": "cms_medicare.part_b_premium_income.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:e57a030b355cfdd180a2067c", + "ledger_measure_concept": "cms_medicare.part_b_premium_income", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:906ee5ca4442551b7f30bd90", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:b51e2ab0e8a652f7706e3172", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "cms_medicare.part_b_premium_income", + "ledger_source_record_id": "cms_medicare.cy2024.part_b_premium_income.premiums_from_enrollees.actual_amount", + "ledger_universe_constraint_count": "3", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:93d1acdb7bcc006e6d8b83d1", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "actual_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "medicare_part_b_premium_total" + } + }, + { + "name": "federal_reserve_z1.cy2023.households_nonprofits_balance_sheet.net_worth.fl152090005.amount_outstanding", + "family": "federal_reserve", + "metadata": { + "aged_to": "2024", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "net_worth", + "basis": "projection", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0bd40511d31008d171941911", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "household_balance_sheet", + "ledger_entity_name": "institutional_sector", + "ledger_entity_role": "households_and_nonprofit_organizations", + "ledger_fact_key": "ledger.aggregate_fact.v2:0bd40511d31008d171941911", + "ledger_fact_label": "United States 2023 calendar year sum federal reserve z1 households nonprofits net worth for institutional sector [federal_reserve Z.1 B.101 Households and nonprofit organizations federal_reserve_z1_20260319_b101.html z1_2026_03_19]", + "ledger_fact_period": "2023", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "federal_reserve.z1_series_code", + "ledger_layout_groupby_value_id": "fl152090005", + "ledger_layout_groupby_value_label": "Net worth (assets minus liabilities)", + "ledger_layout_measure_id": "amount_outstanding", + "ledger_layout_record_set_id": "federal_reserve_z1.cy2023.households_nonprofits_balance_sheet.net_worth", + "ledger_layout_record_set_spec_id": "federal_reserve_z1.households_nonprofits_balance_sheet.net_worth.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:ae67b6436b65ed2869b93c04", + "ledger_measure_concept": "federal_reserve.z1.households_nonprofits_net_worth", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:183984b96f6e8269c0f45acc", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:54807efdb6940c63871788b5", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "federal_reserve.z1.fl152090005", + "ledger_source_record_id": "federal_reserve_z1.cy2023.households_nonprofits_balance_sheet.net_worth.fl152090005.amount_outstanding", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:23b1acdd8cf5d1a3a06aad7d", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "amount_outstanding", + "source_period": "2023", + "target_period": "2024", + "target_role": "household_net_worth" + } + }, + { + "name": "hhs_acf_liheap.fy2024.national_profile.state_programs.households_served", + "family": "hhs_acf_liheap", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "spm_unit_energy_subsidy", + "basis": "fact", + "diagnostic_target_label": "United States 2024 fiscal year count hhs acf liheap households served by state programs for household (administering entity=state programs, program=liheap) [hhs_acf_liheap LIHEAP FY2024 National Profile (All States) acf_liheap_fy2024_all_states_national_profile.pdf fiscal_year_2024]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:a27dca9ff2d82f95ec1fa85b", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:6ab96509d9d20f5f557ae938", + "ledger_domain": "liheap_state_programs", + "ledger_entity_name": "household", + "ledger_entity_role": "recipient_household", + "ledger_fact_key": "ledger.aggregate_fact.v2:a27dca9ff2d82f95ec1fa85b", + "ledger_fact_label": "United States 2024 fiscal year count hhs acf liheap households served by state programs for household (administering entity=state programs, program=liheap) [hhs_acf_liheap LIHEAP FY2024 National Profile (All States) acf_liheap_fy2024_all_states_national_profile.pdf fiscal_year_2024]", + "ledger_fact_period": "2024", + "ledger_filter_administering_entity": "state_programs", + "ledger_filter_program": "liheap", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "program", + "ledger_layout_groupby_value_id": "state_programs", + "ledger_layout_groupby_value_label": "State programs", + "ledger_layout_measure_id": "households_served", + "ledger_layout_record_set_id": "hhs_acf_liheap.fy2024.national_profile", + "ledger_layout_record_set_spec_id": "hhs_acf_liheap.national_profile.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:c9b2821f38cec701db7b09aa", + "ledger_measure_concept": "hhs_acf_liheap.households_served_by_state_programs", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:7e4ff2936b0a32a89084b7ef", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "fiscal_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:743c98d1749816c0da5969d6", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "hhs_acf_liheap.households_served_by_state_programs", + "ledger_source_record_id": "hhs_acf_liheap.fy2024.national_profile.state_programs.households_served", + "ledger_universe_constraint_count": "2", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:184668189383ff69507ec9de", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "households_served", + "source_period": "2024", + "target_period": "2024", + "target_role": "liheap_households" + } + }, + { + "name": "hhs_acf_tanf.fy2024.cash_assistance.mn.basic_assistance_excluding_relative_foster_care_and_adoption_guardianship.all_funds", + "family": "hhs_acf_tanf", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "tanf", + "basis": "fact", + "diagnostic_target_label": "Minnesota 2024 fiscal year sum hhs acf tanf cash assistance expenditures for family [hhs_acf_tanf FY 2024 Federal TANF and State MOE Financial Data fy-2024-tanf-moe-financial-data.xlsx fiscal_year_2024]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:12dafca0611909552cabb4b5", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "tanf_cash_assistance", + "ledger_entity_name": "family", + "ledger_entity_role": "tanf_assistance_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:12dafca0611909552cabb4b5", + "ledger_fact_label": "Minnesota 2024 fiscal year sum hhs acf tanf cash assistance expenditures for family [hhs_acf_tanf FY 2024 Federal TANF and State MOE Financial Data fy-2024-tanf-moe-financial-data.xlsx fiscal_year_2024]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US27", + "ledger_geography_level": "state", + "ledger_geography_name": "Minnesota", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "hhs_acf_tanf.spending_category", + "ledger_layout_groupby_value_id": "basic_assistance_excluding_relative_foster_care_and_adoption_guardianship", + "ledger_layout_groupby_value_label": "Basic Assistance excluding relative foster care and adoption/guardianship subsidies", + "ledger_layout_measure_id": "all_funds", + "ledger_layout_record_set_id": "hhs_acf_tanf.fy2024.cash_assistance.mn", + "ledger_layout_record_set_spec_id": "hhs_acf_tanf.cash_assistance.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:88569ede2dfab255a4e75146", + "ledger_measure_concept": "hhs_acf_tanf.cash_assistance_expenditures", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:6e6faf2df73f6a4c66dc7c27", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "fiscal_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:932c82d295184accf640b6be", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "hhs_acf_tanf.cash_assistance_expenditures", + "ledger_source_record_id": "hhs_acf_tanf.fy2024.cash_assistance.mn.basic_assistance_excluding_relative_foster_care_and_adoption_guardianship.all_funds", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:0baf094e00ca9f56cf8a27f7", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "all_funds", + "source_period": "2024", + "state_fips": "27", + "target_period": "2024", + "target_role": "tanf_total" + } + }, + { + "name": "irs_soi.ty2022.historic_table_2.state_agi.ne.1_to_10k.taxable_interest_returns", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "1.0", + "agi_upper_bound": "10000.0", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "taxable_interest_income", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:00a3344fb8c0248a702f744b", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a105489ed380a9affe7f3017", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:00a3344fb8c0248a702f744b", + "ledger_fact_label": "Nebraska 2022 tax year count irs soi returns with taxable interest for tax unit (filing status=all, income range=1 to 10k) [irs_soi Historic Table 2 state AGI facts 22in55cmcsv.csv tax_year_2022]", + "ledger_fact_period": "2022", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "1_to_10k", + "ledger_geography_id": "0400000US31", + "ledger_geography_level": "state", + "ledger_geography_name": "Nebraska", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "1_to_10k", + "ledger_layout_groupby_value_label": "$1 under $10,000", + "ledger_layout_measure_id": "taxable_interest_returns", + "ledger_layout_record_set_id": "irs_soi.ty2022.historic_table_2.state_agi.ne", + "ledger_layout_record_set_spec_id": "irs_soi.historic_table_2.state_agi_counts_and_amounts.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:e60b2e186b0c88aa96b34307", + "ledger_measure_concept": "irs_soi.returns_with_taxable_interest", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:e769e35958b4da316a1b756f", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:181bb3fe82233002d4f7891b", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.returns_with_taxable_interest", + "ledger_source_record_id": "irs_soi.ty2022.historic_table_2.state_agi.ne.1_to_10k.taxable_interest_returns", + "ledger_universe_constraint_count": "2", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:dd73cfe560ffc42ff4b69b19", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "indicator_sum", + "requires_total_soi_uprating": "true", + "soi_return_universe": "all_returns", + "soi_return_universe_bridge": "returns_excluding_dependents", + "source_measure_id": "taxable_interest_returns", + "source_period": "2022", + "source_variable": "taxable_interest_income", + "stale_distribution_rebased_to_active_total": "true", + "state_fips": "31", + "target_period": "2024", + "target_role": "soi_fiscal_distribution", + "uprating_factor": "1.09515550961132", + "uprating_from_period": "2022", + "uprating_index": "total_taxable_interest_returns", + "uprating_index_source_period": "2023", + "uprating_index_source_record_id": "irs_soi.ty2023.table_4_3.all_returns_excluding_dependents.all.taxable_interest_returns", + "uprating_to_period": "2023", + "variable": "taxable_interest_income" + } + }, + { + "name": "irs_soi.ty2022.historic_table_2.state_broad.az.all.premium_tax_credit_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.12034597479376", + "aging_factor_source": "chained:irs_soi.ty2023.table_1_1.all.adjusted_gross_income+cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "assigned_aca_ptc", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:13bcbeeea457f4afe40264d5", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:13bcbeeea457f4afe40264d5", + "ledger_fact_label": "Arizona 2022 tax year sum irs soi premium tax credit for tax unit (filing status=all, income range=all) [irs_soi Historic Table 2 state broad totals 22in55cmcsv.csv tax_year_2022]", + "ledger_fact_period": "2022", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0400000US04", + "ledger_geography_level": "state", + "ledger_geography_name": "Arizona", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "state", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns", + "ledger_layout_measure_id": "premium_tax_credit_amount", + "ledger_layout_record_set_id": "irs_soi.ty2022.historic_table_2.state_broad.az", + "ledger_layout_record_set_spec_id": "irs_soi.historic_table_2.state_broad_totals.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:a525b55253e3ba9f127169f1", + "ledger_measure_concept": "irs_soi.premium_tax_credit", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:705218edf9fb85fc7051130a", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:16bd715ea017310a9398202a", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.premium_tax_credit", + "ledger_source_record_id": "irs_soi.ty2022.historic_table_2.state_broad.az.all.premium_tax_credit_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "premium_tax_credit_amount", + "source_period": "2022", + "source_variable": "assigned_aca_ptc", + "state_fips": "04", + "target_period": "2024", + "target_role": "aca_spending", + "variable": "assigned_aca_ptc" + } + }, + { + "name": "irs_soi.ty2022.historic_table_2.state_broad.mo.all.schedule_c_income_returns", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "self_employment_income", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:000286428bf4140d93a31c2a", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:000286428bf4140d93a31c2a", + "ledger_fact_label": "Missouri 2022 tax year count irs soi returns with schedule c income for tax unit (filing status=all, income range=all) [irs_soi Historic Table 2 state broad totals 22in55cmcsv.csv tax_year_2022]", + "ledger_fact_period": "2022", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0400000US29", + "ledger_geography_level": "state", + "ledger_geography_name": "Missouri", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "state", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns", + "ledger_layout_measure_id": "schedule_c_income_returns", + "ledger_layout_record_set_id": "irs_soi.ty2022.historic_table_2.state_broad.mo", + "ledger_layout_record_set_spec_id": "irs_soi.historic_table_2.state_broad_totals.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:e04b8cbcaf5b67ec02f223c1", + "ledger_measure_concept": "irs_soi.returns_with_schedule_c_income", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:09014d2b777e2672c8c95e90", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:4d4312ee8ae70eedcc9bedf3", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.returns_with_schedule_c_income", + "ledger_source_record_id": "irs_soi.ty2022.historic_table_2.state_broad.mo.all.schedule_c_income_returns", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "indicator_sum", + "soi_return_universe": "all_returns", + "source_measure_id": "schedule_c_income_returns", + "source_period": "2022", + "source_variable": "business_net_profits", + "state_fips": "29", + "target_period": "2024", + "target_role": "soi_fiscal_distribution", + "variable": "business_net_profits" + } + }, + { + "name": "irs_soi.ty2022.historic_table_2.state_eitc.ut.ut.eitc_two_children_claims", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "eitc", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:007f5fbd68b406e80c6332e6", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:63278c9758955e7d793089b9", + "ledger_domain": "individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:007f5fbd68b406e80c6332e6", + "ledger_fact_label": "Utah 2022 tax year count irs soi returns with earned income credit for tax unit (eitc child count=2, filing status=all, income range=all) [irs_soi Historic Table 2 state EITC totals 22in55cmcsv.csv tax_year_2022]", + "ledger_fact_period": "2022", + "ledger_filter_eitc_child_count": "2", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0400000US49", + "ledger_geography_level": "state", + "ledger_geography_name": "Utah", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "geography", + "ledger_layout_groupby_value_id": "ut", + "ledger_layout_groupby_value_label": "Utah", + "ledger_layout_measure_id": "eitc_two_children_claims", + "ledger_layout_record_set_id": "irs_soi.ty2022.historic_table_2.state_eitc.ut", + "ledger_layout_record_set_spec_id": "irs_soi.historic_table_2.state_eitc.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:6607d78c4f7a02889d57f922", + "ledger_measure_concept": "irs_soi.returns_with_earned_income_credit", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a025c0f61e67084ace5fda7a", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:359181452d9f66d787796d46", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.returns_with_earned_income_credit", + "ledger_source_record_id": "irs_soi.ty2022.historic_table_2.state_eitc.ut.ut.eitc_two_children_claims", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:c4059d5f55c83731ccce6a80", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "indicator_sum", + "soi_return_universe": "all_returns", + "source_measure_id": "eitc_two_children_claims", + "source_period": "2022", + "source_variable": "eitc", + "state_fips": "49", + "target_period": "2024", + "target_role": "soi_fiscal_distribution", + "variable": "eitc" + } + }, + { + "name": "irs_soi.ty2022.historic_table_2.us.all.ctc_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.12034597479376", + "aging_factor_source": "chained:irs_soi.ty2023.table_1_1.all.adjusted_gross_income+cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variables": "ctc,ctc_limiting_tax_liability", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:c2574b47be4cdde5bcbc57dd", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:c2574b47be4cdde5bcbc57dd", + "ledger_fact_label": "United States 2022 tax year sum irs soi child tax credit for tax unit (filing status=all, income range=all) [irs_soi Historic Table 2 22in55cmcsv.csv tax_year_2022]", + "ledger_fact_period": "2022", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns", + "ledger_layout_measure_id": "ctc_amount", + "ledger_layout_record_set_id": "irs_soi.ty2022.historic_table_2.us", + "ledger_layout_record_set_spec_id": "irs_soi.historic_table_2.us.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:7856cf277ca5ccd559d3012c", + "ledger_measure_concept": "irs_soi.child_tax_credit", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:cd2b92dcddab77edf83fe074", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:59d5ed7ee9bb845cb105127d", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.child_tax_credit", + "ledger_source_record_id": "irs_soi.ty2022.historic_table_2.us.all.ctc_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "ctc_amount", + "source_period": "2022", + "source_variable": "ctc", + "target_period": "2024", + "target_role": "ctc_total", + "variable": "ctc" + } + }, + { + "name": "irs_soi.ty2022.historic_table_2.us.all.income_tax_liability_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.12034597479376", + "aging_factor_source": "chained:irs_soi.ty2023.table_1_1.all.adjusted_gross_income+cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "income_tax", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:4375f42e46a49e661a923180", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:4375f42e46a49e661a923180", + "ledger_fact_label": "United States 2022 tax year sum irs soi total income tax for tax unit (filing status=all, income range=all) [irs_soi Historic Table 2 22in55cmcsv.csv tax_year_2022]", + "ledger_fact_period": "2022", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns", + "ledger_layout_measure_id": "income_tax_liability_amount", + "ledger_layout_record_set_id": "irs_soi.ty2022.historic_table_2.us", + "ledger_layout_record_set_spec_id": "irs_soi.historic_table_2.us.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:c38ee046553b265b0ed831e5", + "ledger_measure_concept": "irs_soi.total_income_tax", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:03e8cec9baafb7157f4ffbb3", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:d24c67d034167340420b6b0e", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.total_income_tax", + "ledger_source_record_id": "irs_soi.ty2022.historic_table_2.us.all.income_tax_liability_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "income_tax_liability_amount", + "source_period": "2022", + "source_variable": "income_tax", + "target_period": "2024", + "target_role": "federal_income_tax_total", + "variable": "income_tax" + } + }, + { + "name": "irs_soi.ty2023.congressional_district_2022.all_returns.sd_total.premium_tax_credit_returns", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "assigned_aca_ptc", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:02be35fd1fb3d0a695dff952", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:02be35fd1fb3d0a695dff952", + "ledger_fact_label": "South Dakota 2023 tax year count irs soi returns with premium tax credit for tax unit (filing status=all, income range=all) [irs_soi Congressional District Data 2022 22incd.csv tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0400000US46", + "ledger_geography_level": "state", + "ledger_geography_name": "South Dakota", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "irs_soi.congressional_district", + "ledger_layout_groupby_value_id": "sd_total", + "ledger_layout_groupby_value_label": "South Dakota all congressional districts", + "ledger_layout_measure_id": "premium_tax_credit_returns", + "ledger_layout_record_set_id": "irs_soi.ty2023.congressional_district_2022.all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.congressional_district_2022.all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:b39b8f9fb2fc1b58535c5c36", + "ledger_measure_concept": "irs_soi.returns_with_premium_tax_credit", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:3965f120dcdbe4dac90e72fe", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:4f1a5a201539262c402d08a0", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.returns_with_premium_tax_credit", + "ledger_source_record_id": "irs_soi.ty2023.congressional_district_2022.all_returns.sd_total.premium_tax_credit_returns", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "indicator_sum", + "soi_return_universe": "all_returns", + "source_measure_id": "premium_tax_credit_returns", + "source_period": "2023", + "source_variable": "assigned_aca_ptc", + "state_fips": "46", + "target_period": "2024", + "target_role": "aca_ptc_returns", + "variable": "assigned_aca_ptc" + } + }, + { + "name": "irs_soi.ty2023.congressional_district_2022.all_returns.us.actc_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "refundable_ctc", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0f7eebf3089b2eb106e38c06", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:0f7eebf3089b2eb106e38c06", + "ledger_fact_label": "United States 2023 tax year sum irs soi additional child tax credit for tax unit (filing status=all, income range=all) [irs_soi Congressional District Data 2022 22incd.csv tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "irs_soi.congressional_district", + "ledger_layout_groupby_value_id": "us", + "ledger_layout_groupby_value_label": "United States all returns", + "ledger_layout_measure_id": "actc_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.congressional_district_2022.all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.congressional_district_2022.all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:15cff70722922c184b5da38d", + "ledger_measure_concept": "irs_soi.additional_child_tax_credit", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:4d9a18bde3ef1d8636da45e3", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:d56f9186716603c44131cd7f", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.additional_child_tax_credit", + "ledger_source_record_id": "irs_soi.ty2023.congressional_district_2022.all_returns.us.actc_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "actc_amount", + "source_period": "2023", + "source_variable": "refundable_ctc", + "target_period": "2024", + "target_role": "refundable_ctc_total", + "variable": "refundable_ctc" + } + }, + { + "name": "irs_soi.ty2023.congressional_district_2022.all_returns.us.income_tax_before_credits_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "income_tax_before_credits", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0444dd9c861910558980e4af", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:0444dd9c861910558980e4af", + "ledger_fact_label": "United States 2023 tax year sum irs soi income tax before credits for tax unit (filing status=all, income range=all) [irs_soi Congressional District Data 2022 22incd.csv tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "irs_soi.congressional_district", + "ledger_layout_groupby_value_id": "us", + "ledger_layout_groupby_value_label": "United States all returns", + "ledger_layout_measure_id": "income_tax_before_credits_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.congressional_district_2022.all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.congressional_district_2022.all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:59b32606d61fa76e31307c98", + "ledger_measure_concept": "irs_soi.income_tax_before_credits", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:29e91bd12e8f117f65ec78fc", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:75ae9161e08154b4740ba47d", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.income_tax_before_credits", + "ledger_source_record_id": "irs_soi.ty2023.congressional_district_2022.all_returns.us.income_tax_before_credits_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "income_tax_before_credits_amount", + "source_period": "2023", + "source_variable": "income_tax_before_credits", + "target_period": "2024", + "target_role": "income_tax_before_credits_total", + "variable": "income_tax_before_credits" + } + }, + { + "name": "irs_soi.ty2023.congressional_district_2022.all_returns.us.interest_paid_deduction_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "interest_deduction", + "basis": "projection", + "filing_status": "All", + "itemized_only": "true", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:5cae63ad4ade0506dc756c64", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:5cae63ad4ade0506dc756c64", + "ledger_fact_label": "United States 2023 tax year sum irs soi interest paid deduction for tax unit (filing status=all, income range=all) [irs_soi Congressional District Data 2022 22incd.csv tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "irs_soi.congressional_district", + "ledger_layout_groupby_value_id": "us", + "ledger_layout_groupby_value_label": "United States all returns", + "ledger_layout_measure_id": "interest_paid_deduction_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.congressional_district_2022.all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.congressional_district_2022.all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:25c22e2cf9dfffddbb5fa48d", + "ledger_measure_concept": "irs_soi.interest_paid_deduction", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a891ef0946b1fbf7279e62cc", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:34bf08aa0255ad745665eb34", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.interest_paid_deduction", + "ledger_source_record_id": "irs_soi.ty2023.congressional_district_2022.all_returns.us.interest_paid_deduction_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "interest_paid_deduction_amount", + "source_period": "2023", + "source_variable": "interest_deduction", + "target_period": "2024", + "target_role": "interest_deduction_total", + "variable": "interest_deduction" + } + }, + { + "name": "irs_soi.ty2023.congressional_district_2022.all_returns.us.medical_dental_expense_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "medical_expense_deduction", + "basis": "projection", + "filing_status": "All", + "itemized_only": "true", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:45d41cabf4f4921950630ada", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:45d41cabf4f4921950630ada", + "ledger_fact_label": "United States 2023 tax year sum irs soi medical dental expense deduction for tax unit (filing status=all, income range=all) [irs_soi Congressional District Data 2022 22incd.csv tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "irs_soi.congressional_district", + "ledger_layout_groupby_value_id": "us", + "ledger_layout_groupby_value_label": "United States all returns", + "ledger_layout_measure_id": "medical_dental_expense_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.congressional_district_2022.all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.congressional_district_2022.all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:e97e4ace7de1d4c44cddb43b", + "ledger_measure_concept": "irs_soi.medical_dental_expense_deduction", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:aa2a52159887a3404a7dc2ab", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:a21e0d1d6241fb55e0c08b30", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.medical_dental_expense_deduction", + "ledger_source_record_id": "irs_soi.ty2023.congressional_district_2022.all_returns.us.medical_dental_expense_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "medical_dental_expense_amount", + "source_period": "2023", + "source_variable": "medical_expense_deduction", + "target_period": "2024", + "target_role": "medical_expense_deduction_total", + "variable": "medical_expense_deduction" + } + }, + { + "name": "irs_soi.ty2023.form_w2_social_security_tips.box_7_social_security_tips.amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.05578784246075", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.wages_and_salaries.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "tip_income", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:a32808c8efdd4439d93f7b46", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "broad_match", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "form_w2_items", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit_with_form_w2", + "ledger_fact_key": "ledger.aggregate_fact.v2:a32808c8efdd4439d93f7b46", + "ledger_fact_label": "United States 2023 tax year sum irs soi form w2 social security tip income for tax unit [irs_soi Table 4.B. Summary of Items for Taxpayers with Form W-2, by Return and Earner Type, Tax Year 2020 20in04w2all.xlsx tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "irs_soi.form_w2_item", + "ledger_layout_groupby_value_id": "box_7_social_security_tips", + "ledger_layout_groupby_value_label": "Box 7: Social security tips", + "ledger_layout_measure_id": "amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.form_w2_social_security_tips", + "ledger_layout_record_set_spec_id": "irs_soi.form_w2_social_security_tips.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:cda4ab7a10fd33d71bcf0e46", + "ledger_legal_vintage": "tax_year_2023", + "ledger_measure_concept": "irs_soi.form_w2_social_security_tip_income", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:84c1c1abc742895b354d749c", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:f15db16814263dcff81dced2", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.form_w2_social_security_tip_income", + "ledger_source_record_id": "irs_soi.ty2023.form_w2_social_security_tips.box_7_social_security_tips.amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:9027bb75e08a4ac66ea6cbd1", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "amount", + "source_period": "2023", + "source_variable": "tip_income", + "target_period": "2024", + "target_role": "w2_social_security_tips_total", + "variable": "tip_income" + } + }, + { + "name": "irs_soi.ty2023.table_1_2.all_returns.all.total_itemized_deductions_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "itemized_taxable_income_deductions", + "basis": "projection", + "filing_status": "All", + "itemized_only": "true", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:13ce6c80b88e555da3e83e33", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:13ce6c80b88e555da3e83e33", + "ledger_fact_label": "United States 2023 tax year sum irs soi total itemized deductions for tax unit (filing status=all, income range=all) [irs_soi Publication 1304 Table 1.2 23in12ms.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns, total", + "ledger_layout_measure_id": "total_itemized_deductions_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_1_2.all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.table_1_2.all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:543790f52180ad407f0e1a2a", + "ledger_measure_concept": "irs_soi.total_itemized_deductions", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:ec2625225b8c442a92a1ba94", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:bbaa6e5de12ff141556182d3", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.total_itemized_deductions", + "ledger_source_record_id": "irs_soi.ty2023.table_1_2.all_returns.all.total_itemized_deductions_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "total_itemized_deductions_amount", + "source_period": "2023", + "source_variable": "itemized_taxable_income_deductions", + "target_period": "2024", + "target_role": "itemized_deduction_total", + "variable": "itemized_taxable_income_deductions" + } + }, + { + "name": "irs_soi.ty2023.table_1_4.all.unemployment_compensation_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "unemployment_compensation", + "basis": "projection", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:56832750ecb290334175de48", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:56832750ecb290334175de48", + "ledger_fact_label": "United States 2023 tax year sum irs soi unemployment compensation for tax unit (filing status=all, income range=all) [irs_soi Publication 1304 Table 1.4 23in14ar.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns, total", + "ledger_layout_measure_id": "unemployment_compensation_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_1_4", + "ledger_layout_record_set_spec_id": "irs_soi.table_1_4.total_wages.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:5c33a0b7f37c0728b0c34ff7", + "ledger_measure_concept": "irs_soi.unemployment_compensation", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:aecf8cb0c0a08a424c50b5a8", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:69a1a8c6ae7b3dc456e2b711", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.unemployment_compensation", + "ledger_source_record_id": "irs_soi.ty2023.table_1_4.all.unemployment_compensation_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "unemployment_compensation_amount", + "source_period": "2023", + "source_variable": "unemployment_compensation", + "target_period": "2024", + "target_role": "unemployment_compensation_total", + "variable": "unemployment_compensation" + } + }, + { + "name": "irs_soi.ty2023.table_2_1.itemized_all_returns.all.charitable_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "charitable_deduction", + "basis": "projection", + "filing_status": "All", + "itemized_only": "true", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:7ce708841a3f0d7510bc6aa9", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "individual_income_tax_returns_with_itemized_deductions", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:7ce708841a3f0d7510bc6aa9", + "ledger_fact_label": "United States 2023 tax year sum irs soi contributions deduction for tax unit (filing status=all, income range=all) [irs_soi Publication 1304 Table 2.1 23in21id.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns, total", + "ledger_layout_measure_id": "charitable_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_2_1.itemized_all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.table_2_1.itemized_all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:f9d29653e657dd427f27611c", + "ledger_measure_concept": "irs_soi.contributions_deduction", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:83625aa4115c908a923cc6bb", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:bc58555bfac499b32279ae3d", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.contributions_deduction", + "ledger_source_record_id": "irs_soi.ty2023.table_2_1.itemized_all_returns.all.charitable_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:3968768af674225263d718ac", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "itemized_returns", + "source_measure_id": "charitable_amount", + "source_period": "2023", + "source_variable": "charitable_deduction", + "target_period": "2024", + "target_role": "charitable_deduction_total", + "variable": "charitable_deduction" + } + }, + { + "name": "irs_soi.ty2023.table_2_1.itemized_all_returns.all.limited_state_local_taxes_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1.08721346938244", + "aging_factor_source": "cbo.revenue_projection.ty2024.income_by_source.adjusted_gross_income.projected_amount", + "alignment_model_id": "cbo_growth_factor_aging", + "alignment_model_version": "1.2.0", + "base_variable": "salt_deduction", + "basis": "projection", + "filing_status": "All", + "itemized_only": "true", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:1595f84c82c34e88c7a6fe17", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:a55266d8b1d53a8a7e49927d", + "ledger_domain": "individual_income_tax_returns_with_itemized_deductions", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:1595f84c82c34e88c7a6fe17", + "ledger_fact_label": "United States 2023 tax year sum irs soi limited state local taxes for tax unit (filing status=all, income range=all) [irs_soi Publication 1304 Table 2.1 23in21id.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "all", + "ledger_layout_groupby_value_label": "All returns, total", + "ledger_layout_measure_id": "limited_state_local_taxes_amount", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_2_1.itemized_all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.table_2_1.itemized_all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:a0dcea492400007fbd8c4737", + "ledger_measure_concept": "irs_soi.limited_state_local_taxes", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:ccf9184ab6cffee2c4352179", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:d15e242cf68f90e15619e179", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.limited_state_local_taxes", + "ledger_source_record_id": "irs_soi.ty2023.table_2_1.itemized_all_returns.all.limited_state_local_taxes_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:3968768af674225263d718ac", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "itemized_returns", + "source_measure_id": "limited_state_local_taxes_amount", + "source_period": "2023", + "source_variable": "salt_deduction", + "target_period": "2024", + "target_role": "salt_deduction_total", + "variable": "salt_deduction" + } + }, + { + "name": "irs_soi.ty2023.table_2_5.eitc_all_returns.total.total_earned_income_credit_returns", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "eitc", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:5daf3bfecb32d62db3744cb1", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:926e7d749cf1dbf623c6c614", + "ledger_domain": "individual_income_tax_returns_with_earned_income_credit", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:5daf3bfecb32d62db3744cb1", + "ledger_fact_label": "United States 2023 tax year count irs soi returns with total earned income credit for tax unit (income range=all, qualifying children=all) [irs_soi Publication 1304 Table 2.5 23in25ic.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_income_range": "all", + "ledger_filter_qualifying_children": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "total", + "ledger_layout_groupby_value_label": "Total", + "ledger_layout_measure_id": "total_earned_income_credit_returns", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_2_5.eitc_all_returns", + "ledger_layout_record_set_spec_id": "irs_soi.table_2_5.eitc_all_returns.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:f3706cbbae03a5ac7a7503c6", + "ledger_measure_concept": "irs_soi.returns_with_total_earned_income_credit", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:6a49f120e44f770d6bca06ee", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:1831ea073cd7f2d065b58452", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.returns_with_total_earned_income_credit", + "ledger_source_record_id": "irs_soi.ty2023.table_2_5.eitc_all_returns.total.total_earned_income_credit_returns", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:f7a3948479d84b148d180863", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "indicator_sum", + "soi_return_universe": "all_returns", + "source_measure_id": "total_earned_income_credit_returns", + "source_period": "2023", + "source_variable": "eitc", + "target_period": "2024", + "target_role": "eitc_returns_total", + "variable": "eitc" + } + }, + { + "name": "irs_soi.ty2023.table_2_5.eitc_by_agi_children.one_qualifying_child.12k_to_13k.eitc_total", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "12000.0", + "agi_upper_bound": "13000.0", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "eitc", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:8bb7eb5885b3e8c3541dc52c", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:65761a82b02d9db7d4517a5f", + "ledger_domain": "individual_income_tax_returns_with_earned_income_credit", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:8bb7eb5885b3e8c3541dc52c", + "ledger_fact_label": "United States 2023 tax year sum irs soi total earned income credit for tax unit (income range=12k to 13k) [irs_soi Publication 1304 Table 2.5 EITC by AGI and qualifying children 23in25ic.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_income_range": "12k_to_13k", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "12k_to_13k", + "ledger_layout_groupby_value_label": "$12,000 under $13,000", + "ledger_layout_measure_id": "eitc_total", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_2_5.eitc_by_agi_children.one_qualifying_child", + "ledger_layout_record_set_spec_id": "irs_soi.table_2_5.eitc_by_agi_children.one_qualifying_child.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:9b2aff7402f0aaf9b2c171c6", + "ledger_measure_concept": "irs_soi.total_earned_income_credit", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:60052bacd5ddb820bf50d89b", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:a2c60669ed1273c6b413034f", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.total_earned_income_credit", + "ledger_source_record_id": "irs_soi.ty2023.table_2_5.eitc_by_agi_children.one_qualifying_child.12k_to_13k.eitc_total", + "ledger_universe_constraint_count": "3", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:a48279275ac2ea976e2d27ca", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "requires_total_eitc_uprating": "true", + "soi_return_universe": "all_returns", + "source_measure_id": "eitc_total", + "source_period": "2024", + "source_variable": "eitc", + "target_period": "2024", + "target_role": "soi_fiscal_distribution", + "uprating_agi_lower_bound": "10000", + "uprating_agi_upper_bound": "15000", + "uprating_factor": "0.935510051854531", + "uprating_from_period": "2023", + "uprating_index": "agi_eitc_amount", + "uprating_index_source_period": "2024", + "uprating_index_source_record_id": "irs_soi.ty2024.filing_season_week47.eitc_by_agi.10k_to_15k.total_earned_income_credit_amount", + "uprating_to_period": "2024", + "variable": "eitc" + } + }, + { + "name": "irs_soi.ty2023.table_2_5.eitc_by_agi_children.two_qualifying_children.6k_to_7k.eitc_returns", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "6000.0", + "agi_upper_bound": "7000.0", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "eitc", + "basis": "fact", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:bd9d9862eab0e0129679f7d1", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:b94360879eaa69a204a5a68f", + "ledger_domain": "individual_income_tax_returns_with_earned_income_credit", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:bd9d9862eab0e0129679f7d1", + "ledger_fact_label": "United States 2023 tax year count irs soi returns with total earned income credit for tax unit (income range=6k to 7k) [irs_soi Publication 1304 Table 2.5 EITC by AGI and qualifying children 23in25ic.xls tax_year_2023]", + "ledger_fact_period": "2023", + "ledger_filter_income_range": "6k_to_7k", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "us:statutes/26/62#adjusted_gross_income", + "ledger_layout_groupby_value_id": "6k_to_7k", + "ledger_layout_groupby_value_label": "$6,000 under $7,000", + "ledger_layout_measure_id": "eitc_returns", + "ledger_layout_record_set_id": "irs_soi.ty2023.table_2_5.eitc_by_agi_children.two_qualifying_children", + "ledger_layout_record_set_spec_id": "irs_soi.table_2_5.eitc_by_agi_children.two_qualifying_children.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:7077cc858b75ba7ef2ee6149", + "ledger_measure_concept": "irs_soi.returns_with_total_earned_income_credit", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:2864bd3215b5154570514bf2", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:98618444d496ad9a611e93d3", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.returns_with_total_earned_income_credit", + "ledger_source_record_id": "irs_soi.ty2023.table_2_5.eitc_by_agi_children.two_qualifying_children.6k_to_7k.eitc_returns", + "ledger_universe_constraint_count": "3", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:c4aaf862ee4322528944cc00", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "indicator_sum", + "requires_total_eitc_uprating": "true", + "soi_return_universe": "all_returns", + "source_measure_id": "eitc_returns", + "source_period": "2023", + "source_variable": "eitc", + "target_period": "2024", + "target_role": "soi_fiscal_distribution", + "uprating_agi_lower_bound": "5000", + "uprating_agi_upper_bound": "10000", + "uprating_factor": "0.860475276825772", + "uprating_from_period": "2023", + "uprating_index": "agi_eitc_returns", + "uprating_index_source_period": "2024", + "uprating_index_source_record_id": "irs_soi.ty2024.filing_season_week47.eitc_by_agi.5k_to_10k.total_earned_income_credit_returns", + "uprating_to_period": "2024", + "variable": "eitc" + } + }, + { + "name": "irs_soi.ty2024.filing_season_week47.eitc_all_returns.earned_income_credit.total_earned_income_credit_amount", + "family": "irs_soi", + "metadata": { + "aged_to": "2024", + "agi_lower_bound": "-inf", + "agi_upper_bound": "inf", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "eitc", + "basis": "fact", + "diagnostic_target_label": "United States 2024 tax year sum irs soi total earned income credit for tax unit (income range=all) [irs_soi Filing Season Statistics Table 1 25inweek47.xlsx filing_season_2025_week_47_tax_year_2024]", + "filing_status": "All", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0ec6eb86d8f4deeb6442b097", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:d8a060f7b6580a7feef39a82", + "ledger_domain": "all_individual_income_tax_returns", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "filing_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:0ec6eb86d8f4deeb6442b097", + "ledger_fact_label": "United States 2024 tax year sum irs soi total earned income credit for tax unit (income range=all) [irs_soi Filing Season Statistics Table 1 25inweek47.xlsx filing_season_2025_week_47_tax_year_2024]", + "ledger_fact_period": "2024", + "ledger_filter_income_range": "all", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "2020_census", + "ledger_layout_groupby_dimension": "irs_soi.filing_season_line", + "ledger_layout_groupby_value_id": "earned_income_credit", + "ledger_layout_groupby_value_label": "Earned income credit", + "ledger_layout_measure_id": "total_earned_income_credit_amount", + "ledger_layout_record_set_id": "irs_soi.ty2024.filing_season_week47.eitc_all_returns.amount", + "ledger_layout_record_set_spec_id": "irs_soi.filing_season_week47.eitc_amount.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:91f6de9e7219faec6767952c", + "ledger_measure_concept": "irs_soi.total_earned_income_credit", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:26704c66efa1cc49120622d5", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "tax_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:3139736805c486ba87aa5a65", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "irs_soi.total_earned_income_credit", + "ledger_source_record_id": "irs_soi.ty2024.filing_season_week47.eitc_all_returns.earned_income_credit.total_earned_income_credit_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:18df86d027cde55a3f217b77", + "ledger_value_operation": "identity", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "soi_return_universe": "all_returns", + "source_measure_id": "total_earned_income_credit_amount", + "source_period": "2024", + "source_variable": "eitc", + "target_period": "2024", + "target_role": "eitc_total", + "variable": "eitc" + } + }, + { + "name": "jct.tax_expenditures.cy2024.salt_deduction.revenue_loss", + "family": "jct", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum jct individual tax expenditure revenue loss for tax unit (tax expenditure=salt deduction) [jct Estimates of Federal Tax Expenditures for Fiscal Years 2024-2028 jct_tax_expenditures_2024.csv jcx_48_24]", + "kind": "neutralize_variable", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:5682307c595e529aa5913701", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:eb748245a772d2942ceca6dc", + "ledger_domain": "federal_income_tax", + "ledger_entity_name": "tax_unit", + "ledger_entity_role": "federal_income_tax_unit", + "ledger_fact_key": "ledger.aggregate_fact.v2:5682307c595e529aa5913701", + "ledger_fact_label": "United States 2024 calendar year sum jct individual tax expenditure revenue loss for tax unit (tax expenditure=salt deduction) [jct Estimates of Federal Tax Expenditures for Fiscal Years 2024-2028 jct_tax_expenditures_2024.csv jcx_48_24]", + "ledger_fact_period": "2024", + "ledger_filter_tax_expenditure": "salt_deduction", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "jct.tax_expenditure", + "ledger_layout_groupby_value_id": "salt_deduction", + "ledger_layout_groupby_value_label": "State and local tax deduction", + "ledger_layout_measure_id": "revenue_loss", + "ledger_layout_record_set_id": "jct.tax_expenditures.cy2024", + "ledger_layout_record_set_spec_id": "jct.individual_tax_expenditure_revenue_loss.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:fda315f5e75c0bd614ae2064", + "ledger_measure_concept": "jct.individual_tax_expenditure_revenue_loss", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:52e606cb178312c59f290797", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:31f3ebf14066296637457323", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "jct.individual_income_tax_revenue_loss", + "ledger_source_record_id": "jct.tax_expenditures.cy2024.salt_deduction.revenue_loss", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:4a7e0f2bb7e79d57c73caf24", + "ledger_value_operation": "identity", + "matrix_row": "reform_minus_baseline_income_tax", + "neutralized_variable": "salt_deduction", + "output_variable": "income_tax", + "target_period": "2024", + "target_role": "jct_tax_expenditure" + } + }, + { + "name": "ssa_ssi_monthly.month2024_12.ssi_federal_payment_recipients.by_age.age_18_to_64.recipient_count", + "family": "ssa", + "metadata": { + "age_lower_bound": "18", + "age_upper_bound": "65", + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "ssi", + "basis": "fact", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:8cd89d59639ef5916c7892df", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "exact", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "ssi_recipient", + "ledger_fact_key": "ledger.aggregate_fact.v2:8cd89d59639ef5916c7892df", + "ledger_fact_label": "United States 2024-12 month count ssa ssi federal payment recipient count for person [ssa SSI Monthly Statistics, December 2024, Table 1 ssi_monthly_2024_12_table01.csv ssi_monthly_statistics_2024_12]", + "ledger_fact_period": "2024-12", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "age", + "ledger_layout_groupby_value_id": "age_18_to_64", + "ledger_layout_groupby_value_label": "SSI federal payment recipients aged 18 to 64", + "ledger_layout_measure_id": "recipient_count", + "ledger_layout_record_set_id": "ssa_ssi_monthly.month2024_12.ssi_federal_payment_recipients.by_age", + "ledger_layout_record_set_spec_id": "ssa_ssi_monthly.ssi_federal_payment_recipients.by_age.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:0c8d9773877bced7f9c75baf", + "ledger_measure_concept": "ssa.ssi_federal_payment_recipient_count", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:319e7762e4862dfcb6b8b000", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "month", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:09be52906030aa820ac9df98", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa_ssi_monthly.table_1.federal_payment_recipient_count", + "ledger_source_record_id": "ssa_ssi_monthly.month2024_12.ssi_federal_payment_recipients.by_age.age_18_to_64.recipient_count", + "ledger_universe_constraint_count": "2", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:f41934ac7e51bfd98745b0e8", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "recipient_count", + "source_period": "2024-12", + "target_period": "2024", + "target_role": "ssa_ssi_age_band_recipients" + } + }, + { + "name": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_benefits.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "social_security", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:035d27c7ddaecd3099232f2d", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:d29d93519f020f1e6d00258b", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "beneficiary", + "ledger_fact_key": "ledger.aggregate_fact.v2:035d27c7ddaecd3099232f2d", + "ledger_fact_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_filter_us_social_security_and_ssi.program_payment_type": "social_security_benefits", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "us_social_security_and_ssi.program_payment_type", + "ledger_layout_groupby_value_id": "social_security_benefits", + "ledger_layout_groupby_value_label": "Total Social Security benefits", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.oasdi_ssi_payments", + "ledger_layout_record_set_spec_id": "ssa_supplement.oasdi_ssi_payments.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:96134114175b59e6efa25c67", + "ledger_measure_concept": "ssa.annual_oasdi_or_ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a806af05d80fffaf6edf0c1d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:51e617fd377bbf0edc132b02", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa.annual_statistical_supplement_payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_benefits.payment_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:4c5f625323b03b573a18d4ec", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "social_security_total" + } + }, + { + "name": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_dependents_benefits.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "social_security_dependents", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security dependents benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:cf58110712f7a30d1d03b8b0", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:1be85568dee741d93947596d", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "beneficiary", + "ledger_fact_key": "ledger.aggregate_fact.v2:cf58110712f7a30d1d03b8b0", + "ledger_fact_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security dependents benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_filter_us_social_security_and_ssi.program_payment_type": "social_security_dependents_benefits", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "us_social_security_and_ssi.program_payment_type", + "ledger_layout_groupby_value_id": "social_security_dependents_benefits", + "ledger_layout_groupby_value_label": "Social Security spouse and child benefits", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.oasdi_ssi_payments", + "ledger_layout_record_set_spec_id": "ssa_supplement.oasdi_ssi_payments.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:c02a92a54cab3081fb9347dd", + "ledger_measure_concept": "ssa.annual_oasdi_or_ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a806af05d80fffaf6edf0c1d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:bddb873affae4c2e0d74304e", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa.annual_statistical_supplement_payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_dependents_benefits.payment_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:58348b3776735fd5b2d45c5a", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "ssa_dependents_total" + } + }, + { + "name": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_disability_benefits.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "social_security_disability", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security disability benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:1d3492e0d2a643f41ba01974", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:3226439ddef1c3b9df576b22", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "beneficiary", + "ledger_fact_key": "ledger.aggregate_fact.v2:1d3492e0d2a643f41ba01974", + "ledger_fact_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security disability benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_filter_us_social_security_and_ssi.program_payment_type": "social_security_disability_benefits", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "us_social_security_and_ssi.program_payment_type", + "ledger_layout_groupby_value_id": "social_security_disability_benefits", + "ledger_layout_groupby_value_label": "Social Security disabled-worker benefits", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.oasdi_ssi_payments", + "ledger_layout_record_set_spec_id": "ssa_supplement.oasdi_ssi_payments.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:073fb4c9af6c87df876b97fc", + "ledger_measure_concept": "ssa.annual_oasdi_or_ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a806af05d80fffaf6edf0c1d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:bf3b766783d8dbd2196fff2a", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa.annual_statistical_supplement_payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_disability_benefits.payment_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:81ba61479608a0fbde3ef684", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "ssa_disability_total" + } + }, + { + "name": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_retirement_benefits.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "social_security_retirement", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security retirement benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:30dce3f79a7d4c83cf66fb93", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:f4edbda1ada7f7e674ee6910", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "beneficiary", + "ledger_fact_key": "ledger.aggregate_fact.v2:30dce3f79a7d4c83cf66fb93", + "ledger_fact_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security retirement benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_filter_us_social_security_and_ssi.program_payment_type": "social_security_retirement_benefits", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "us_social_security_and_ssi.program_payment_type", + "ledger_layout_groupby_value_id": "social_security_retirement_benefits", + "ledger_layout_groupby_value_label": "Social Security retired-worker benefits", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.oasdi_ssi_payments", + "ledger_layout_record_set_spec_id": "ssa_supplement.oasdi_ssi_payments.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:1e233ee6aad9bd24c544a453", + "ledger_measure_concept": "ssa.annual_oasdi_or_ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a806af05d80fffaf6edf0c1d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:4f4d79bf456fe1b61aa9f546", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa.annual_statistical_supplement_payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_retirement_benefits.payment_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:b0e808a4b10fcd34366e8550", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "ssa_retirement_total" + } + }, + { + "name": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_survivors_benefits.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "social_security_survivors", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security survivors benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:3ea75e37464de497387232b9", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:4630952c04d666cf0e084a5f", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "beneficiary", + "ledger_fact_key": "ledger.aggregate_fact.v2:3ea75e37464de497387232b9", + "ledger_fact_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=social security survivors benefits) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_filter_us_social_security_and_ssi.program_payment_type": "social_security_survivors_benefits", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "us_social_security_and_ssi.program_payment_type", + "ledger_layout_groupby_value_id": "social_security_survivors_benefits", + "ledger_layout_groupby_value_label": "Social Security survivor benefits", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.oasdi_ssi_payments", + "ledger_layout_record_set_spec_id": "ssa_supplement.oasdi_ssi_payments.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:84a549c15b489c881cbbcdcf", + "ledger_measure_concept": "ssa.annual_oasdi_or_ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a806af05d80fffaf6edf0c1d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:bf6a1bfcc970e3e1ac215769", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa.annual_statistical_supplement_payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.oasdi_ssi_payments.social_security_survivors_benefits.payment_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:3ecf012f6f16a4b3c1ebe60b", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "ssa_survivors_total" + } + }, + { + "name": "ssa_supplement.cy2024.oasdi_ssi_payments.ssi_payments.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "ssi", + "basis": "fact", + "diagnostic_target_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=ssi payments) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:ddf4fff0450304b664352542", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "source_label", + "ledger_dimension_set_key": "ledger.dimension_set.v2:783d0f30ee717df22225868c", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "beneficiary", + "ledger_fact_key": "ledger.aggregate_fact.v2:ddf4fff0450304b664352542", + "ledger_fact_label": "United States 2024 calendar year sum ssa annual oasdi or ssi payment amount for person (us social security and ssi program payment type=ssi payments) [ssa SSA Annual Statistical Supplement 2025 extracted OASDI and SSI target rows ssa_oasdi_ssi_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_filter_us_social_security_and_ssi.program_payment_type": "ssi_payments", + "ledger_geography_id": "0100000US", + "ledger_geography_level": "country", + "ledger_geography_name": "United States", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "us_social_security_and_ssi.program_payment_type", + "ledger_layout_groupby_value_id": "ssi_payments", + "ledger_layout_groupby_value_label": "SSI federally administered payments", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.oasdi_ssi_payments", + "ledger_layout_record_set_spec_id": "ssa_supplement.oasdi_ssi_payments.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:e8cc3892595f5d50cb3fea7f", + "ledger_measure_concept": "ssa.annual_oasdi_or_ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:a806af05d80fffaf6edf0c1d", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:2728de03edf431f67f3aee0a", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa.annual_statistical_supplement_payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.oasdi_ssi_payments.ssi_payments.payment_amount", + "ledger_universe_constraint_count": "1", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:3d727c6bcbf31f8b32083e7c", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "target_period": "2024", + "target_role": "ssi_total" + } + }, + { + "name": "ssa_supplement.cy2024.ssi_payments.by_area_category.district_of_columbia_total.payment_amount", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "ssi", + "basis": "fact", + "diagnostic_target_label": "District of Columbia 2024 calendar year sum ssa ssi payment amount for person [ssa SSA Annual Statistical Supplement 2025 Table 7.B1 ssi_table_7b1_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:00714d75d272e43c4bf00794", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "exact", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "ssi_recipient", + "ledger_fact_key": "ledger.aggregate_fact.v2:00714d75d272e43c4bf00794", + "ledger_fact_label": "District of Columbia 2024 calendar year sum ssa ssi payment amount for person [ssa SSA Annual Statistical Supplement 2025 Table 7.B1 ssi_table_7b1_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US11", + "ledger_geography_level": "state", + "ledger_geography_name": "District of Columbia", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "ssi_category", + "ledger_layout_groupby_value_id": "district_of_columbia_total", + "ledger_layout_groupby_value_label": "District of Columbia total SSI", + "ledger_layout_measure_id": "payment_amount", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.ssi_payments.by_area_category", + "ledger_layout_record_set_spec_id": "ssa_supplement.ssi_payments.by_area_category.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:8ef26d04263cacfa3cb9d450", + "ledger_measure_concept": "ssa.ssi_payment_amount", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:1164cac98ca9f1e50116eeb8", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:c51ed0e797f5d477276d1901", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa_supplement.table_7b1.payment_amount", + "ledger_source_record_id": "ssa_supplement.cy2024.ssi_payments.by_area_category.district_of_columbia_total.payment_amount", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:437cc63c9167a7b58a01a7e8", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "payment_amount", + "source_period": "2024", + "state_fips": "11", + "target_period": "2024", + "target_role": "ssi_state_payments" + } + }, + { + "name": "ssa_supplement.cy2024.ssi_recipients.by_area_category.ohio_total.recipient_count", + "family": "ssa", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "ssi", + "basis": "fact", + "diagnostic_target_label": "Ohio 2024 calendar year count ssa ssi recipient count for person [ssa SSA Annual Statistical Supplement 2025 Table 7.B1 ssi_table_7b1_2024.csv annual_statistical_supplement_2025]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0019914e7c50a0a5bd9a9316", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_concept_authority": "ledger-us", + "ledger_concept_relation": "exact", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "social_security_and_ssi_payments", + "ledger_entity_name": "person", + "ledger_entity_role": "ssi_recipient", + "ledger_fact_key": "ledger.aggregate_fact.v2:0019914e7c50a0a5bd9a9316", + "ledger_fact_label": "Ohio 2024 calendar year count ssa ssi recipient count for person [ssa SSA Annual Statistical Supplement 2025 Table 7.B1 ssi_table_7b1_2024.csv annual_statistical_supplement_2025]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US39", + "ledger_geography_level": "state", + "ledger_geography_name": "Ohio", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "ssi_category", + "ledger_layout_groupby_value_id": "ohio_total", + "ledger_layout_groupby_value_label": "Ohio total SSI", + "ledger_layout_measure_id": "recipient_count", + "ledger_layout_record_set_id": "ssa_supplement.cy2024.ssi_recipients.by_area_category", + "ledger_layout_record_set_spec_id": "ssa_supplement.ssi_recipients.by_area_category.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:ee5ba502fc4e7a06705afc48", + "ledger_measure_concept": "ssa.ssi_recipient_count", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:06c62f37827a5db3d5f126d9", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "calendar_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:c8b290d6bef60baf93afc9e1", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "ssa_supplement.table_7b1.recipient_count", + "ledger_source_record_id": "ssa_supplement.cy2024.ssi_recipients.by_area_category.ohio_total.recipient_count", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:437cc63c9167a7b58a01a7e8", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "recipient_count", + "source_period": "2024", + "state_fips": "39", + "target_period": "2024", + "target_role": "ssi_recipients" + } + }, + { + "name": "usda_snap.fy2024.state_average_monthly_households.nero.me.average_monthly_households", + "family": "usda_snap", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "not_dollar_amount", + "base_variable": "snap", + "basis": "fact", + "diagnostic_target_label": "Maine 2024 fiscal year mean usda snap average monthly households for household [usda_snap SNAP Monthly State Participation and Benefit Summary FY69 to current snap-zip-fy69tocurrent-6.zip!FY24.xlsx fiscal_year_2024]", + "fact_aggregation": "time_mean", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:03423b846f595d1fd71de403", + "ledger_aggregation_method": "mean", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "supplemental_nutrition_assistance_program", + "ledger_entity_name": "household", + "ledger_entity_role": "snap_household", + "ledger_fact_key": "ledger.aggregate_fact.v2:03423b846f595d1fd71de403", + "ledger_fact_label": "Maine 2024 fiscal year mean usda snap average monthly households for household [usda_snap SNAP Monthly State Participation and Benefit Summary FY69 to current snap-zip-fy69tocurrent-6.zip!FY24.xlsx fiscal_year_2024]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US23", + "ledger_geography_level": "state", + "ledger_geography_name": "Maine", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "usda_snap.state_or_territory", + "ledger_layout_groupby_value_id": "me", + "ledger_layout_groupby_value_label": "Maine", + "ledger_layout_measure_id": "average_monthly_households", + "ledger_layout_record_set_id": "usda_snap.fy2024.state_average_monthly_households.nero", + "ledger_layout_record_set_spec_id": "usda_snap.state_average_monthly_households.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:6fac2459918e0f5e0e8a734c", + "ledger_measure_concept": "usda_snap.average_monthly_households", + "ledger_measure_unit": "count", + "ledger_observed_measure_key": "ledger.observed_measure.v2:e7a0b3de3ff762416e1cd4bb", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "fiscal_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:fb96fc44800a470ff79ee24f", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "usda_snap.average_monthly_households", + "ledger_source_record_id": "usda_snap.fy2024.state_average_monthly_households.nero.me.average_monthly_households", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:bfda499580f575f077739283", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "indicator_sum", + "source_measure_id": "average_monthly_households", + "source_period": "2024", + "state_fips": "23", + "target_period": "2024", + "target_role": "snap_households" + } + }, + { + "name": "usda_snap.fy2024.state_benefits.swro.tx.total_benefits", + "family": "usda_snap", + "metadata": { + "aged_to": "2024", + "aging_factor": "1", + "aging_factor_source": "source_equals_build", + "base_variable": "snap", + "basis": "fact", + "diagnostic_target_label": "Texas 2024 fiscal year sum usda snap total benefits for government [usda_snap SNAP Monthly State Participation and Benefit Summary FY69 to current snap-zip-fy69tocurrent-6.zip!FY24.xlsx fiscal_year_2024]", + "ledger_aggregate_fact_key": "ledger.aggregate_fact.v2:0a1bf7748a7889b26160ecf0", + "ledger_aggregation_method": "sum", + "ledger_assertion": "observation", + "ledger_assertion_policy": "observed_only", + "ledger_dimension_set_key": "ledger.dimension_set.v2:44136fa355b3678a1146ad16", + "ledger_domain": "supplemental_nutrition_assistance_program", + "ledger_entity_name": "government", + "ledger_entity_role": "snap_program", + "ledger_fact_key": "ledger.aggregate_fact.v2:0a1bf7748a7889b26160ecf0", + "ledger_fact_label": "Texas 2024 fiscal year sum usda snap total benefits for government [usda_snap SNAP Monthly State Participation and Benefit Summary FY69 to current snap-zip-fy69tocurrent-6.zip!FY24.xlsx fiscal_year_2024]", + "ledger_fact_period": "2024", + "ledger_geography_id": "0400000US48", + "ledger_geography_level": "state", + "ledger_geography_name": "Texas", + "ledger_geography_vintage": "current", + "ledger_layout_groupby_dimension": "usda_snap.state_or_territory", + "ledger_layout_groupby_value_id": "tx", + "ledger_layout_groupby_value_label": "Texas", + "ledger_layout_measure_id": "total_benefits", + "ledger_layout_record_set_id": "usda_snap.fy2024.state_benefits.swro", + "ledger_layout_record_set_spec_id": "usda_snap.state_benefits.v1", + "ledger_legacy_fact_key": "ledger.fact.v1:2f885f7c7015b4dfd8467a31", + "ledger_measure_concept": "usda_snap.total_benefits", + "ledger_measure_unit": "usd", + "ledger_observed_measure_key": "ledger.observed_measure.v2:bac8ce949a8bc5c94e395298", + "ledger_period_match_policy": "latest_not_after", + "ledger_period_type": "fiscal_year", + "ledger_resolved_assertion": "observation", + "ledger_semantic_fact_key": "ledger.semantic_fact.v2:e446dd31b3c276a5024731dd", + "ledger_source": "policyengine-ledger-data", + "ledger_source_concept": "usda_snap.total_benefits", + "ledger_source_record_id": "usda_snap.fy2024.state_benefits.swro.tx.total_benefits", + "ledger_universe_constraint_set_key": "ledger.universe_constraint_set.v2:bfda499580f575f077739283", + "ledger_value_operation": "identity", + "materializer": "policyengine_variable", + "measure_mode": "sum", + "source_measure_id": "total_benefits", + "source_period": "2024", + "state_fips": "48", + "target_period": "2024", + "target_role": "snap_total" + } + } + ] +} diff --git a/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py b/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py index 2f8d08d365..98dcbf91b9 100644 --- a/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py @@ -3,6 +3,7 @@ import importlib.util import inspect import json +import os import sys from dataclasses import replace from pathlib import Path @@ -45,6 +46,19 @@ def _installed_variable_metadata_index(builder): pytest.skip("requires the policyengine-us [us] extra") +def _load_acs_local_release_module(): + root = Path(__file__).resolve().parents[3] + tools_path = str(root / "tools") + if tools_path not in sys.path: + sys.path.insert(0, tools_path) + path = root / "tools" / "build_us_acs_local_release.py" + spec = importlib.util.spec_from_file_location("build_us_acs_local_release", path) + module = importlib.util.module_from_spec(spec) + assert spec.loader is not None + spec.loader.exec_module(module) + return module + + def _load_scorer_module(): root = Path(__file__).resolve().parents[3] tools_path = str(root / "tools") @@ -2468,6 +2482,558 @@ def test_identity_ledger_filter_qualifiers_are_inert_not_unsupported() -> None: } +_RESTATED_AGI_LOWER = ( + "ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound" +) +_RESTATED_AGI_UPPER = ( + "ledger_filter_us:statutes/26/62#adjusted_gross_income_upper_bound" +) +_RESTATED_AGI_EXACT = "ledger_filter_us:statutes/26/62#adjusted_gross_income" +_RESTATED_EITC_CHILDREN_LOWER = ( + "ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound" +) +_RESTATED_EITC_CHILDREN_UPPER = ( + "ledger_filter_us.tax.earned_income_credit_qualifying_children_upper_bound" +) +_RESTATED_EITC_CHILDREN_EXACT = ( + "ledger_filter_us.tax.earned_income_credit_qualifying_children" +) + + +def _soi_band_metadata(**overrides: str | None) -> dict[str, str]: + """A compiled SOI AGI-band spec's metadata, in the shape the compiler emits. + + Mirrors ``_soi_target_reference`` output for an IRS SOI Historic Table 2 + state AGI cell: the half-open band the materializer slices on + (``agi_lower_bound``/``agi_upper_bound``) plus the supported Ledger filter + keys. An override of ``None`` drops the key. + """ + + metadata = { + "source_measure_id": "taxable_interest_amount", + "source_variable": "taxable_interest", + "variable": "taxable_interest", + "materializer": "irs_soi_slice", + "measure_mode": "sum", + "agi_lower_bound": "100000.0", + "agi_upper_bound": "200000.0", + "filing_status": "All", + "state_fips": "02", + "ledger_filter_filing_status": "all", + "ledger_filter_income_range": "100k_to_200k", + } + for key, value in overrides.items(): + if value is None: + metadata.pop(key, None) + else: + metadata[key] = value + return metadata + + +def _spec(name: str, metadata: dict[str, str]) -> SimpleNamespace: + return SimpleNamespace(name=name, metadata=metadata) + + +def test_restated_agi_bounds_pass_the_guard_only_where_they_agree() -> None: + """A labelled AGI bound equal to the compiled one is ignorable, so accepted. + + The labelled Chronicle vocabulary restates a fact's universe constraint as + ``ledger_filter_us:statutes/26/62#adjusted_gross_income_{lower,upper}_bound`` + beside the compiled ``agi_lower_bound``/``agi_upper_bound`` the materializer + actually slices on. Where the two name the same edge, dropping the + restatement changes no population, so the guard lets it through — one side + at a time, and with the open ends spelled the compiler's way (``-inf`` and + ``inf``). + """ + + builder = _load_builder_module() + both = _spec( + "irs_soi.ty2022.historic_table_2.state_agi.ak.100k_to_200k.taxable_interest_amount", + _soi_band_metadata( + **{_RESTATED_AGI_LOWER: "100000", _RESTATED_AGI_UPPER: "200000"} + ), + ) + lower_only = _spec( + "lower_only", _soi_band_metadata(**{_RESTATED_AGI_LOWER: "100000.0"}) + ) + upper_only = _spec( + "upper_only", _soi_band_metadata(**{_RESTATED_AGI_UPPER: "200000"}) + ) + open_ends = _spec( + "open_ends", + _soi_band_metadata( + agi_lower_bound="-inf", + agi_upper_bound="inf", + **{_RESTATED_AGI_LOWER: "-inf", _RESTATED_AGI_UPPER: "inf"}, + ), + ) + + assert ( + builder._unsupported_ledger_filter_metadata( + (both, lower_only, upper_only, open_ends) + ) + == {} + ) + builder._assert_supported_ledger_filter_metadata( + (both, lower_only, upper_only, open_ends) + ) + + +def test_disagreeing_restated_agi_bounds_are_refused_by_value() -> None: + """Negative control for the acceptance above: only equality is accepted. + + Each spec here carries a labelled bound the materializer would ignore + while slicing a different population — a lower edge below the compiled + one, an upper edge above it, a bound on a spec that compiles no band at + all, and an exact-value restatement for which the materializer has no + filter. All four keep the pre-existing refusal, now naming the values that + disagree. The unknown key is the control that the ordinary path is + untouched: it still refuses under its bare name. + """ + + builder = _load_builder_module() + specs = ( + _spec( + "disagreeing_lower", _soi_band_metadata(**{_RESTATED_AGI_LOWER: "50000"}) + ), + _spec( + "disagreeing_upper", _soi_band_metadata(**{_RESTATED_AGI_UPPER: "250000"}) + ), + _spec( + "no_compiled_lower", + _soi_band_metadata(agi_lower_bound=None, **{_RESTATED_AGI_LOWER: "100000"}), + ), + _spec("exact_agi", _soi_band_metadata(**{_RESTATED_AGI_EXACT: "100000"})), + _spec( + "unknown_key", + _soi_band_metadata(ledger_filter_novel_dimension="specific_slice"), + ), + ) + + assert builder._unsupported_ledger_filter_metadata(specs) == { + "disagreeing_lower": ( + f"{_RESTATED_AGI_LOWER}=50000 disagrees with agi_lower_bound=100000.0", + ), + "disagreeing_upper": ( + f"{_RESTATED_AGI_UPPER}=250000 disagrees with agi_upper_bound=200000.0", + ), + "no_compiled_lower": ( + f"{_RESTATED_AGI_LOWER}=100000 restates a bound the spec does not " + "compile: no agi_lower_bound", + ), + "exact_agi": ( + f"{_RESTATED_AGI_EXACT}=100000 restates an exact AGI, but the " + "materializer slices a half-open AGI band and applies no " + "exact-value AGI filter", + ), + "unknown_key": ("ledger_filter_novel_dimension",), + } + with pytest.raises(RuntimeError) as excinfo: + builder._assert_supported_ledger_filter_metadata(specs) + message = str(excinfo.value) + assert "Unsupported Ledger target filter metadata would be ignored" in message + assert "disagrees with agi_lower_bound=100000.0" in message + assert "ledger_filter_novel_dimension" in message + + +def test_restated_eitc_child_bounds_pass_the_guard_only_where_they_agree() -> None: + """A restated qualifying-child bound is judged against the applied filter. + + ``_soi_eitc_child_count_filter`` is what the materializer applies, and + ``_eitc_child_count_mask`` resolves it to ``== 0``, ``== 1``, ``== 2`` or + ``>= 3``. A lower bound of three therefore agrees with ``3plus`` and only + with it, and a suffix-free key restates an exact count. Upper bounds are + not compared at all; see + :func:`test_restated_eitc_child_upper_bounds_are_refused_outright`. + """ + + builder = _load_builder_module() + three_plus = _spec( + "irs_soi.ty2023.table_2_5.eitc_by_agi_children.three_or_more_qualifying_children", + _soi_band_metadata( + ledger_filter_eitc_child_count="3plus", + **{_RESTATED_EITC_CHILDREN_LOWER: "3"}, + ), + ) + exactly_two = _spec( + "exactly_two", + _soi_band_metadata( + ledger_filter_eitc_child_count="2", + **{_RESTATED_EITC_CHILDREN_EXACT: "2"}, + ), + ) + + assert builder._unsupported_ledger_filter_metadata((three_plus, exactly_two)) == {} + assert builder._unsupported_soi_ledger_filters(three_plus.metadata) == () + assert builder._unsupported_soi_ledger_filters(exactly_two.metadata) == () + + +def test_restated_eitc_child_upper_bounds_are_refused_outright() -> None: + """A qualifying-child upper bound is refused whatever it would agree with. + + Max's ruling (2026-09-22): until the Ledger confirms whether a count upper + bound means ``<`` or ``<=``, none is compared. ``< 1`` would agree with a + compiled ``0`` and ``<= 0`` would too, so both specs below are ones an + agreement rule could accept under one reading — and each is refused, with + the operator named as the reason, as is an upper bound on a spec with no + child-count filter. The refusal is per key: an exact restatement on the + same spec is still accepted, and a restated AGI upper bound is untouched. + The fatal guard raises, and the SOI skip keeps the key listed, so the + refusal cannot turn into a silent drop. ``_upper_bound_inclusive`` names + no restated concept and stays refused by its bare key. + """ + + builder = _load_builder_module() + reason = ( + "restates a qualifying-child upper bound, refused outright: the " + "Ledger's operator for it (< or <=) is unconfirmed, and the two " + "readings select different returns" + ) + inclusive_upper = f"{_RESTATED_EITC_CHILDREN_UPPER}_inclusive" + exclusive_reading = _soi_band_metadata( + ledger_filter_eitc_child_count="0", + **{ + _RESTATED_EITC_CHILDREN_UPPER: "1", + _RESTATED_EITC_CHILDREN_EXACT: "0", + _RESTATED_AGI_UPPER: "200000", + }, + ) + specs = ( + _spec("exclusive_reading", exclusive_reading), + _spec( + "inclusive_reading", + _soi_band_metadata( + ledger_filter_eitc_child_count="0", + **{_RESTATED_EITC_CHILDREN_UPPER: "0"}, + ), + ), + _spec( + "no_child_filter", + _soi_band_metadata(**{_RESTATED_EITC_CHILDREN_UPPER: "1"}), + ), + _spec( + "inclusive_key", + _soi_band_metadata( + ledger_filter_eitc_child_count="0", **{inclusive_upper: "0"} + ), + ), + ) + + assert builder.RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES == frozenset({"upper"}) + assert builder._unsupported_ledger_filter_metadata(specs) == { + "exclusive_reading": (f"{_RESTATED_EITC_CHILDREN_UPPER}=1 {reason}",), + "inclusive_reading": (f"{_RESTATED_EITC_CHILDREN_UPPER}=0 {reason}",), + "no_child_filter": (f"{_RESTATED_EITC_CHILDREN_UPPER}=1 {reason}",), + "inclusive_key": (inclusive_upper,), + } + assert builder._unsupported_soi_ledger_filters(exclusive_reading) == ( + _RESTATED_EITC_CHILDREN_UPPER, + ) + with pytest.raises(RuntimeError, match=r"operator for it \(< or <=\)"): + builder._assert_supported_ledger_filter_metadata(specs[:1]) + + +def test_restated_eitc_child_comparison_never_guesses_an_upper_reading() -> None: + """Dropping ``upper`` from the refused sides must not reopen a guess. + + The comparison reads only lower and exact restatements. If a later edit + empties :data:`RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES` without choosing + an operator, an upper bound must fail loudly rather than fall through to + an exact-count comparison that happens to accept it (``== 0`` against a + compiled ``0``). + """ + + builder = _load_builder_module() + builder.RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES = frozenset() + metadata = _soi_band_metadata( + ledger_filter_eitc_child_count="0", + **{_RESTATED_EITC_CHILDREN_UPPER: "0"}, + ) + + with pytest.raises(ValueError, match="reads only lower and exact"): + builder._unsupported_ledger_filter_metadata( + (_spec("unguarded_upper", metadata),) + ) + + +def test_disagreeing_restated_eitc_child_bounds_are_refused_by_value() -> None: + """Negative control: a child bound that selects other returns stays fatal. + + ``>= 3`` against a compiled ``== 2`` selects different returns; a bound on + a spec carrying no child-count filter at all has nothing to agree with; + and a value that is not a count in the probed range cannot be compared, so + it is refused rather than guessed at. + """ + + builder = _load_builder_module() + specs = ( + _spec( + "wrong_group", + _soi_band_metadata( + ledger_filter_eitc_child_count="2", + **{_RESTATED_EITC_CHILDREN_LOWER: "3"}, + ), + ), + _spec( + "no_child_filter", + _soi_band_metadata(**{_RESTATED_EITC_CHILDREN_LOWER: "3"}), + ), + _spec( + "not_a_count", + _soi_band_metadata( + ledger_filter_eitc_child_count="3plus", + **{_RESTATED_EITC_CHILDREN_LOWER: "three"}, + ), + ), + ) + + assert builder._unsupported_ledger_filter_metadata(specs) == { + "wrong_group": ( + f"{_RESTATED_EITC_CHILDREN_LOWER}=3 selects different returns than " + "the compiled child-count filter '2'", + ), + "no_child_filter": ( + f"{_RESTATED_EITC_CHILDREN_LOWER}=3 restates a qualifying-child " + "bound on a spec that carries no child-count filter for the " + "materializer to apply", + ), + "not_a_count": ( + f"{_RESTATED_EITC_CHILDREN_LOWER}=three is not a qualifying-child " + f"count in 0..{builder.RESTATED_EITC_CHILD_COUNT_PROBE_MAX}", + ), + } + + +def test_legacy_agi_usd_dimensions_stay_refused_by_bare_key() -> None: + """``agi_lower_usd``/``agi_upper_usd`` are not restated concepts (2026-09-22). + + Max ruled against adding them to ``RESTATED_LEDGER_FILTER_CONCEPTS``: no + compiled target carries them today, and the guard already refuses an + unknown ``ledger_filter_*`` key loudly. This pins that second half — even + where the legacy key equals the compiled edge, it is refused by its bare + name and the fatal guard raises, so a future compile that picks those + facts up stops rather than being accepted or silently dropped. + """ + + builder = _load_builder_module() + metadata = _soi_band_metadata( + ledger_filter_agi_lower_usd="100000", ledger_filter_agi_upper_usd="200000" + ) + + assert builder._unsupported_ledger_filter_metadata( + (_spec("legacy_agi_usd", metadata),) + ) == { + "legacy_agi_usd": ( + "ledger_filter_agi_lower_usd", + "ledger_filter_agi_upper_usd", + ) + } + assert builder._unsupported_soi_ledger_filters(metadata) == ( + "ledger_filter_agi_lower_usd", + "ledger_filter_agi_upper_usd", + ) + with pytest.raises(RuntimeError, match="ledger_filter_agi_lower_usd"): + builder._assert_supported_ledger_filter_metadata( + (_spec("legacy_agi_usd", metadata),) + ) + + +def test_restated_filters_clear_the_soi_skip_only_where_they_agree() -> None: + """The second checker must not turn an accepted restatement into a silent drop. + + ``_unsupported_soi_ledger_filters`` is consulted inside + ``_materialize_target_frame``'s SOI loop, where a non-empty result skips + the spec with no error at all — so accepting a restatement at the fatal + guard while leaving it listed here would only move the spec from a refusal + to a silent disappearance. A disagreeing restatement stays listed, and the + fatal guard at the top of the same function refuses it before the loop + runs, so the silent skip is unreachable for one. Unknown SOI filters keep + their existing behaviour. + """ + + builder = _load_builder_module() + agreeing = _soi_band_metadata(**{_RESTATED_AGI_LOWER: "100000"}) + disagreeing = _soi_band_metadata(**{_RESTATED_AGI_LOWER: "50000"}) + + assert builder._unsupported_soi_ledger_filters(agreeing) == () + assert builder._unsupported_soi_ledger_filters(disagreeing) == ( + _RESTATED_AGI_LOWER, + ) + with pytest.raises(RuntimeError, match="disagrees with agi_lower_bound"): + builder._assert_supported_ledger_filter_metadata( + (_spec("disagreeing", disagreeing),) + ) + assert builder._unsupported_soi_ledger_filters( + {"ledger_filter_new_dimension": "specific_slice"} + ) == ("ledger_filter_new_dimension",) + + +def test_restated_concept_rules_all_have_a_comparison() -> None: + """Every named restated concept must route to an implemented comparison. + + Adding a concept to ``RESTATED_LEDGER_FILTER_CONCEPTS`` without a rule + would raise at compile time on the first spec carrying it; this pins the + two rules that exist instead. + """ + + builder = _load_builder_module() + + assert set(builder.RESTATED_LEDGER_FILTER_CONCEPTS.values()) == { + "agi_band", + "eitc_child_count", + } + assert builder._restated_ledger_filter_concept(_RESTATED_AGI_LOWER) == ( + "us:statutes/26/62#adjusted_gross_income", + "lower", + ) + assert builder._restated_ledger_filter_concept(_RESTATED_EITC_CHILDREN_EXACT) == ( + "us.tax.earned_income_credit_qualifying_children", + None, + ) + assert builder._restated_ledger_filter_concept("not_a_filter_key") == ("", None) + + +_COMPILED_LEDGER_FILTER_FIXTURE = ( + Path(__file__).resolve().parent + / "fixtures" + / "us_compiled_ledger_filter_specs.json" +) + + +def _compiled_ledger_filter_fixture() -> dict: + return json.loads(_COMPILED_LEDGER_FILTER_FIXTURE.read_text()) + + +def test_pinned_chronicle_feed_compiles_no_unsupported_ledger_filters() -> None: + """The pre-merge compile of the feed #955 pins carries no ignored filter key. + + The fixture is compiled target metadata from + ``compile_us_fiscal_target_registry`` over that feed — the sampled rows in + full, and a key census covering every one of its compiled targets. Both + guards must clear: no target refused, no ``irs_soi`` target dropped from + SOI materialization by the silent skip. The census arm generalises the + sample: any ``ledger_filter_*`` key the feed carries that is neither + supported nor a reviewed identity qualifier must be noop-valued on every + target that carries it, which is what makes "zero unsupported" a statement + about the whole registry and not only about the fifty rows kept here. + + The census was captured at ``369dedf1f``, before this branch merged + ``origin/main`` and so before + :func:`microcosm.build.ledger_targets._constraint_bound_filters` existed; + a compile at the current head stamps restated keys this census does not + list. That is deliberate — the rows keep pinning the compile the + supported/identity classification was reviewed against, and + :func:`test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters` + is the arm that meets the restated keys on the live feed. + """ + + builder = _load_builder_module() + payload = _compiled_ledger_filter_fixture() + specs = tuple(_spec(row["name"], dict(row["metadata"])) for row in payload["specs"]) + assert specs + + assert builder._unsupported_ledger_filter_metadata(specs) == {} + builder._assert_supported_ledger_filter_metadata(specs) + for spec in specs: + if spec.metadata.get("family") == "irs_soi": + assert builder._unsupported_soi_ledger_filters(spec.metadata) == () + + classified = ( + builder.SUPPORTED_LEDGER_FILTER_METADATA_KEYS + | builder.IDENTITY_LEDGER_FILTER_METADATA_KEYS + ) + for key, census in payload["ledger_filter_key_census"].items(): + if key in classified: + continue + for value in census["values"]: + assert builder._is_noop_ledger_filter_value(value), (key, value) + + +def test_restated_bounds_track_each_compiled_band_in_the_fixture() -> None: + """Replay the rule over real compiled bands, agreeing and perturbed. + + In the pre-merge compile the fixture pins, the feed states its AGI band + only as compiled metadata, so this injects the restatement a labelled + vocabulary would add onto real rows: each banded target's own lower edge + is accepted, and the same target with that edge moved is refused. Guards + the rule against a fixture that happens to contain no band — if the sample + ever loses its SOI rows, the assertion on ``banded`` fails rather than the + test passing vacuously. + """ + + builder = _load_builder_module() + payload = _compiled_ledger_filter_fixture() + banded = [ + row + for row in payload["specs"] + if row["metadata"].get("agi_lower_bound") is not None + ] + assert len(banded) >= 4 + + agreeing = [] + perturbed = [] + for row in banded: + metadata = dict(row["metadata"]) + compiled = metadata["agi_lower_bound"] + agreeing.append(_spec(row["name"], {**metadata, _RESTATED_AGI_LOWER: compiled})) + moved = "0" if compiled == "-inf" else str(builder._as_bound(compiled) + 1.0) + perturbed.append(_spec(row["name"], {**metadata, _RESTATED_AGI_LOWER: moved})) + + assert builder._unsupported_ledger_filter_metadata(tuple(agreeing)) == {} + refused = builder._unsupported_ledger_filter_metadata(tuple(perturbed)) + assert len(refused) == len({spec.name for spec in perturbed}) + assert all( + entry.startswith(_RESTATED_AGI_LOWER) + and "disagrees with agi_lower_bound" in entry + for entries in refused.values() + for entry in entries + ) + + +def test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters() -> None: + """The same assertion against the real feed, when this machine has it. + + The pinned consumer-facts feed is a 164 MB restricted-free public + aggregate export that no CI lane carries, so this runs only when + ``MICROCOSM_US_CHRONICLE_FACTS`` points at it. + ``experiments/us-labelled-filter-support/census_compiled_ledger_filters.py`` + surveys the same compile. + + This is the arm that meets real restated keys. Since the branch merged + ``origin/main``, + :func:`microcosm.build.ledger_targets._constraint_bound_filters` stamps the + feed's AGI and qualifying-child universe constraints as + ``ledger_filter_us:statutes/26/62#adjusted_gross_income_{lower,upper}_bound`` + and + ``ledger_filter_us.tax.earned_income_credit_qualifying_children_lower_bound``, + and 1,988 of the 31,066 state-surface specs carry one. Reverting either + call site of :func:`_restated_ledger_filter_refusal` fails this assertion + on exactly those 1,988. + """ + + feed = os.environ.get("MICROCOSM_US_CHRONICLE_FACTS", "") + if not feed or not Path(feed).exists(): + pytest.skip( + "set MICROCOSM_US_CHRONICLE_FACTS to the pinned consumer-facts feed" + ) + + builder = _load_builder_module() + acs_release = _load_acs_local_release_module() + registry, _substitutions = acs_release.state_admin_specs( + feed, ["snap", "medicaid", "soi"], soi_mode="full" + ) + specs = tuple(registry.specs) + + assert specs + assert builder._unsupported_ledger_filter_metadata(specs) == {} + assert not [ + spec + for spec in specs + if spec.family == "irs_soi" + and builder._unsupported_soi_ledger_filters(spec.metadata) + ] + + def test_eitc_child_count_mask_supports_soi_child_groups() -> None: builder = _load_builder_module() counts = np.asarray([0, 1, 2, 3, 4], dtype=np.float64) diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index f92f842c72..00ca5df770 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -655,6 +655,66 @@ def _automatic_gc_suspended(): } ) +#: Restated constraints, a third class distinct from both sets above: a +#: labelled feed re-expresses a fact's universe constraint in the Ledger's own +#: concept vocabulary (``us:statutes/26/62#adjusted_gross_income_lower_bound``) +#: alongside the compiled metadata the materializer actually slices on +#: (``agi_lower_bound``). These keys are NOT inert — they restrict the +#: microdata — so they can never join the supported set outright: a future +#: feed whose labelled bound disagreed with the compiled one would then be +#: silently ignored, materializing a wider population than the published cell +#: covers, which is the failure the guard exists to stop. Each key here is +#: accepted only per spec, and only when that spec also carries the filter the +#: materializer applies and the two select the same population; a restatement +#: that disagrees, or that has no compiled counterpart, stays fatal and the +#: refusal names the values. Values are the restated-constraint rule that +#: decides the comparison (see ``_restated_ledger_filter_refusal``). +RESTATED_LEDGER_FILTER_CONCEPTS = { + "us:statutes/26/62#adjusted_gross_income": "agi_band", + "us.tax.earned_income_credit_qualifying_children": "eitc_child_count", +} + +#: Bound-side suffixes a restated constraint key may carry. A key with no +#: suffix restates an exact value of the concept. +RESTATED_LEDGER_FILTER_BOUND_SIDES = ( + ("_lower_bound", "lower"), + ("_upper_bound", "upper"), +) + +#: Compiled metadata the materializer slices the AGI band on, by bound +#: side: the ``irs_soi`` loop in :func:`_materialize_target_frame` reads +#: both through :func:`_as_bound` into one half-open mask. A restated AGI +#: bound is accepted only against its own side; the sibling side is judged +#: by its own key. +RESTATED_AGI_BAND_COMPILED_KEYS = { + "lower": "agi_lower_bound", + "upper": "agi_upper_bound", +} + +#: Qualifying-child counts probed when deciding whether a restated EITC +#: child-count bound selects the same returns as the compiled filter. +#: :func:`_eitc_child_count_mask` resolves every compiled value to ``== 0``, +#: ``== 1``, ``== 2`` or ``>= 3``, and a compared restatement is ``>= n`` or +#: ``== n`` (an upper bound is refused before any comparison; see +#: :data:`RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES`); evaluating both over +#: 0..16 separates every such pair, so equal masks over the probe mean equal +#: populations. Counts above the probe are refused rather than compared. +RESTATED_EITC_CHILD_COUNT_PROBE_MAX = 16 + +#: Bound sides on which a restated EITC qualifying-child key is refused +#: outright, whatever its value and whatever the spec compiles. What an upper +#: bound selects turns on the Ledger's operator — ``< 1`` is the childless +#: returns, ``<= 1`` adds the one-child returns — and that operator is +#: unconfirmed for count constraints. The metadata key does not settle it: +#: :func:`microcosm.build.ledger_targets._constraint_bound_filters` stamps a +#: ``<`` row as ``_upper_bound`` (``<=`` becomes ``_upper_bound_inclusive``, +#: which no restated concept names, so it is refused by bare key), but the +#: dimension stamp in ``_ledger_metadata`` runs first and wins through +#: ``setdefault``, and can carry the same key with no operator at all. So no +#: reading is guessed until the Ledger confirms one (Max, 2026-09-22). Lower +#: and exact restatements stay under the agreement rule. +RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES = frozenset({"upper"}) + FISCAL_TARGET_SOURCE_KEYS = { "cbo": "Congressional Budget Office revenue projections", "cms_aca": "CMS ACA marketplace enrollment public use files", @@ -4343,6 +4403,17 @@ def _is_noop_ledger_filter_value(value: str) -> bool: def _unsupported_soi_ledger_filters(metadata: Mapping[str, str]) -> tuple[str, ...]: + """Ledger filter keys the SOI slice does not act on, for one spec. + + A non-empty result drops the spec from SOI materialization silently in + the ``irs_soi`` loop of :func:`_materialize_target_frame`, so an + accepted restatement must clear here too — otherwise + accepting it at the fatal guard would only move the spec from a refusal + to a silent disappearance. A restatement that disagrees stays listed, and + :func:`_assert_supported_ledger_filter_metadata` refuses it before the + materializer ever reaches this skip. + """ + return tuple( sorted( key @@ -4350,6 +4421,8 @@ def _unsupported_soi_ledger_filters(metadata: Mapping[str, str]) -> tuple[str, . if key.startswith("ledger_filter_") and key not in SUPPORTED_SOI_LEDGER_FILTERS and not _is_noop_ledger_filter_value(str(value)) + and _restated_ledger_filter_refusal(str(key), str(value), metadata) + is not None ) ) @@ -4419,6 +4492,157 @@ def _population_age_household_values( return values +def _restated_ledger_filter_concept(key: str) -> tuple[str, str | None]: + """Split a ``ledger_filter_*`` key into its concept and bound side. + + ``ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound`` + splits into ``("us:statutes/26/62#adjusted_gross_income", "lower")``; a + key with no bound suffix keeps the whole concept and side ``None``, + meaning it restates an exact value. + """ + + if not key.startswith("ledger_filter_"): + return "", None + concept = key[len("ledger_filter_") :] + for suffix, side in RESTATED_LEDGER_FILTER_BOUND_SIDES: + if concept.endswith(suffix) and len(concept) > len(suffix): + return concept[: -len(suffix)], side + return concept, None + + +def _restated_bound_value(value: str) -> float | None: + try: + return _as_bound(value.strip()) + except ValueError: + return None + + +def _restated_count_value(value: str) -> float | None: + try: + count = float(value.strip()) + except ValueError: + return None + if not count.is_integer() or not 0 <= count <= RESTATED_EITC_CHILD_COUNT_PROBE_MAX: + return None + return count + + +def _restated_agi_band_refusal( + key: str, + value: str, + metadata: Mapping[str, str], + *, + side: str | None, +) -> str | None: + if side is None: + return ( + f"{key}={value} restates an exact AGI, but the materializer " + "slices a half-open AGI band and applies no exact-value AGI filter" + ) + compiled_key = RESTATED_AGI_BAND_COMPILED_KEYS[side] + compiled = metadata.get(compiled_key) + if compiled is None: + return f"{key}={value} restates a bound the spec does not compile: no {compiled_key}" + restated = _restated_bound_value(value) + applied = _restated_bound_value(str(compiled)) + if restated is None or applied is None or restated != applied: + return f"{key}={value} disagrees with {compiled_key}={compiled}" + return None + + +def _restated_eitc_child_count_refusal( + key: str, + value: str, + metadata: Mapping[str, str], + *, + side: str | None, +) -> str | None: + if side in RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES: + return ( + f"{key}={value} restates a qualifying-child {side} bound, refused " + "outright: the Ledger's operator for it (< or <=) is unconfirmed, " + "and the two readings select different returns" + ) + compiled = _soi_eitc_child_count_filter(metadata) + if compiled is None: + return ( + f"{key}={value} restates a qualifying-child bound on a spec that " + "carries no child-count filter for the materializer to apply" + ) + bound = _restated_count_value(value) + if bound is None: + return ( + f"{key}={value} is not a qualifying-child count in " + f"0..{RESTATED_EITC_CHILD_COUNT_PROBE_MAX}" + ) + counts = np.arange(RESTATED_EITC_CHILD_COUNT_PROBE_MAX + 1, dtype=np.float64) + if side == "lower": + restated_mask = counts >= bound + elif side is None: + restated_mask = counts == bound + else: + raise ValueError( + f"{key}: bound side {side!r} reached the qualifying-child " + "comparison, which reads only lower and exact restatements" + ) + try: + applied_mask = _eitc_child_count_mask(counts, compiled) + except ValueError: + return ( + f"{key}={value} cannot be compared: compiled child-count filter " + f"{compiled!r} is not one the materializer understands" + ) + if not np.array_equal(restated_mask, applied_mask): + return ( + f"{key}={value} selects different returns than the compiled " + f"child-count filter {compiled!r}" + ) + return None + + +def _restated_ledger_filter_refusal( + key: str, + value: str, + metadata: Mapping[str, str], +) -> str | None: + """Judge one otherwise-unsupported ``ledger_filter_*`` key for one spec. + + Returns ``None`` only when *key* restates, in the labelled feed's concept + vocabulary, a constraint the materializer already applies to this spec, + and the two select the same population — ignoring that restatement then + changes nothing. Every other key returns the entry to refuse with: the + bare key for a filter the materializer does not model (unchanged from + before this rule existed), or the key with both values when a restatement + disagrees with its compiled counterpart, or has none, or — for a + qualifying-child upper bound, whose operator is unconfirmed (see + :data:`RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES`) — the key with that + reason, whatever the spec compiles. + + Both compiled counterparts — the AGI band in + :data:`RESTATED_AGI_BAND_COMPILED_KEYS` and + :func:`_soi_eitc_child_count_filter` — are the ``irs_soi`` slice's, read + in the loop :func:`_materialize_target_frame` runs over ``irs_soi`` + specs, and this rule reads them off metadata without consulting the + spec's family. That family-blindness is the guard's existing shape: + ``ledger_filter_eitc_child_count`` is likewise a blanket supported key. A + spec of another family carries neither counterpart, so it refuses on the + "does not compile" arm rather than being accepted by accident. + """ + + concept, side = _restated_ledger_filter_concept(key) + rule = RESTATED_LEDGER_FILTER_CONCEPTS.get(concept) if concept else None + if rule is None: + return key + if rule == "agi_band": + return _restated_agi_band_refusal(key, value, metadata, side=side) + if rule == "eitc_child_count": + return _restated_eitc_child_count_refusal(key, value, metadata, side=side) + raise ValueError( + f"RESTATED_LEDGER_FILTER_CONCEPTS maps {concept!r} to rule {rule!r}, " + "which has no comparison implemented." + ) + + def _unsupported_ledger_filter_metadata( target_specs: Iterable[object], ) -> dict[str, tuple[str, ...]]: @@ -4427,18 +4651,24 @@ def _unsupported_ledger_filter_metadata( metadata = getattr(spec, "metadata", None) if not isinstance(metadata, Mapping): continue - keys = tuple( - sorted( - str(key) - for key, value in metadata.items() - if str(key).startswith("ledger_filter") - and str(key) not in SUPPORTED_LEDGER_FILTER_METADATA_KEYS - and str(key) not in IDENTITY_LEDGER_FILTER_METADATA_KEYS - and not _is_noop_ledger_filter_value(str(value)) - ) - ) - if keys: - unsupported[str(getattr(spec, "name", ""))] = keys + refusals = [] + for key, value in metadata.items(): + key = str(key) + if not key.startswith("ledger_filter"): + continue + if key in SUPPORTED_LEDGER_FILTER_METADATA_KEYS: + continue + if key in IDENTITY_LEDGER_FILTER_METADATA_KEYS: + continue + if _is_noop_ledger_filter_value(str(value)): + continue + refusal = _restated_ledger_filter_refusal(key, str(value), metadata) + if refusal is not None: + refusals.append(refusal) + if refusals: + unsupported[str(getattr(spec, "name", ""))] = tuple( + sorted(refusals) + ) return unsupported