# CMS CCIIO Rate PUF: current read surface (one CMS ZIP revision per plan year)

`medicare_semantic.vw_rate_puf_current` · Insurer negotiated rates · status live · 36,535,872 rows

The read surface over medicare_silver.fact_rate_puf_history: for each business_year it keeps one CMS ZIP revision (cms_vintage_sequence DESC, then asserted_at DESC), with typed rates (individual, tobacco, family tiers), the raw record and Bronze lineage. Defined in pipelines/medicare/semantic/rate_puf_current.sql. Successor of medicare_silver.fact_rate_puf: PY2015 is complete (4,676,092 rows, 37 states, against the mirror's 1,048,575 rows in 6 states) and PY2017/PY2018 follow CMS, not the mirror.

**Grain.** One publisher record of the selected revision per business_year: plan x rating area x age x tobacco x rate-effective period. 36,535,872 rows PY2014-2026, one revision per year (Athena 5189dd09, 2026-10-13).

| column | type | meaning |
|---|---|---|
| business_year | int |  |
| source_row_number | bigint |  |
| state_code | string |  |
| issuer_id | string |  |
| source_name | string |  |
| import_date | string |  |
| rate_effective_date | string |  |
| rate_expiration_date | string |  |
| plan_id | string |  |
| rating_area_id | string |  |
| tobacco | string |  |
| age | string |  |
| individual_rate | double |  |
| individual_tobacco_rate | double |  |
| couple | double |  |
| primary_plus_one_dependent | double |  |
| primary_plus_two_dependents | double |  |
| primary_plus_three_or_more_dependents | double |  |
| couple_plus_one_dependent | double |  |
| couple_plus_two_dependents | double |  |
| couple_plus_three_or_more_dependents | double |  |
| numeric_parse_status_json | string |  |
| raw_row_sha256 | string |  |
| raw_values_json | string |  |
| artifact_id | string |  |
| archive_member | string |  |
| archive_member_sha256 | string |  |
| publisher_modified_at | string |  |
| publisher_etag | string |  |
| cms_vintage_sequence | int |  |
| asserted_at | date |  |
| source_url | string |  |
| bronze_object_key | string |  |

Tools that read it: get_exchange_plan_profile

Query it: `query_substrate` with `SELECT ... FROM medicare_semantic.vw_rate_puf_current WHERE ... LIMIT 100`; read `describe_data_source("medicare_semantic.vw_rate_puf_current")` first.
