# WP35 — Pre-registration of the empirical tests **Status: FROZEN on 2026-11-01 before any predictor–outcome association was computed.** The SHA-256 of this file at freeze time is recorded in `research/decisions.md` (D-003). Any later change is an amendment, numbered in `research/decisions.md`, with its date, reason, and whether it was made before or after seeing the corresponding results. Author of the plan: the autonomous executor (Claude Code), under the PI's mandate (`docs/MANDATE_VERBATIM.txt`). What was inspected before writing this plan (and nothing else): the structure of every raw file (sheet names, variable names, row counts, value vocabularies, date coverage, outcome code frequencies) — see `results/logs/feasibility_report.md` and the execution log. **No cross-tabulation or correlation between any candidate predictor and any outcome was examined.** --- ## 1. Research question and hypotheses as they will be tested The theoretical object is the gap between a society's *coordination demand* $D$ (how much has to be coordinated: people, territory, settlements, hierarchy of settlements) and its *coordination capacity* $K$ (administrative institutions, standardized rules and money, communication infrastructure, record-keeping). The *coordination pressure* is $P = z(\log D) - z(K)$. The Social Compression Hypothesis (SCH) says that institutions are compression devices in the ordinary (not Shannon) sense: they lower the communication and verification cost per coordinated task, which lets a society sustain larger $D$ at bounded cost, and that sustained high $P$ precedes instability. | ID | Testable statement (EMPIRICAL unless noted) | Datasets | Pre-specified falsifier | |---|---|---|---| | **H1** | Polities/societies with higher $K$ have larger scale ($\log$ population, $\log$ territory, settlement hierarchy), conditional on era, region, subsistence/production infrastructure and military technology. Direction of causality is **not** claimed. | Seshat (polity), D-PLACE EA (society), V-Dem+Maddison (country-year) | The partial association of $K$ with $\log D$ is not positive (95% CI includes 0 or is negative) in the primary Seshat specification, **or** its sign is not stable across the three datasets. | | **H2** | Higher *pre-crisis* $P$ predicts more severe / more likely subsequent instability than conventional baselines. | Seshat CrisisDB (severity among crisis cases), Seshat polity duration (hazard), V-Dem (onset panel) | $\beta_P$ not positive at the Holm-adjusted 5% level **or** the $P$ model does not beat every baseline in out-of-sample log-likelihood (forward-chaining and leave-region-out). | | **H3** (SIMULATED) | In agent-based experiments, shared protocols / standardized records / administration lower the number of messages and bytes per successfully coordinated task relative to no-institution baselines, at the price of fixed overhead. | Simulation (Phase 5) | Institutional regimes do not reduce cost-per-success in the majority of the factorial cells, or only do so in cells with implausible parameters. | | **H4** | The relation between $P$ and instability is non-linear (threshold). | Seshat, V-Dem | A hinge/spline model does **not** improve out-of-sample log-likelihood over the linear-in-$P$ model in $\ge 80\%$ of folds. If so, H4 is rejected and only the smooth form is reported. | | **H5** | H1/H2 estimates generalise across held-out macro-regions and eras. | Seshat, V-Dem | In any held-out macro-region or era block, the sign of $\beta_P$ reverses with a CI excluding the pooled estimate → the domain of the claim is narrowed to the blocks where it holds, and this is stated in the abstract. | Competing explanations recorded as covariates or rival models (never dropped): military competition (warfare technology index), environmental/epidemic shock (CrisisDB epidemic flag used as covariate, never as outcome), geography (region, UTM zone/latitude band), resource base (agricultural/production infrastructure index, subsistence type in EA), inequality/stratification (EA class differentiation; Seshat has no direct measure → stated limitation), coercion (professional soldiers/military officers), elite conflict (not directly measurable in Polaris → limitation), cultural diffusion and non-independence (region/NGA random effects, language family in EA), selection (CrisisDB is a crisis-selected sample → §3.2). --- ## 2. Units, samples and exclusions (fixed before analysis) ### 2.1 Historical panel A — Seshat Polaris-2026 - Unit: **polity** (`polity_id`, 626 in the `Polities` sheet). Reason: 24,401 of 26,033 social-complexity facts carry no `year_from`; they describe the whole polity period. A polity-year panel would be an interpolation that the data do not support. Within-polity dated facts (1,632) are used only (i) to build "pre-crisis" versions of $D$ when a dated value exists before the crisis start, and (ii) for descriptive trajectories. - Time stamp of a polity: midpoint $(start\_year + end\_year)/2$; era blocks: $<-1000$, $-1000$ to $0$, $1$–$1000$, $1001$–$1500$, $1501$–$1800$, $>1800$ (CE). Region: `seshat_region` (42) nested in 10 macro-regions defined in `configs/regions.yaml` (fixed before analysis; continents/sub-continents). - Exclusions: a polity enters a $P$-based model only if it has at least one coded $D$ scale variable (population or territory) and at least 50% of the $K$ indicators coded (non-missing after §4 rules). Polities coded `quasi-polity` in `polity_degree_of_centralization` are kept but flagged; a sensitivity analysis drops them. - Duplicate entities: `polity_id` is unique in `Polities`; chained polities (e.g. `cn_qing_dyn_1/2`) are separate units and share an NGA random effect. ### 2.2 Ethnographic cross-section B — D-PLACE Ethnographic Atlas v3.3 - Unit: society (1,291 in `societies.csv`). Variables: EA031 (mean size of local communities), EA202 (population size), EA030 (settlement pattern) as $D$; EA033 (jurisdictional hierarchy beyond the local community), EA032 (local jurisdictional hierarchy), EA072/EA073 (political succession), EA090 (political integration) as $K$-side political organisation; EA066/EA067/EA068 (class/caste) as inequality covariates; EA005/EA028/EA042 subsistence covariates. No instability outcome exists in the EA → **B is used for H1 only.** - Galton's problem: language family (Glottocode → family via Glottolog mapping included in D-PLACE), `region`, and spatial coordinates (Conley-type spatial HAC standard errors with 500 km and 1,000 km cut-offs). ### 2.3 Modern panel C — V-Dem v16 + Maddison 2023 - Unit: country-year, 1789–2025 (V-Dem). Country identifiers: V-Dem `country_id`/`country_text_id`; Maddison `countrycode` (ISO3) crosswalk by ISO3 — documented in `data/metadata/crosswalk_vdem_maddison.csv`; unmatched countries stay in V-Dem with population from `e_pop` only if its codebook source is Maddison-compatible (to be verified in the data dictionary; otherwise excluded). - Exclusions: country-years with missing population; years before the first year a country's $K$ indicators are coded. - **No link between C and A.** The two panels answer the same hypotheses separately. --- ## 3. Variables (names are the original source names) ### 3.1 Coordination demand $D$ (strictly positive scale measures, logged) Seshat: `polity_population` (persons), `polity_territory` (km²), `population_of_the_largest_settlement` (persons), `settlement_hierarchy` (levels). Primary $D$ = first principal component of the available logged scale variables **fit on the full Seshat sample without any outcome information**; secondary $D$ = `log polity_population` alone. Range values (`value_from` ≠ `value_to`) → geometric midpoint, with the bounds carried as a measurement-error sensitivity (§6). Modern: `pop` (Maddison, thousands) and `e_area` (V-Dem, km², 1886+) → primary $D$ = log population; secondary adds log area when available. EA: EA031/EA202 ordinal categories → midpoints of the category ranges on a log scale. ### 3.2 Coordination capacity $K$ (indicator sets are disjoint from $D$ and from $Y$) Seshat, four blocks, each the share of indicators coded present (P or IP = 1; A or IA = 0; see §4): 1. **Administration**: `full_time_bureaucrat`, `specialized_government_building`, `merit_promotion`, `examination_system`, `administrative_level` (levels; rescaled 0–1 by rank within the sample). 2. **Standard rules and money**: `formal_legal_code`, `judge`, `court`, `professional_lawyer`, `indigenous_coin`, `foreign_coin`, `paper_currency`, `token`, `precious_metal`, `article`; measurement systems (`length_`, `area_`, `volume_`, `weight_`, `time_measurement_system`) enter only the latent model because they are coded for ≤ 139 polities. 3. **Communication infrastructure**: `courier`, `postal_station`, `general_postal_service`, `road`, `bridge`, `canal`, `port`. 4. **Record-keeping / information**: `written_record`, `script`, `phonetic_alphabetic_writing`, `non_phonetic_writing`, `lists_tables_and_classification`, `calendar`, `practical_literature`, `nonwritten_record`, `mnemonic_device`. Primary $K$ = unweighted mean of the four block scores (each block requires ≥ 50% of its indicators coded; a polity needs ≥ 3 blocks). Alternative $K$s (reported side by side, pre-specified): (a) 2-parameter logistic IRT latent score estimated on all indicators of the four blocks; (b) first principal component of block scores; (c) block-by-block. Explicitly **excluded** from $K$: military (`professional_soldier`, `professional_military_officer`, `military_level`, Warfare sheet), religion (`professional_priesthood`, `religious_level`, Religion sheet), production infrastructure (`irrigation_system`, `drinking_water_supply_system`, `market`, `food_storage_site`, `mines_or_quarry`), buildings, literature genres other than practical literature. These form the rival-explanation covariates (§3.4). Modern $K$ (V-Dem, none of them a democracy index): `v2clrspct` (rigorous and impartial public administration), `v2stcritrecadm` (meritocratic appointment criteria), `v2cltrnslw` (transparent laws with predictable enforcement), `v2stfisccap` (fiscal capacity source), `v2svstterr` (state authority over territory), `v2elembcap` (EMB capacity). Primary = mean of standardized items with ≥ 4 coded; alternative = first PC. `v2x_polyarchy` is a **covariate**, never a $K$ item. EA $K$-side: EA033 levels (0–4) as the political-integration measure (ordinal, not logged). ### 3.3 Coordination pressure $P$ $P = z(\log D) - z(K)$, standardization within dataset (Seshat: over all polities with both; modern: over all country-years). $K$ is bounded and can be 0, so the $\log K$ form of the mandate is **not** used (documented deviation, D-004). Sensitivities: standardize within era; within macro-region; use ranks. ### 3.4 Covariates $X$ (rival explanations) Seshat: warfare technology index (share of Warfare sheet indicators present), production infrastructure index, moralizing-religion indicator (`moralizing_supernatural_punishment_and_reward`), `polity_degree_of_centralization`, era block, macro-region, `polity_utm_zone`. Modern: log GDP per capita (Maddison `gdppc`), `v2x_polyarchy`, year fixed effects, country fixed effects (within specifications), `e_regionpol_6C`, prior-instability indicator (persistence). EA: subsistence (EA042), agriculture intensity (EA028), class differentiation (EA066), region, language family. ### 3.5 Outcomes $Y$ (coded independently of $D$ and $K$) - **Y1 (Seshat, primary for H2-A)** — crisis severity in CrisisDB "Crisis consequences": count of consequences coded P or IP among the 13 instability items {`decline`, `collapse`, `downward_mobility`, `extermination`, `uprising`, `revolution`, `successful_revolution`, `civil_war`, `century_plus`, `fragmentation`, `capital`, `conquest`, `assassination`, `depose`}, divided by the number of items coded P/IP/A/IA (SU, DIS, blank = missing, never zero). Binary version Y1b = any of {`collapse`, `fragmentation`, `century_plus`, `conquest`, `civil_war`} coded P/IP, defined only when all five are coded. `epidemic` is a covariate. Reform items (`constitution`, `labor`, `unfree_labor`, `suffrage`, `public_goods`, `religion`) are a separate exploratory outcome. **Selection caveat fixed in advance**: CrisisDB records exist for 150 of 626 polities and are a crisis-selected sample; the absence of a record is *not* "no crisis". Y1 therefore tests whether $P$ predicts *how badly* a crisis unfolds, conditional on a crisis being recorded, not crisis occurrence. Crisis records for the same polity (16 duplicates) are separate crisis episodes; models cluster by polity. - **Y2 (Seshat, secondary)** — polity duration $end\_year - start\_year$ with event = polity end; right-censored if `end_year` ≥ 1900 (coding boundary of the databank). Cox proportional hazards stratified by macro-region. - **Y3 (Seshat, secondary)** — discontinuous succession: for polity $i$, the successor's `polity_relationship_to_preceding_entity` ∉ {continuity, continuation}; missing when no successor is in the databank. - **Y4–Y6 (modern)** — onset within $(t, t+h]$, $h = 5$: Y4 civil-war onset (`e_civil_war` 0→1), Y5 coup (`e_coups` ≥ 1), Y6 regime end by non-constitutional means (`v2regendtype` categories to be read from the codebook and fixed in the data dictionary **before** estimation; documented in `research/measurement.md`). **Primary modern outcome** = composite Y456 = any of Y4–Y6 within the window. Persistence baseline uses the same outcome lagged. ### 3.6 Temporal precedence (lag) Seshat Y1: predictors use only facts whose `year_to` < crisis `year_from` **or** undated whole-polity facts (unavoidable; flagged). A "strict" sensitivity uses dated-only facts (expected small N). Modern: $P_{it}$ with outcomes in $(t, t+5]$; no contemporaneous terms; the persistence baseline uses $Y_{i,t-5..t}$. --- ## 4. Missing data, uncertainty, coding rules - Seshat codes: `P`=1, `IP`=1 (flag inferred), `A`=0, `IA`=0, `A~P`/`P~A` = 0.5 (disputed; sensitivity: drop), `SU`, `U`, `unknown`, blank = **missing**. Missing is never zero. No forward-filling across polities or time (the Beheim et al. 2021 critique). - Numeric ranges: midpoint (geometric for logged variables) with [`value_from`, `value_to`] as bounds; `is_uncertain` and `is_disputed` rows are flagged; sensitivity re-estimates with lower and upper bounds (two extra runs) and with flagged rows dropped. - Dates: `year_from`/`year_to` kept as intervals; crisis start = `year_from`; no event is interpolated. - Indices: an index is missing when fewer than 50% of its indicators are coded. Latent IRT model handles item missingness by likelihood (no imputation of the latent score for polities with < 3 coded items). - Outcomes are never imputed. --- ## 5. Models (estimation commands live in `src/wp35/econometrics/`; seeds fixed at 20261101) ### 5.1 H1 - Seshat: $\log D_i = a + b\,K_i + \gamma' X_i + \mu_{region} + \tau_{era} + e_i$, OLS, cluster-robust SE by `seshat_region`; also region random effects. Report $b$ with 95% CI. - EA: ordinal logit of EA033 on $\log$ community size (EA031 midpoint) and covariates; spatial HAC SE; language-family clustered SE. - Modern: within-country regression of $\log pop$ on $K$ with year FE (association only). ### 5.2 H2 — Seshat Y1 (primary A) Fractional logit (quasi-binomial) of Y1 on $P$ (pre-crisis) with macro-region FE and era block FE, SE clustered by `seshat_region`. Binary Y1b: logit. Baselines fitted with identical samples: (B0) intercept + FE; (B1) population only; (B2) $K$ only; (B3) Turchin-style single complexity PC1 (all SC indicators) ; (B4) persistence (prior crisis in the same NGA). Model comparison: leave-one-region-out log-likelihood and AUC (Y1b), 10×5-fold CV; a model "beats" a baseline if its mean OOS log-lik is higher in ≥ 80% of folds. ### 5.3 H2 — Seshat Y2/Y3 (secondary) Cox PH of duration on $P$, $X$, stratified by macro-region, Efron ties, robust SE by `seshat_region`; Schoenfeld test; logistic for Y3. ### 5.4 H2 — modern panel (primary C) $\Pr(Y_{i,t+1..t+5}=1) = \Lambda(\alpha + \beta P_{it} + \gamma' X_{it} + \mu_i + \tau_t)$. Pooled logit with region and year FE and country-clustered SE (primary, because country FE drop never-event countries), conditional (fixed-effects) logit as secondary, linear probability with two-way FE as tertiary. Cubic polynomial of time-since-last-event (Carter & Signorino 2010). Forward-chaining: train ≤ 1945 → test 1946–1975; train ≤ 1975 → test 1976–2005; train ≤ 2005 → test 2006+. Leave-one-region-out on `e_regionpol_6C`. Metrics: OOS log-lik, AUC, Brier, calibration slope. Negative controls: (i) outcome *before* $t$ regressed on $P_{t}$ with the same spec must not show a *stronger* association than the forward spec; (ii) placebo $P$ built from the production/religion indicators excluded from $K$. ### 5.5 H4 Linear-in-$P$ vs. hinge ($P$ and $(P-c)_+$, $c$ chosen by profile likelihood on the training fold only) vs. natural cubic spline (3 df). Decision rule in §1. ### 5.6 H5 Report $\beta_P$ per held-out macro-region and era block; a claim is retained only for blocks where the CI excludes zero in the pooled direction; otherwise the domain statement is narrowed. ### 5.7 Multiple testing Three primary tests: H1-Seshat ($b$), H2-A ($\beta_P$ on Y1), H2-C ($\beta_P$ on Y456). Holm correction at family-wise 5%. All other estimates are labelled secondary or exploratory in every table. ### 5.8 Power Before estimation, a simulation-based minimum detectable effect (MDE, 80% power) will be computed for H2-A with the actual $N$ and the actual distribution of $P$ (random outcome assignment, no real outcome values). Recorded in `research/measurement.md`. If the MDE exceeds a standardized coefficient of 0.5, the Seshat H2 test is declared *underpowered a priori* in the paper, whatever its result. --- ## 6. Robustness set (all pre-specified, all reported even when unfavorable) 1. $D$ alternatives (population only; territory only; PC1). 2. $K$ alternatives (mean of blocks; IRT; PC1; each block). 3. Standardization window (whole sample; within era; within macro-region). 4. Bounds of ranges (lower/upper). 5. Drop inferred codes (IP/IA → missing). 6. Drop quasi-polities. 7. Drop polities whose crisis starts within 25 years of `start_year` (predictors may post-date). 8. Equinox-2020 release instead of Polaris-2026. 9. Modern: $h \in \{1, 3, 10\}$; component outcomes; country FE logit; drop years < 1900. 10. Oster (2019) / Cinelli–Hazlett (2020) sensitivity to unobservables for the primary coefficients. ## 7. What would make us abandon the universal framing If H2 fails in both A and C, the paper reports the SCH as **not supported** as a predictor of instability and keeps only what survived (possibly H1 as an association and H3 as a SIMULATED result), with the title and abstract adjusted accordingly. If H2 holds in one panel only, the claim is restricted to that panel's domain (H5).