From 4c70d240ff7d3f44769c5b429ccbaa3e0eb26696 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 00:10:51 -0400 Subject: [PATCH 01/12] WIP: name the restated Ledger filter concepts the materializer may accept Constants only; the rule, its call sites and tests follow. Co-Authored-By: Claude Fable 5.1 --- tools/build_us_fiscal_refresh_release.py | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index 7c60b52a7f..345a48a4c9 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -648,6 +648,32 @@ 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"), +) + FISCAL_TARGET_SOURCE_KEYS = { "cbo": "Congressional Budget Office revenue projections", "cms_aca": "CMS ACA marketplace enrollment public use files", From 08d2e14200abedf435b0e9e3ec07e2708fc89048 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 01:41:05 -0400 Subject: [PATCH 02/12] Accept a restated Ledger filter bound only where it agrees MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A labelled Chronicle feed restates a fact's universe constraint in the Ledger's concept vocabulary (ledger_filter_us:statutes/26/62#adjusted_gross_income_lower_bound) beside the compiled metadata the US fiscal materializer slices on (agi_lower_bound). Both keys restrict the microdata, so neither can join SUPPORTED_LEDGER_FILTER_METADATA_KEYS 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. _restated_ledger_filter_refusal accepts such a key per spec, and only when the spec also carries the constraint the materializer applies and the two select the same population — numeric equality against agi_lower_bound / agi_upper_bound including the compiler's -inf and inf ends, and mask equality against _soi_eitc_child_count_filter over the probed child counts. Anything else keeps the present refusal, extended to name the values that disagree. The same rule runs in _unsupported_soi_ledger_filters, which is consulted where a non-empty result skips the spec from SOI materialization with no error: accepting a restatement at the fatal guard while leaving it listed there would only move the spec from a refusal to a silent disappearance. Co-Authored-By: Claude Opus 5 --- .../tests/test_us_fiscal_refresh_builder.py | 298 ++++++++++++++++++ tools/build_us_fiscal_refresh_release.py | 200 +++++++++++- 2 files changed, 486 insertions(+), 12 deletions(-) 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 f0f302358f..3b48251e39 100644 --- a/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py @@ -2467,6 +2467,304 @@ 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; an upper bound is read half-open, the way the compiler reads a + ``<`` constraint into one exclusive edge, so "under one child" agrees with + ``0``; and a suffix-free key restates an exact count. + """ + + 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"}, + ), + ) + under_one = _spec( + "under_one", + _soi_band_metadata( + ledger_filter_eitc_child_count="0", + **{_RESTATED_EITC_CHILDREN_UPPER: "1"}, + ), + ) + 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, under_one, exactly_two) + ) + == {} + ) + assert builder._unsupported_soi_ledger_filters(three_plus.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_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) + + 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 345a48a4c9..9a2853c9de 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -674,6 +674,23 @@ def _automatic_gc_suspended(): ("_upper_bound", "upper"), ) +#: Compiled metadata the materializer slices the AGI band on, by bound side +#: (``:4899-4901``). 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 restatement is ``>= n``, ``< n`` or +#: ``== n``; 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 + FISCAL_TARGET_SOURCE_KEYS = { "cbo": "Congressional Budget Office revenue projections", "cms_aca": "CMS ACA marketplace enrollment public use files", @@ -4352,6 +4369,16 @@ 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 + (``:5030``), 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 @@ -4359,6 +4386,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 ) ) @@ -4428,6 +4457,147 @@ 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: + 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 == "upper": + # The compiler reads a ``<`` or ``<=`` constraint into one exclusive + # upper edge and the materializer applies ``<`` (``:4901-4902``); a + # restated upper bound is read the same half-open way. + restated_mask = counts < bound + else: + restated_mask = counts == bound + 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. + + 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 + (``:4892-4916``), 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, ...]]: @@ -4436,18 +4606,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 From dfe102c8b94832ce090683471c9fcee0f1cbd072 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 01:53:46 -0400 Subject: [PATCH 03/12] Pin the pinned feed's compiled filter keys against both guards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A fixture of compiled US fiscal target metadata — one target per (family, target_role), four IRS SOI rows carrying an AGI band or an EITC child-count filter, and a key census covering all 32,866 compiled targets — taken from compile_us_fiscal_target_registry over the Chronicle feed #955 pins. The regression asserts no target is refused, no irs_soi target falls into the SOI slice's silent skip, and that every ledger_filter_* key the feed carries outside the supported and identity sets is noop-valued on every target, so "zero unsupported" holds for the whole registry and not only the sample. A second test replays the restated-constraint rule over the real compiled bands, since the pinned feed states its AGI band only as compiled metadata: each banded target's own lower edge is accepted and the same edge moved is refused. A third arm compiles the state-level surface from the real feed when MICROCOSM_US_CHRONICLE_FACTS points at it, and skips otherwise — the 164 MB export is on no CI lane and the compile takes order ten minutes. experiments/us-labelled-filter-support/census_compiled_ledger_filters.py is the receipt that regenerates the fixture and measures both guards. Co-Authored-By: Claude Opus 5 --- .../us-labelled-restated-filters.added.md | 1 + .../census_compiled_ledger_filters.py | 180 + .../us_compiled_ledger_filter_specs.json | 3005 +++++++++++++++++ .../tests/test_us_fiscal_refresh_builder.py | 147 +- 4 files changed, 3328 insertions(+), 5 deletions(-) create mode 100644 changelog.d/us-labelled-restated-filters.added.md create mode 100644 experiments/us-labelled-filter-support/census_compiled_ledger_filters.py create mode 100644 packages/microcosm-build/tests/fixtures/us_compiled_ledger_filter_specs.json 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..104d8e4b1c --- /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 bound beside `ledger_filter_eitc_child_count` — but only on specs where the restatement and the applied filter select the same population. 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/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/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..f0af8fc0f9 --- /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.", + "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 3b48251e39..50013c8787 100644 --- a/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py @@ -2,6 +2,7 @@ import importlib.util import inspect import json +import os import sys from dataclasses import replace from pathlib import Path @@ -44,6 +45,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") @@ -2467,8 +2481,12 @@ 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_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" @@ -2582,9 +2600,7 @@ def test_disagreeing_restated_agi_bounds_are_refused_by_value() -> None: ), _spec( "no_compiled_lower", - _soi_band_metadata( - agi_lower_bound=None, **{_RESTATED_AGI_LOWER: "100000"} - ), + _soi_band_metadata(agi_lower_bound=None, **{_RESTATED_AGI_LOWER: "100000"}), ), _spec("exact_agi", _soi_band_metadata(**{_RESTATED_AGI_EXACT: "100000"})), _spec( @@ -2765,6 +2781,127 @@ def test_restated_concept_rules_all_have_a_comparison() -> 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 feed #955 pins carries no filter key the materializer would ignore. + + 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. + """ + + 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. + + The feed #955 pins 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, and compiling it takes order ten + minutes, so this runs only when ``MICROCOSM_US_CHRONICLE_FACTS`` points at + it. It is the arm that proves the fixture above still describes the feed; + ``experiments/us-labelled-filter-support/census_compiled_ledger_filters.py`` + regenerates the fixture from the same compile. + """ + + 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) From 697d4d5a5fc969aeaaad698a41c2d45c8d21846d Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 01:55:44 -0400 Subject: [PATCH 04/12] Name the SOI loop instead of its line numbers in the new docstrings Line references rot on the next edit to a 5,000-line tool; the constructs they pointed at are reachable by name. Co-Authored-By: Claude Opus 5 --- tools/build_us_fiscal_refresh_release.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index 9a2853c9de..9a5d25785d 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -674,9 +674,11 @@ def _automatic_gc_suspended(): ("_upper_bound", "upper"), ) -#: Compiled metadata the materializer slices the AGI band on, by bound side -#: (``:4899-4901``). A restated AGI bound is accepted only against its own -#: side; the sibling side is judged by its own key. +#: 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", @@ -4371,8 +4373,9 @@ 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 - (``:5030``), so an accepted restatement must clear here too — otherwise + 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 @@ -4539,7 +4542,7 @@ def _restated_eitc_child_count_refusal( restated_mask = counts >= bound elif side == "upper": # The compiler reads a ``<`` or ``<=`` constraint into one exclusive - # upper edge and the materializer applies ``<`` (``:4901-4902``); a + # upper edge (``_agi_bounds``) and the materializer applies ``<``; a # restated upper bound is read the same half-open way. restated_mask = counts < bound else: @@ -4576,9 +4579,10 @@ def _restated_ledger_filter_refusal( 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 - (``:4892-4916``), and this rule reads them off metadata without consulting - the spec's family. That family-blindness is the guard's existing shape: + :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. From 5b1326cad3cd8b4e6cd14a05cbda6b634c3f1350 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 02:08:02 -0400 Subject: [PATCH 05/12] Record the lane report and what the pinned feed actually compiles The refusal this lane was written against does not reproduce at this head: the feed #955 pins carries its AGI band and child count as universe constraint rows and plain dimensions, and the tree's single ledger_filter_* producer stamps dimensions only, so no compiled target carries a concept-vocabulary key. All three measured surfaces refuse nothing. The report states the derivation, the counts by family and target_role, the dense float32 matrix sizes beside the historical ACS local release, and the open questions. Co-Authored-By: Claude Opus 5 --- .../us-labelled-filter-support/REPORT.md | 241 ++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 experiments/us-labelled-filter-support/REPORT.md diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md new file mode 100644 index 0000000000..7b5db68e51 --- /dev/null +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -0,0 +1,241 @@ +# 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. + +## 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. +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`; upper `1` with `0`; exact `2` with `2` | — | +| `test_disagreeing_restated_eitc_child_bounds_are_refused_by_value` | — | `3` with `2`; `3` with no child-count filter; `three` (not a count) | +| `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. + +## 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. From 369dedf1f2a92e3b92efb7c55a17666d86b8c14d Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 02:11:45 -0400 Subject: [PATCH 06/12] Record the local verification summaries and the stacked-PR CI gap Both workflows trigger only on pull requests whose base is main, so the stacked PR gets no checks until #955 merges and it retargets. The report carries the local pytest, ci_test_groups --verify and ruff exit codes in their place. Co-Authored-By: Claude Opus 5 --- .../us-labelled-filter-support/REPORT.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md index 7b5db68e51..52120c141c 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -131,6 +131,45 @@ Feed-level, engine-free: 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. + +**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, From 0f180ad826914b92c69a3e36adc0b6c2a42483ce Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 03:11:21 -0400 Subject: [PATCH 07/12] Record that the restated-filter premise reproduces after the re-level Sections 1-6 of the lane report were measured before this branch merged origin/main, which is where _constraint_bound_filters lives: it stamps a fact's numeric universe constraints as ledger_filter__bound keys, and those are the restated keys the rule here accepts. Section 5 said the premise did not reproduce; on the re-levelled head it does, so section 7 records the mechanism, the three counts (1,988 refused without the rule, 0 with it, 1,988 with both call sites reverted) and the 939 age-band refusals that are main's and survive this branch. The committed fixture predates that merge, so its key census lists none of the restated keys. It stays as the pre-merge pin it is; its description and the two tests reading it now say so, and the live-feed arm's docstring records that it now meets 1,988 real restated keys. Co-Authored-By: Claude Opus 5 --- .../us-labelled-filter-support/REPORT.md | 106 ++++++++++++++++++ .../us_compiled_ledger_filter_specs.json | 2 +- .../tests/test_us_fiscal_refresh_builder.py | 42 +++++-- 3 files changed, 138 insertions(+), 12 deletions(-) diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md index 52120c141c..e1ddd7a4fd 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -278,3 +278,109 @@ same pattern in the legacy vocabulary. 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. + +## 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. 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 index f0af8fc0f9..bd588b9b09 100644 --- a/packages/microcosm-build/tests/fixtures/us_compiled_ledger_filter_specs.json +++ b/packages/microcosm-build/tests/fixtures/us_compiled_ledger_filter_specs.json @@ -1,5 +1,5 @@ { - "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.", + "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": { 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 50013c8787..2a39efe10d 100644 --- a/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py @@ -2793,7 +2793,7 @@ def _compiled_ledger_filter_fixture() -> dict: def test_pinned_chronicle_feed_compiles_no_unsupported_ledger_filters() -> None: - """The feed #955 pins carries no filter key the materializer would ignore. + """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 @@ -2804,6 +2804,15 @@ def test_pinned_chronicle_feed_compiles_no_unsupported_ledger_filters() -> None: 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() @@ -2831,12 +2840,13 @@ def test_pinned_chronicle_feed_compiles_no_unsupported_ledger_filters() -> None: def test_restated_bounds_track_each_compiled_band_in_the_fixture() -> None: """Replay the rule over real compiled bands, agreeing and perturbed. - The feed #955 pins 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. + 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() @@ -2872,11 +2882,21 @@ def test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters() - """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, and compiling it takes order ten - minutes, so this runs only when ``MICROCOSM_US_CHRONICLE_FACTS`` points at - it. It is the arm that proves the fixture above still describes the feed; + 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`` - regenerates the fixture from the same compile. + 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", "") From fb1a096466e2a34c1a4866133ef6c4665ffb9480 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 14:20:36 -0400 Subject: [PATCH 08/12] Record that the restated-filter counts reproduce on main after #955 merged Re-measured at the main-based merge b10e117a0 (main 6710d0f5f): state surface full 31,066 specs, 0 refused with the rule and 1,988 with it reverted (2,702 entries); whole registry 939 versus 3,208. The b571381 export gives the same counts as the pinned c5e5bf8 feed. Every number equals section 7; the stacked-PR and no-CI lines are historicized in place. Co-Authored-By: Claude Opus 5.5 --- .../us-labelled-filter-support/REPORT.md | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md index e1ddd7a4fd..e1cd2c96df 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -2,6 +2,8 @@ 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 @@ -162,6 +164,8 @@ 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` @@ -384,3 +388,56 @@ supported/identity classification was reviewed against, and the fixture 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 now differs in six files: 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 at `b10e117a0` + +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. + +Both US exports on this machine gave identical counts: the pinned +`consumer_facts_us_c5e5bf8.jsonl` (facts 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. + +`test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters` +ran against the pinned feed rather than skipping, and the module passed: +245 tests, exit 0. From 6e51efd3e8c29fa029efcc46a423caa366405b00 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 16:30:08 -0400 Subject: [PATCH 09/12] Back the re-levelled restated-filter counts with a committed receipt Add measure_restated_filter_arms.py, which compiles the US fiscal registry through the production path for each Chronicle feed and counts _unsupported_ledger_filter_metadata refusals and _unsupported_soi_ledger_filters skips on the whole registry and the ACS local state surface (full and totals), with the restated-filter rule and with it reverted to the bare key (main's behaviour). Its output over both US exports is committed as restated_filter_arms_receipt.json (aggregate target-spec counts only, no microdata). REPORT.md section 8 now cites the receipt, and labels which earlier-section numbers it regenerates and which are records of uncommitted runs. Co-Authored-By: Claude Opus 5.5 --- .../us-labelled-filter-support/REPORT.md | 48 ++++- .../measure_restated_filter_arms.py | 181 ++++++++++++++++++ .../restated_filter_arms_receipt.json | 181 ++++++++++++++++++ 3 files changed, 405 insertions(+), 5 deletions(-) create mode 100644 experiments/us-labelled-filter-support/measure_restated_filter_arms.py create mode 100644 experiments/us-labelled-filter-support/restated_filter_arms_receipt.json diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md index e1cd2c96df..355f558525 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -402,20 +402,39 @@ script, the fixture, the changelog fragment, the test module, and 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 at `b10e117a0` +### The counts on this tree -Same functions as section 7: +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, 113 s wall, 3.0 GB peak RSS for both +feeds). 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. +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` (facts sha256 `b8543739…`, equal to the -`facts_sha256` in `packages/microcosm-build/src/microcosm/build/us/chronicle_feed.json`) +`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 | @@ -438,6 +457,25 @@ 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 + `test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters` ran against the pinned feed rather than skipping, and the module passed: 245 tests, exit 0. 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 + } + ] + } + ] +} From 4c2aeaf574d24b6ccc17e19087c2db2c99249565 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 17:05:42 -0400 Subject: [PATCH 10/12] Record the post-merge test run in the restated-filter report Section 8 now lists the checks run at b6e0b04cd (origin/main 2b85b7b22 merged in): the builder module against the pinned feed, the 29 other modules importing the release tool or ledger_targets, ci_test_groups --verify and ruff. The 15 failures and errors in that run were all disk exhaustion (ENOSPC) in test_us_multispine_pool_tool.py, and the affected tests pass on re-run; the report says so rather than folding them into a pass count. Co-Authored-By: Claude Opus 5.5 --- .../us-labelled-filter-support/REPORT.md | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md index 355f558525..c889aa5d49 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -396,7 +396,9 @@ 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 now differs in six files: this report, the census +`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 @@ -476,6 +478,29 @@ historical rows cite `_buildp-runtime/logs/acs-local/release_chain.log`. ### Tests -`test_pinned_chronicle_feed_state_surface_compiles_no_unsupported_filters` -ran against the pinned feed rather than skipping, and the module passed: -245 tests, exit 0. +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 +``` From 235dc701ceb27e93888f427b9e58b03d6bd9987e Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 18:28:25 -0400 Subject: [PATCH 11/12] Label the unrecorded total wall time in the restated-filter report Co-Authored-By: Claude Opus 5.5 --- experiments/us-labelled-filter-support/REPORT.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/experiments/us-labelled-filter-support/REPORT.md b/experiments/us-labelled-filter-support/REPORT.md index c889aa5d49..341d8dfbbe 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -412,8 +412,10 @@ 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, 113 s wall, 3.0 GB peak RSS for both -feeds). Regenerate with: +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 \ From 01dc806f48bc88d7788c82acf31704850c08fa12 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 22 Sep 2026 18:54:25 -0400 Subject: [PATCH 12/12] Refuse restated EITC qualifying-child upper bounds until the Ledger confirms its operator Max's rulings on #969 (2026-09-22). A restated us.tax.earned_income_credit_qualifying_children upper bound is no longer read as exclusive and compared: _restated_eitc_child_count_refusal refuses it outright, naming the unconfirmed operator (< or <=), whatever the spec compiles. Lower and exact restatements keep the agreement rule, and the comparison raises if any other bound side reaches it, so emptying RESTATED_EITC_CHILD_COUNT_REFUSED_SIDES cannot fall back to an exact-count comparison. Tests: the upper case leaves the acceptance test; new tests prove the refusal (both the < and <= readings, no child-count filter, the fatal guard, the SOI skip), the no-guess fallback, and that agi_{lower,upper}_usd stay refused by bare key (Q2: not added as concepts). REPORT.md section 6 gains a dated rulings block: merge (premise evidenced on main), do not add agi_*_usd, totals becomes the ACS local default in a separate PR, refuse EITC upper bounds here, and the 939 age-band refusals get their own PR. The committed receipt's reverted arm lists no qualifying-child upper-bound key on any surface of either feed, so its counts stand; the measurement was not re-run. Co-Authored-By: Claude Opus 5.5 --- .../us-labelled-restated-filters.added.md | 2 +- .../us-labelled-filter-support/REPORT.md | 92 +++++++++++- .../tests/test_us_fiscal_refresh_builder.py | 141 ++++++++++++++++-- tools/build_us_fiscal_refresh_release.py | 46 ++++-- 4 files changed, 253 insertions(+), 28 deletions(-) diff --git a/changelog.d/us-labelled-restated-filters.added.md b/changelog.d/us-labelled-restated-filters.added.md index 104d8e4b1c..4c422bae36 100644 --- a/changelog.d/us-labelled-restated-filters.added.md +++ b/changelog.d/us-labelled-restated-filters.added.md @@ -1 +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 bound beside `ledger_filter_eitc_child_count` — but only on specs where the restatement and the applied filter select the same population. 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. +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 index 341d8dfbbe..4ff82371d4 100644 --- a/experiments/us-labelled-filter-support/REPORT.md +++ b/experiments/us-labelled-filter-support/REPORT.md @@ -86,6 +86,11 @@ restates a constraint the materializer already applies to that spec. 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 @@ -112,8 +117,11 @@ Unit, on invented specs (`packages/microcosm-build/tests/test_us_fiscal_refresh_ |---|---|---| | `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`; upper `1` with `0`; exact `2` with `2` | — | +| `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 | @@ -283,6 +291,88 @@ same pattern in the legacy vocabulary. 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 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 a6494611cc..98dcbf91b9 100644 --- a/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py +++ b/packages/microcosm-build/tests/test_us_fiscal_refresh_builder.py @@ -2642,9 +2642,9 @@ def test_restated_eitc_child_bounds_pass_the_guard_only_where_they_agree() -> No ``_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; an upper bound is read half-open, the way the compiler reads a - ``<`` constraint into one exclusive edge, so "under one child" agrees with - ``0``; and a suffix-free key restates an exact count. + 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() @@ -2655,13 +2655,6 @@ def test_restated_eitc_child_bounds_pass_the_guard_only_where_they_agree() -> No **{_RESTATED_EITC_CHILDREN_LOWER: "3"}, ), ) - under_one = _spec( - "under_one", - _soi_band_metadata( - ledger_filter_eitc_child_count="0", - **{_RESTATED_EITC_CHILDREN_UPPER: "1"}, - ), - ) exactly_two = _spec( "exactly_two", _soi_band_metadata( @@ -2670,13 +2663,97 @@ def test_restated_eitc_child_bounds_pass_the_guard_only_where_they_agree() -> No ), ) - assert ( + 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( - (three_plus, under_one, exactly_two) + (_spec("unguarded_upper", metadata),) ) - == {} - ) - assert builder._unsupported_soi_ledger_filters(three_plus.metadata) == () def test_disagreeing_restated_eitc_child_bounds_are_refused_by_value() -> None: @@ -2727,6 +2804,40 @@ def test_disagreeing_restated_eitc_child_bounds_are_refused_by_value() -> None: } +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. diff --git a/tools/build_us_fiscal_refresh_release.py b/tools/build_us_fiscal_refresh_release.py index 904e5f472a..00ca5df770 100644 --- a/tools/build_us_fiscal_refresh_release.py +++ b/tools/build_us_fiscal_refresh_release.py @@ -694,12 +694,27 @@ def _automatic_gc_suspended(): #: 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 restatement is ``>= n``, ``< n`` or -#: ``== n``; 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. +#: ``== 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", @@ -4542,6 +4557,12 @@ def _restated_eitc_child_count_refusal( *, 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 ( @@ -4557,13 +4578,13 @@ def _restated_eitc_child_count_refusal( counts = np.arange(RESTATED_EITC_CHILD_COUNT_PROBE_MAX + 1, dtype=np.float64) if side == "lower": restated_mask = counts >= bound - elif side == "upper": - # The compiler reads a ``<`` or ``<=`` constraint into one exclusive - # upper edge (``_agi_bounds``) and the materializer applies ``<``; a - # restated upper bound is read the same half-open way. - restated_mask = counts < bound - else: + 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: @@ -4592,7 +4613,10 @@ def _restated_ledger_filter_refusal( 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. + 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