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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/sehi-farm-partnership-attribution.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The US self-employed health premium attribution (the `other_health_insurance_premiums` stage) now covers people whose only profitable business is a Schedule F farm (`farm_operations_income`) or a partnership's Schedule K-1 box 14 code A earnings (`partnership_self_employment_net_earnings`), not only Schedule C. Each business qualifies on its own, so a loss in one never cancels another's profit; the Medicare-proxy and measured-ESI exclusions are unchanged. This matches the per-business Form 7206 limit in PolicyEngine/policyengine-us#10120.
48 changes: 24 additions & 24 deletions docs/evidence/spec-engine/us-f0-coverage.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"version": 1
},
"country": "us",
"documentation_sha256": "0931cbd3aae2abcd8c072b78eba40c1c006b1bf7fa23c6a6681f9a895e47070e",
"documentation_sha256": "38828bde202269e0d60fe159e7ddee6d73cdc272eb208a19ad07576952abd39b",
"field_usage": {
"authored_normative_field_count": 32404,
"authored_normative_field_count": 32406,
"claim_count": 49,
"claims": [
{
Expand Down Expand Up @@ -514,8 +514,8 @@
],
"mode": "legacy_behavior",
"pointer_class": "all",
"pointer_count": 1716,
"pointer_sha256": "3e808ed9f5a791c0dfb85be0c59adf803366bf6e8c7a9f5a58f92974e044b607",
"pointer_count": 1718,
"pointer_sha256": "ce9297355f6d931d55ceee220d9a8bd84f73c571c7254af95f83865a05183867",
"rationale": null,
"relative_sink_prefix": "/source_manifest/stages",
"source_prefix": "/authored/spec~1sources.yaml/stages",
Expand Down Expand Up @@ -772,20 +772,20 @@
"verifier": "vintages"
}
],
"configuration_field_count": 42184,
"consumed_field_count": 42184,
"configuration_field_count": 42186,
"consumed_field_count": 42186,
"generation0_effect_counts": {
"legacy_behavior": 38498,
"legacy_behavior": 38500,
"no_generation0_effect": 3686
},
"mode_counts": {
"compiler_semantic": 27717,
"front_end_validation": 354,
"identity_only": 103,
"legacy_behavior": 14010
"legacy_behavior": 14012
},
"multiple_primary_use_field_count": 0,
"pointer_inventory_sha256": "8f655670b9794adae905ede64bdceba6395eeb8d642b6c5896d5c516f1f6a6a7",
"pointer_inventory_sha256": "11e11693ab6b89b1008c3fb69d933b3dbebcb61d49eeba0d62f9edb776ba01cb",
"resolved_binding_field_count": 9780,
"unused_field_count": 0
},
Expand Down Expand Up @@ -1361,12 +1361,12 @@
],
"expected": {
"producer_count": 38,
"sha256": "cc34ba11288d01145fc2dc1a669df3f7c4ef2019d73afb02dd8eeee852b16d20"
"sha256": "d5be3aafad998f0a3445cc08a6f8555d373ed983353d628634e4b2ab85edfc61"
},
"failures": [],
"observed": {
"producer_count": 38,
"sha256": "cc34ba11288d01145fc2dc1a669df3f7c4ef2019d73afb02dd8eeee852b16d20"
"sha256": "d5be3aafad998f0a3445cc08a6f8555d373ed983353d628634e4b2ab85edfc61"
},
"status": "covered"
},
Expand Down Expand Up @@ -1656,13 +1656,13 @@
"compiler_ir.node_slices"
],
"expected": {
"map_sha256": "b4d6ec9c11ce323d83319a3d0289e0cf7216a7936d6c6f08cef0a463ad369641",
"protocol_sha256": "114217a2918329b0601d94deb8ed83f73919584b85ca8aabe45a40665afb6560"
"map_sha256": "fd964b17be1461f4a5bb14954a8933d1ecfc121330ea222e2401e6bffc98b6b0",
"protocol_sha256": "bd26d3022e82f86714e735f69effc7a92dcc35c011fb71ab50c7f4d43b9b20fd"
},
"failures": [],
"observed": {
"map_sha256": "b4d6ec9c11ce323d83319a3d0289e0cf7216a7936d6c6f08cef0a463ad369641",
"protocol_sha256": "114217a2918329b0601d94deb8ed83f73919584b85ca8aabe45a40665afb6560"
"map_sha256": "fd964b17be1461f4a5bb14954a8933d1ecfc121330ea222e2401e6bffc98b6b0",
"protocol_sha256": "bd26d3022e82f86714e735f69effc7a92dcc35c011fb71ab50c7f4d43b9b20fd"
},
"status": "covered"
},
Expand All @@ -1677,7 +1677,7 @@
"compiler_ir.seed_stream_map"
],
"expected": {
"implementation_sha256": "114217a2918329b0601d94deb8ed83f73919584b85ca8aabe45a40665afb6560",
"implementation_sha256": "bd26d3022e82f86714e735f69effc7a92dcc35c011fb71ab50c7f4d43b9b20fd",
"protocol": "legacy-v1",
"streams": [
"build_model",
Expand All @@ -1698,7 +1698,7 @@
},
"failures": [],
"observed": {
"implementation_sha256": "114217a2918329b0601d94deb8ed83f73919584b85ca8aabe45a40665afb6560",
"implementation_sha256": "bd26d3022e82f86714e735f69effc7a92dcc35c011fb71ab50c7f4d43b9b20fd",
"protocol": "legacy-v1",
"streams": [
"build_model",
Expand Down Expand Up @@ -1775,12 +1775,12 @@
"legacy_adapter.imputation.late_producer_resource_semantics"
],
"expected": {
"sha256": "f4f8bfeb79268a4043a843b47cec1d1c0e58e9f5dd6bc23417ada95446dd7b8e",
"sha256": "1db3c553867432ceeed99c0bc805bb05d56c28a14fbbb537407403660c4e22e0",
"stages": 37
},
"failures": [],
"observed": {
"sha256": "f4f8bfeb79268a4043a843b47cec1d1c0e58e9f5dd6bc23417ada95446dd7b8e",
"sha256": "1db3c553867432ceeed99c0bc805bb05d56c28a14fbbb537407403660c4e22e0",
"stages": 38
},
"status": "covered"
Expand Down Expand Up @@ -1887,7 +1887,7 @@
"alpha",
"zeta"
],
"sha256": "3db095ce2d1ef89028d3862f0edc827d704f099c5b3323f9b115642a3c27e007"
"sha256": "1980cde7a84ed8d1ff9277e2d95932e3b3b3fca3ae2812aebc00d8ba8c6e517e"
},
"failures": [],
"observed": {
Expand All @@ -1911,7 +1911,7 @@
"alpha",
"zeta"
],
"sha256": "3db095ce2d1ef89028d3862f0edc827d704f099c5b3323f9b115642a3c27e007"
"sha256": "1980cde7a84ed8d1ff9277e2d95932e3b3b3fca3ae2812aebc00d8ba8c6e517e"
},
"status": "covered"
},
Expand Down Expand Up @@ -1975,7 +1975,7 @@
"take_up_contract",
"us_qbi_reconciliation_contract"
],
"sha256": "61a5484eab9fae1d6651b3ae15f1793d4934ea2f6ed2c08d05716b745c221014"
"sha256": "5460d64d5204c4be0fefa7e049fb5adc6f99d72c308b50098deb5efe9708cbeb"
},
"status": "covered"
},
Expand Down Expand Up @@ -2599,7 +2599,7 @@
"country": "us",
"schema_id": "country_spec",
"schema_version": 1,
"spec_sha256": "f76f921d4f74392b106b8c0729ce250494e0a55455eaba7b910b19cdf7825178"
"spec_sha256": "9550605da8976e20d07a8c453b091d825a36020fe34b34a65f8724043d0b5f1c"
}
},
"report_schema_version": 3,
Expand All @@ -2609,7 +2609,7 @@
"country": "us",
"schema_id": "country_spec",
"schema_version": 1,
"spec_sha256": "f76f921d4f74392b106b8c0729ce250494e0a55455eaba7b910b19cdf7825178"
"spec_sha256": "9550605da8976e20d07a8c453b091d825a36020fe34b34a65f8724043d0b5f1c"
},
"status": "pass"
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
)
from .schemas import load_schema_registry

EXPECTED_AUTHORED_FIELD_COUNT = 32_404
EXPECTED_AUTHORED_FIELD_COUNT = 32_406
EXPECTED_RESOLVED_BINDING_FIELD_COUNT = 9_780
EXPECTED_CONFIGURATION_FIELD_COUNT = 42_184
EXPECTED_CONFIGURATION_FIELD_COUNT = 42_186


class FieldUsageError(AssertionError):
Expand Down Expand Up @@ -485,8 +485,8 @@ def _path_inventory(rows: Sequence[tuple[str, object]]) -> tuple[int, str]:
"d6782c5de5bbed1bdc6bf653c4a6d4aadcad4ccc72d35e1092e130fcb04680a3",
),
"source_stages": (
1_716,
"3e808ed9f5a791c0dfb85be0c59adf803366bf6e8c7a9f5a58f92974e044b607",
1_718,
"ce9297355f6d931d55ceee220d9a8bd84f73c571c7254af95f83865a05183867",
),
"spine_assembly_household_mass_shares": (
2,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,18 +350,18 @@
"acs_person_predictors": "878c788a6f037d7aca12b3586ea034eff04f3034ffa11935a736493042551f25",
"authority": "9d4a9672a0f03039b1fe874b9fe21ed575be0d29f14afc396d03cdf5c809bdd2",
"early_families": "4aa9f736fd76e83955477ad1667e58f48f264783f05bdc7f0102cd32d61323bd",
"full_checkpoint": "3db095ce2d1ef89028d3862f0edc827d704f099c5b3323f9b115642a3c27e007",
"full_checkpoint": "1980cde7a84ed8d1ff9277e2d95932e3b3b3fca3ae2812aebc00d8ba8c6e517e",
"gap_fill_schedule": "1c31f9868f7884347cc19cf1ff65da43f950b9114941a715bab168246db414a7",
"graph_nodes": "40cd51ffdfe2e9d9d08d48c08e8ded9de1e4b134783bab05c4abc6ad5c72ca1e",
"geography_assignment": "44e7f5f6cd7ceeef85d532c3d46306d03de4f4ee811376e6d29920742746b65c",
"late_families": "d91f9ff0eb52f43e7b6eed3d5c58c37abe1620c3a11021da15dae9c10e16d382",
"late_resource_semantics": "cc34ba11288d01145fc2dc1a669df3f7c4ef2019d73afb02dd8eeee852b16d20",
"late_resource_semantics": "d5be3aafad998f0a3445cc08a6f8555d373ed983353d628634e4b2ab85edfc61",
"late_schedule": "e59c019d3d454eac99ac0ac209b6c5b6faaf9bdfcaeee18c36a25be19bf7da2f",
"ownership": "5f64f0aac49e2313177564f71876bffc8c81b3ded4df701e70930e60e9c98356",
"primary_tuples": "fdf23da429f8c501e198a2f5b719763d523a41565c2153fdf17b0344f21bcd7c",
"seed_map": "b4d6ec9c11ce323d83319a3d0289e0cf7216a7936d6c6f08cef0a463ad369641",
"seed_protocol": "114217a2918329b0601d94deb8ed83f73919584b85ca8aabe45a40665afb6560",
"source_manifest": "f4f8bfeb79268a4043a843b47cec1d1c0e58e9f5dd6bc23417ada95446dd7b8e",
"seed_map": "fd964b17be1461f4a5bb14954a8933d1ecfc121330ea222e2401e6bffc98b6b0",
"seed_protocol": "bd26d3022e82f86714e735f69effc7a92dcc35c011fb71ab50c7f4d43b9b20fd",
"source_manifest": "1db3c553867432ceeed99c0bc805bb05d56c28a14fbbb537407403660c4e22e0",
"take_up": "9522ce40f7dea569312dd7a7beb474e5a5afadd2f1e10cb5876534c3ef623d35",
"tail": "ac92829c88a1a4fb6460d61190918d5d99c6c377fc8dd8f62f02b332d09bf59c",
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -765,14 +765,21 @@
"output_self_employed_flag": {
"type": "string"
},
"plan_business_income_sources": {
"type": "object",
"minProperties": 1,
"additionalProperties": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
}
},
"reported_source": {
"type": "string"
},
"self_employment_income_sources": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
Expand All @@ -783,8 +790,8 @@
"medicare_ssdi_source",
"output_premiums",
"output_self_employed_flag",
"reported_source",
"self_employment_income_sources"
"plan_business_income_sources",
"reported_source"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
"status": "required"
},
"health_insurance_premiums": {
"note": "Self-employed premium attribution leaf (PolicyEngine/microcosm#451 item 2): the deterministic attribution operation of the other_health_insurance_premiums release stage copies the reported non-Part-B premium onto this person input for strictly-positive Schedule C people outside the Medicare proxy, which is the only channel populating the section 162(l) self-employed health ALD (SOI Pub 1304 Table 1.4 TY2023: 3,595,764 returns / $31.23B, ledger#105). Absent on pre-attribution artifacts by construction; any new release produces it.",
"note": "Self-employed premium attribution leaf (PolicyEngine/microcosm#451 item 2): the deterministic attribution operation of the other_health_insurance_premiums release stage copies the reported non-Part-B premium onto this person input for people with a strictly positive Schedule C, Schedule F or partnership (Schedule K-1 box 14 code A) business who are outside the Medicare proxy and measured employer coverage, which is the only channel populating the section 162(l) self-employed health ALD (SOI Pub 1304 Table 1.4 TY2023: 3,595,764 returns / $31.23B, ledger#105). Absent on pre-attribution artifacts by construction; any new release produces it.",
"status": "required"
},
"health_insurance_premiums_without_medicare_part_b": {
Expand Down Expand Up @@ -237,7 +237,7 @@
"status": "required"
},
"is_self_employed": {
"note": "Gate flag for the self-employed premium attribution (PolicyEngine/microcosm#451 item 2): opens the defined_for gate on the engine's self_employed_health_insurance_premiums adds-aggregation for every strictly-positive Schedule C person. Written by the same attribution operation as health_insurance_premiums.",
"note": "Gate flag for the self-employed premium attribution (PolicyEngine/microcosm#451 item 2): opens the defined_for gate on the engine's self_employed_health_insurance_premiums adds-aggregation for every person whose Schedule C, Schedule F or partnership net earnings are strictly positive, each business on its own. Written by the same attribution operation as health_insurance_premiums.",
"status": "required"
},
"is_separated": {
Expand Down
Loading
Loading