SPB Git

spb/wp35_uqo

Public
13.6 KB

# Review of UQO Working Paper 35, "The Social Compression Hypothesis" (v1.0, November 2026)

Reviewer persona: historical anthropologist / archaeologist (Seshat, Ethnographic Atlas, comparative method, collapse literature). Materials read: paper/main.pdf (abstract, §1–§2, §3 skimmed, §4–§7, §9–§11, appendices); research/preregistration.md; research/measurement.md; data/metadata/data_dictionary.md; results/diagnostics/coverage_summary.json and seshat_coverage_by_variable.csv; results/empirical/h2_seshat_y2_y3.csv and h2_seshat_robustness.csv; src/wp35/harmonization/seshat.py; configs/regions.yaml; spot checks on data/processed/*.parquet.

# 1. Summary

The paper reads institutions as compression devices, derives five textbook results (Shannon, Kraft, Cover–Thomas, Lindley/Loynes), and pre-registers a test of whether a demand–capacity "mismatch" index built from Seshat Polaris-2026 (and separately from V-Dem/Maddison) predicts instability. The honest headline is negative: the index adds nothing beyond polity scale in Seshat or beyond state capacity in the modern panel (§6.2, §7.1, §9.2). I commend the frozen pre-registration, the refusal to treat SU as absent, and the self-critical §5.5 and §10. But the problem is deeper than "the residual carries no signal." The capacity side is built from presence codes that saturate for exactly the polities that have CrisisDB records; the outcome is a share of fourteen non-commensurable, documentation-sensitive items whose very heterogeneity the paper's own cited source (Hoyer et al. 2024) establishes; "pre-crisis" is, by the authors' admission, mostly "whole-polity"; and the one secondary result that is strongly significant (capacity predicts shorter polities, HR 1.75, p = 0.005) is explained away in two sentences. The paper is salvageable as a measurement paper about what Seshat can support, but the historical part needs reworking.

# 2. Major issues

M1. Comparability of "capacity" across 13,000 years and 42 regions. K is the mean of four shares of presence codes (§4.3, p. 24). A postal_station coded P for Achaemenid Persia, the Roman cursus publicus and the Qing yizhan are the same unit of capacity, although their reach differs by orders of magnitude, and road P for a Mississippian chiefdom and for the Inca qhapaq ñan are the same. §10 concedes "existence, not reach" but does not draw the consequence: presence codes saturate. In the crisis sample K_mean averages 0.71 with 46% of records above 0.8 (my check on seshat_h2_sample.parquet), so within the sample that matters, P = z(D) − z(K) is approximately z(D) minus a near-constant. The main finding ("P predicts what D predicts", p. 34) is then close to a mechanical consequence of ceiling effects, not a discovery about mismatch. The IRT "invariance" check (Figure 9, p. 71; mean absolute difficulty difference 1.16 logits, almost every New-World point above the diagonal) shows non-invariance, not invariance; r = 0.88 of difficulty orderings is not measurement equivalence. Fixable in part: report K's variance within the crisis sample; the graded reach variables (largest_communication_distance, fastest_individual_communication: 27 and 11 polities) are too few, which is itself the point.

M2. Undated facts and the "pre-crisis predictors" claim. The abstract says "127 CrisisDB crisis records with pre-crisis predictors." Only 2,503 of 56,274 facts are dated (Table 4); in the pre-crisis aggregates used for H2, 4.1% of facts are dated (my check on seshat_precrisis_agg.parquet), and aggregate_polity(before_year=...) in seshat.py keeps every undated fact. A fact dated 1500–1700 is dropped for a crisis in 1600 (year_to < crisis_start) while an undated "paper currency: P" that may post-date the crisis is kept. Two crises begin before the polity's start_year (years_since_start = −28) and twenty within 25 years. The strict dated-only test "was not estimable" (p. 53; audit line 45). Temporal precedence is not weak, it is absent for K; the abstract and §1 should say "whole-polity capacity." Fixable only in the text.

M3. CrisisDB is crisis-selected and the "severity share" is not a scale. The selection caveat is stated (pp. 21, 53); what is never tested is whether the 14 items form one dimension. On seshat_crisis.parquet the mean inter-item correlation is 0.08 (range −0.22 to 0.80). collapse is present in 7 of 165 records and century_plus in 10 of 163; civil_war in 84 of 159, uprising 77 of 158, depose 70 of 146. The "severity share" is therefore a count of elite-political events (deposition, assassination, civil war, uprising) with a few rare catastrophic items thrown in at equal weight. Item-by-item, D correlates +0.26 with assassination, +0.25 with depose, +0.22 with civil_war, and −0.22 with century_plus, −0.06 with collapse. Large polities have emperors to assassinate, capitals to lose and elites to demote; a chiefdom that is conquered has nothing else to lose. "Decline" is not scale-independent either: it is coded SU for 42 records, the most of any item, so the denominator moves with documentation. Y1b has a 77% base rate and discriminates nothing (AUC 0.62–0.64 for every model, Table 11). Fixable: item-level models, a catastrophic vs. elite-political split, a dimensionality diagnostic; drop the word "severity."

M4. Coder circularity between Polaris institutional codes and CrisisDB. §5.5 names it ("same project, overlapping historiography") but underestimates it. 26% of the facts behind the K items are inferred (IP/IA; 29% for the communication block; seshat_coverage_by_variable.csv: full_time_bureaucrat 147/434, judge 144/377, courier 91/311, postal_station 80/254). Inference in Seshat typically runs "a polity of this size/era must have had X," i.e. from scale to capacity, which contaminates H1 directly; it is the communication block, the most inferred, that carries the entire H1 association (Table 7, H1-S6: 1.09 vs. 0.15/−0.29/0.22). Worse, p. 32 claims the H2 coefficient is "stable under ... lower and upper range bounds, inferred codes dropped, within-era and within-region standardization, ranks" and points to Table 10, but Table 10 and h2_seshat_robustness.csv contain none of these rows (eleven variants, none of them). The labels exist in h2_seshat.py line 74, so the runs appear not to have produced output. Under the repository's own rule 1, that sentence must be removed or the rows produced.

M5. The polity as unit, chained polities, and the Cox result. Seshat polities are periodization decisions (Qing 1/2 split at 1796, Tang 1/2 at 763, Habsburg 2 1649–1918 with three crisis records sharing one whole-polity P). Y2 and Y3 are pre-registered secondary outcomes and cannot be disowned after the fact; yet the one strong result in h2_seshat_y2_y3.csv, K_mean_z = 0.559 (SE 0.20, HR 1.75, p = 0.005; D null at 0.128), is dismissed in two sentences as "periodization" (p. 37). Either polity duration is an outcome, in which case capacity shortening polities contradicts the framework and agrees with Tainter, or it is not, in which case it should not have been pre-registered. Y3 is thin: relationship_to_preceding is None for 286 of 626 polities, and the 37 "discontinuities" include Yuan→Ming ("cultural assimilation") and Shang→Zhou ("elite migration"), which are not instability codes. Fixable: re-run Y2 without chained/quasi-polities and discuss it, or move Y2/Y3 to an appendix with a logged amendment.

M6. Galton's problem and configs/regions.yaml. Ten macro-regions were fixed as "geographic only." Southwest_Asia pools Anatolia-Caucasus, Mesopotamia, Levant, Iran and Arabia: Hittites, Achaemenids, Umayyads and Hadramawt kingdoms share one fixed effect and one hold-out fold. Southeast_Asia_Oceania pools Angkor and Pagan with Polynesia and New Guinea; Central_Asia pools Siberia with Turkestan; Sahel sits in North_Africa while the Mali empire (West Africa) sits in Sub_Saharan_Africa. The real non-independence is cultural-historical: after c. 700 CE, Southwest Asia, Central Asia, North Africa and South Asia share Islamic administrative templates (coinage, qadi courts, barid); leave-one-macro-region-out does not remove that diffusion. Regional fixed effects with 42 clusters and 127 records (Europe 31, East Asia 26, Southwest Asia 21 = 61% of the sample; Sub-Saharan Africa 111 polities but 5 crisis records) are anti-conservative, as §10 admits. Fixable: add cultural-sphere (Islamic, Sinitic, Roman/Christian, Indic, Mesoamerican, Andean) blocks as a second hold-out scheme, and use NGA random effects as primary rather than alternative.

M7. Ethnographic Atlas. EA031 "open categories use the bound" (data dictionary B), so everything above 50,000 is coded 50,000; and the Atlas includes archaic societies with focal years to −2000. EA033 (jurisdictional levels) is treated as "capacity" (p. 24), but for Johnson and Carneiro it is the response to scalar stress, a scale measure; H1-E reproduces Carneiro (1967) and Currie et al. (2010) and says nothing about compression. Glottolog families are a weak Galton control (Austronesian and Indo-European span oceans; many isolates are singleton clusters). Present EA as replication of a known regularity, not a third test.

M8. Engagement with Hoyer et al. (2024). Cited twice (pp. 7, 10) for "no typical societal crisis," but the implication is never drawn: if consequences are heterogeneous and mutually uncorrelated, a summed share is not a severity measure (M3), and the paper is predicting an average of unrelated things. Hoyer et al. also find that administrative complexity does not predict consequences one at a time — which is the K-only null in Table 9 restated, and should be acknowledged as a replication, not a novelty.

M9. Alternative mechanisms for "larger polities have more severe crises." Before any coordination mechanism a historian would offer: (i) documentation — more historiography means more items coded P rather than SU (y1_n_coded correlates 0.24 with D; coded SC facts 0.31); (ii) item relevance (M3); (iii) composition — multi-ethnic empires fragment because they have parts; (iv) frontier exposure scaling with territory (Turchin 2009); (v) elite overproduction scaling with elite size; (vi) crisis identification — CrisisDB episodes are delimited because consequences occurred. None is in §9.2, which stops at "Johnson's reading."

M10. Does "institutions as compression" add anything beyond scalar stress? The paper concedes (§3.8, §9.1, p. 51) that no Shannon quantity is measured historically and that the simplest reading is Johnson's. Its one distinctive prediction — the stale-code penalty (Theorem 3): a fiscal or legal code optimized for one task distribution becoming costly after a shock (the Qing land-tax quota frozen in 1712, the Ottoman timar after the price revolution) — is never confronted with history. Without that, "compression" relabels Wright & Johnson (1975).

# 3. Minor issues

  • Pre-registration §3.5 says "13 instability items" and lists 14; code and paper use 14. Log as an amendment.
  • Table 4 reports 132 unparsed values but results/diagnostics/seshat_unparsed_values.csv is empty (header only); reconcile.
  • code_presence maps "SA"/"SP" to missing without documenting them; crisis_table() has a no-op epidemic_v line.
  • A polity's value for a presence variable with several facts is the mean across facts (A then P → 0.5), i.e. a time average, not status at the crisis; say so.
  • Era blocks use the polity midpoint: Habsburg 2 is "post-1800" for a 1700 crisis.
  • Table 12: "pooled" is the sample minus 5–13 records, so stability is near-guaranteed; the within-block column is the informative one and is mostly uncomputable.
  • The Equinox-2020 replication (pre-registered robustness item 8) was simply not run (audit line 28); the paper calls it "blocked," which it was not.
  • The 120 quasi-polities (p. 21, from −13,600) deserve a sentence, not only a sensitivity row.

# 4. Questions to the authors

  1. What is the SD of K within the 127 crisis records, and what share of P's variance in that sample is D alone?
  2. Where are the inferred-dropped, bounds, within-era, within-region and rank rows claimed on p. 32?
  3. Which items does D predict when the 14 are modelled separately, and does the result survive excluding depose, assassination, civil_war, uprising?
  4. How do you reconcile HR 1.75 for K with a framework in which capacity lowers breakdown probability?
  5. Why is polity-level documentation (number of coded facts, or share SU) not a covariate given that it correlates with both D and the outcome denominator?
  6. Would the H1 communication-block result survive dropping the 29% inferred codes in that block?

# 5. Recommendation

Major revision. The negative result is real and worth publishing, but the historical analysis currently overstates what was measured. Mandatory changes:

  1. Remove or substantiate the robustness claims on p. 32 that have no rows in Table 10 / h2_seshat_robustness.csv (inferred codes, bounds, standardization windows, ranks); produce the runs or strike the sentence.
  2. Replace "pre-crisis predictors" (abstract, §1) with "whole-polity predictors" and report the dated-fact share in the H2 sample.
  3. Report the outcome item by item and a dimensionality diagnostic; retire the single "severity share" as primary or justify it against Hoyer et al. (2024).
  4. Treat the Cox result for K (HR 1.75) as a finding to be explained, with a chained-polity/quasi-polity exclusion, or formally amend the pre-registration to drop Y2/Y3.
  5. Add a documentation covariate and a cultural-sphere hold-out scheme alongside the geographic macro-regions, and state explicitly that K is a saturated presence index within the crisis sample.
Files · main
Menu

Theme