1# WP35 data dictionary (processed files)23Built by `python -m wp35.harmonization.build_panels` (2026-11-01). Raw provenance and SHA-256: `source_registry.json`.4Counts below are copied from `results/diagnostics/coverage_summary.json` and the coverage CSVs produced by the same5run; they are not typed by hand elsewhere. Missing values are `NaN` everywhere; no zero stands for "unknown".67## A. Seshat Polaris-2026 (historical polities)89### `seshat_facts.parquet` — one row per fact (56,274 rows; 2,503 dated; 132 unparsed values logged)10| column | meaning |11|---|---|12| sheet, section | Polaris sheet (Social complexity / Warfare / Religion / General) and section code (sc, wf, rt, general) |13| seshat_region, polity_number, polity_id | Seshat identifiers (42 regions, 626 polities) |14| variable | original Polaris `variable_name` |15| value | presence code mapped P/IP→1, A/IA→0, disputed (A~P)→0.5, SU/U/unknown→NaN; numeric variables → midpoint (geometric for population/territory/largest settlement; arithmetic for levels) |16| value_lo, value_hi | numeric bounds from `value_from`/`value_to` (ranges kept) |17| text | raw text for General-sheet categorical facts |18| year_from, year_to, dated | fact date interval; `dated=False` ⇒ fact describes the whole polity period (24,401 of 26,033 SC facts) |19| inferred, disputed, unparsed | IP/IA flag; A~P-type flag; value not in the code vocabulary (logged to `results/diagnostics/seshat_unparsed_values.csv`) |20| is_uncertain, is_disputed | Polaris flags |2122### `seshat_polity_agg.parquet` — polity × variable aggregates (all facts)23`value_mean` (mean of coded values across facts), `value_min/max`, `logv_mean` (mean log midpoint for geometric24variables), `lo_min`, `hi_max`, `n_facts`, `n_dated`, `n_undated`, `n_inferred`, `n_disputed`, `n_flag_uncertain`.25`seshat_polity_wide.parquet` = pivot of `value_mean`. `seshat_precrisis_agg.parquet` = same aggregates computed per26CrisisDB record using only facts with `year_to < crisis_start` or undated facts (`crisis_id` column).2728### `seshat_polity_meta.parquet` — one row per polity (626)29`long_name, seshat_region, homeNGA, start_year, end_year, macro_region` (10, `configs/regions.yaml`), `midpoint`,30`era` (6 blocks), `duration`, `censored` (end_year ≥ 1900: 30 polities), `centralization`31(`polity_degree_of_centralization`), `relationship_to_preceding`, `preceding_entity`, `succeeding_entity`,32`suprapolity_relations`, `utm_zone`, `language_family`, `successor_id` (matched for 285 polities),33`successor_relationship`, `y3_discontinuous` (coded for 207 polities; 37 = 1).3435### `seshat_crisis.parquet` — CrisisDB "Crisis consequences" (166 records, 150 polities)36`crisis_id, polity_id, other_polity_id, crisis_start, crisis_end` (= `year_from`, `year_to`), item values `<item>_v`37(same code mapping), `y1_n_coded`, `y1_n_present`, `y1_severity` (= present / coded over the 14 instability items38listed in the pre-registration; coded for all 166), `y1b_severe` (any of collapse, fragmentation, century_plus,39conquest, civil_war present; defined when all five coded: 158 records, 122 positive), `y_reform`, `epidemic_v`.40Codes in Polaris: P, A, IP, IA, SU, DIS (treated as missing).4142Coverage of the pre-registered indicators (share of the 626 polities missing): `results/diagnostics/seshat_missingness_by_indicator.csv`;43e.g. written_record 12%, settlement_hierarchy 16%, administrative_level 21%, polity_population 52%, measurement systems 82–86%.44Polities with ≥ 50% of the K indicators coded: 376; with any D scale variable: 561; with population: 299; with territory: 355.4546## B. D-PLACE Ethnographic Atlas v3.3 — `dplace_ea_societies.parquet` (1,291 societies)47`soc_id, Name, Latitude, Longitude, Glottocode, region` (50), `main_focal_year` (−2000…1965), `xd_id`,48`Family_ID` (Glottolog 5.3 family; isolates keep their own glottocode; 173 families), `Macroarea`,49`EA030, EA032, EA033, EA034, EA042, EA066, EA067, EA068, EA070, EA072, EA073, EA090, EA005, EA028, EA113` (ordinal code50numbers from `codes.csv` `ord`; "Missing data" → NaN), `ea031_code`, `EA031_mid` (geometric midpoint of the category51range parsed from the code label; open categories use the bound, see `results/diagnostics/dplace_code_midpoints.csv`),52`EA202_mid` = `EA202` (continuous population size, 953 coded), `log_community_size` (611 coded), `log_population`,53`jurisdictional_hierarchy_beyond` (= EA033 ord − 1 : 0 acephalous … 4 four levels; 1,155 coded), `jurisdictional_hierarchy_local`.5455## C. Modern panel — `modern_panel.parquet` (28,092 country-years, 202 countries, 1789–2025)56V-Dem v16 columns kept verbatim (`country_name, country_text_id, country_id, year, e_regionpol_6C, e_regionpol,57v2x_polyarchy, e_civil_war, e_miinterc, e_coups, e_pt_coup, v2regendtype, v2regint, v2regdur, v2regidnr, e_pop, e_area,58e_gdppc, v2x_regime, v2x_rule`, K items `v2clrspct, v2stcritrecadm, v2cltrnslw, v2stfisccap, v2svstterr, v2elembcap`).59Maddison 2023 merged by ISO3 (`country_text_id` = `countrycode`; 163 matched, 39 V-Dem countries unmatched, list in60`crosswalk_vdem_maddison.csv`): `maddison_pop` (thousands; 15,821 country-years, from 1820), `maddison_gdppc`.61Derived: `log_pop`, `log_area`, `log_gdppc`, `y4_civilwar_onset` (e_civil_war 0→1; 176 onsets / 13,608 coded,621817–2006), `y5_coup` (e_coups ≥ 1; 599 / 13,813, 1789–2008), `regime_end_year` (last year of a `v2regidnr`),63`y6_irregular_regime_end` (regime end year with `v2regendtype` ∈ {0 military coup, 1 other coup, 2 self-coup,643 assassination, 5 loss in civil war, 6 loss in inter-state war, 7 foreign intervention, 8 popular uprising};651,041 / 27,846). Codebook readings are in `research/measurement.md`.66