---
title: "Does Divided Government Stop Congress From Passing Major Laws?"
subtitle: "A pre-registered test of significant lawmaking under divided government, 1947 to 2024"
author: "Frank Frisbie"
date: today
format:
html:
output-file: index.html
theme: cosmo
toc: true
toc-location: left
code-fold: true
code-tools: true
df-print: kable
execute:
warning: false
message: false
---
```{r setup}
# Every figure on this page is read from files written by the analysis scripts
# (R/05-R/08, corrected pass) or from a live run of the unaltered July script R/03.
# Nothing here estimates anything; this chunk only reads and formats.
library(jsonlite)
D <- "data/derived/corrected"
S5 <- fromJSON(file.path(D, "stats_05.json"))
S6 <- fromJSON(file.path(D, "stats_06.json"), simplifyVector = FALSE)
S7 <- fromJSON(file.path(D, "stats_07.json"))
S8 <- fromJSON(file.path(D, "stats_08.json"))$measures
f2 <- function(x) sprintf("%.2f", x)
f3 <- function(x) sprintf("%.3f", x)
fp <- function(p) { s <- sprintf("%.3f", p); if (s == "0.050") sprintf("%.4f", p) else s }
to <- function(lo, hi) paste(f3(lo), "to", f3(hi))
br <- function(lo, hi) sprintf("[%s, %s]", f3(lo), f3(hi))
ord <- function(n) paste0(n, ifelse(n %% 100 %in% 11:13, "th",
c("th", "st", "nd", "rd", rep("th", 6))[n %% 10 + 1]))
words <- c("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
"eighteen", "nineteen", "twenty")
cap <- function(s) paste0(toupper(substring(s, 1, 1)), substring(s, 2))
end_year <- function(c) 1789 + 2 * (c - 1) + 1
sig <- function(p) p < 0.05
sp <- function(label) S7$specs[S7$specs$spec == label, ]
PARS <- sp("parsimonious (divided + congress_c + war)")
FULL <- sp("full (+ post_elec + seat shares + dem_pres)")
HAC <- sp("parsimonious, HAC SEs")
MIX <- sp("mixed DV, parsimonious + regime_sweepone")
H2 <- sp("H2 interaction, pooled (registered)")
H2H <- sp("H2 interaction, House only (secondary)")
H2S <- sp("H2 interaction, Senate only (secondary)")
WINT <- sp("parsimonious, war = inter-state only")
ms <- function(dv) S8[S8$dv == dv, ]
APS <- ms("aps"); STA <- ms("stathis"); CL1 <- ms("cl_top1"); CL2 <- ms("cl_top2"); CL5 <- ms("cl_top5")
CL <- list(CL1, CL2, CL5)
LC <- S7$loo_congress; LD <- S7$loo_decade
loo_lo <- min(LC$pois_min, LD$pois_min); loo_hi <- max(LC$pois_max, LD$pois_max)
pre_comb <- S6$pre1990_combined; pre_s1 <- S6$pre1990_sweepone
n_war <- length(S6$war_congresses); n_war_inter <- length(S6$war_inter_congresses)
indep_last <- max(S8$last_congress[S8$dv != "n_sweepone"])
cl_pct <- unlist(S5$thresholds_pct)
# July pass: run the unaltered R/03 (it reads the July panel and writes nothing).
july <- system2("python", c("-W", "ignore", "R/03_models.py"), stdout = TRUE, stderr = FALSE)
grab <- function(pattern) {
l <- grep(pattern, july, value = TRUE)[1]
as.numeric(regmatches(l, regexpr("(?<=IRR=)[0-9.]+", l, perl = TRUE))) -> irr
as.numeric(regmatches(l, regexpr("(?<=p=)[0-9.]+", l, perl = TRUE))) -> p
list(irr = irr, p = p)
}
J_PARS <- grab("^\\s+parsimonious :"); J_HAC <- grab("divided w/ HAC SEs")
# v5.1 comparison (predictor only)
v51 <- S6$v51_rows
v51_row <- function(num) Filter(function(r) abs(r$num - num) < 1e-6, v51)
v51_extra <- setdiff(unlist(S6$v51_war_congresses), unlist(S6$war_congresses))
n_2014 <- sum(vapply(v51, function(r) r$y0 == 2014, logical(1)))
```
```{r claims}
# Guards: each verbal claim in the prose below must hold in the numbers, or the render stops.
stopifnot(
is.na(PARS$nb_IRR), is.na(FULL$nb_IRR), is.na(HAC$nb_IRR), is.na(H2$nb_IRR), # NB failed at boundary
S7$pearson_ratio < 1, !sig(S7$ct_p), # no overdispersion
PARS$pois_IRR < 1, !sig(PARS$pois_p), !sig(HAC$pois_p), # lean, not significant
FULL$pois_IRR > 1, !sig(FULL$pois_p), # full flips, n.s.
sig(APS$nb_p), sig(APS$pois_p), APS$nb_IRR < 1, # APS both
!sig(STA$nb_p), !sig(STA$pois_p), STA$nb_IRR > 1, # Stathis null, above 1
sig(CL1$pois_p), !sig(CL2$pois_p), sig(CL5$pois_p), # CL Poisson pattern
!any(sig(c(CL1$nb_p, CL2$nb_p, CL5$nb_p))), # CL NB none
all(c(CL1$nb_hi - CL1$nb_lo > CL1$pois_hi - CL1$pois_lo,
CL5$nb_hi - CL5$nb_lo > CL5$pois_hi - CL5$pois_lo)), # NB intervals wider
LC$pois_flips == 0, LD$pois_flips == 0, loo_hi < 1, # LOO stable negative
MIX$nb_IRR < 1, !sig(MIX$nb_p), !sig(MIX$pois_p), # seam
!sig(S7$lb_p), !sig(H2$pois_p), !sig(H2H$pois_p), !sig(H2S$pois_p),
(H2H$pois_IRR - 1) * (H2S$pois_IRR - 1) < 0, # opposite sides of 1
!sig(WINT$nb_p), !sig(WINT$pois_p),
sig(J_HAC$p), f3(J_PARS$irr) == f3(WINT$pois_IRR), # July = war_inter model
length(S7$minority_mismatch) == 2
)
```
## The claim being tested
When one party holds the White House and the other holds a chamber of Congress, the standard story says Washington seizes up. Bills stall, big laws stop, and the country gets gridlock. It is one of the most repeated claims in American politics.
The scholarship is less settled than the story. David Mayhew's *Divided We Govern* (1991) counted the important laws Congress passed from 1947 to 1990 and found that divided government produced about as many as unified government. Later work did not close the question. Ansolabehere, Palmer, and Schneer, using their own coding of significant acts, reported roughly four fewer significant acts under divided government in the twentieth century.
This study asks the narrow version: **across the `r ord(S6$first_congress)` to `r ord(S6$last_congress)` Congresses (`r S6$first_year` to `r S6$last_year`), does divided government reduce the number of significant laws Congress enacts?** The unit is the two-year Congress, so there are `r S6$n` observations. A Congress is divided when the president's party does not control both chambers, which is Mayhew's definition.
::: {.callout-note}
## This analysis was pre-registered
The question, the outcome, the controls, the estimator, and every robustness test were frozen in [`PRE_REGISTRATION.md`](PRE_REGISTRATION.md) on 2026-07-14, before any count of significant laws was downloaded. One amendment followed, [`PRE_REGISTRATION_AMENDMENT_01.md`](PRE_REGISTRATION_AMENDMENT_01.md), made before any model was fit, when it turned out Mayhew's own series changes method in 1990. The registered expectation was a null. How the analysis was run, including three deviations that had to be corrected, is set out in [Integrity and provenance](#integrity-and-provenance).
:::
## The finding
**The popular gridlock claim is not robustly supported.** Divided Congresses lean toward passing fewer significant laws, and the lean is persistent: it points the same way in nearly every cut of the data. But it never clears significance cleanly, and it depends on who decides which laws count as significant. Independent codings of "significant legislation" disagree with one another, and under the rule this study registered in advance, that disagreement means the effect is not robust.
In the primary model, a divided Congress enacts about `r f2(PARS$pois_IRR)` times as many significant laws as a unified one (incidence-rate ratio `r f3(PARS$pois_IRR)`, 95% CI `r to(PARS$pois_lo, PARS$pois_hi)`, p = `r fp(PARS$pois_p)`). With Newey-West standard errors, which the pre-registration required because this is a time series, the interval narrows to `r to(HAC$pois_lo, HAC$pois_hi)` and p = `r fp(HAC$pois_p)`. That lands just outside the conventional threshold. It does not clear the bar.
This should not be read as a clean null, and it should not be read as an effect. The honest reading sits between the two: a modest negative association that shows up repeatedly and that none of the tests can confirm.
The primary model is the one the pre-registration named as parsimonious: divided government, a centered Congress number for the long-run decline in landmark laws, and a war indicator. The outcome is the count of significant enactments from Mayhew's list, using only his contemporaneous "Sweep One" judgments so that 1955 and 2015 are counted the same way (see [The 1990 seam](#the-1990-seam)).
## Robustness
### Why Poisson and not negative binomial
The pre-registration made negative binomial the primary estimator and Poisson the robustness check, with an overdispersion test to decide between them. Negative binomial was attempted for every specification. On the Mayhew series it could not be estimated, because the data show no overdispersion at all. The Pearson chi-square over degrees of freedom from the Poisson fit is `r f3(S7$pearson_ratio)`, slightly below 1, and the Cameron-Trivedi test finds nothing (one-sided p = `r fp(S7$ct_p)`). The negative binomial's dispersion parameter goes to zero, the model collapses onto Poisson, and its standard errors cannot be computed at that boundary.
So Poisson is the correct model for this series and it stands. This is the registered structure doing its job: the robustness estimator exists for exactly this case. The fallback rule was written into code before any corrected estimate existed (`R/estimators.py`), and each failed negative binomial fit is printed with its reason in the run log. Where negative binomial did converge (the mixed series and the independent measures below), it is reported first.
### The full model flips sign, and why that should not be read as a reversal
Adding the registered full controls (post-election Congress, the president's party's share of House and Senate seats, and a Democratic-president indicator) moves the divided coefficient to `r f3(FULL$pois_IRR)` (95% CI `r to(FULL$pois_lo, FULL$pois_hi)`, p = `r fp(FULL$pois_p)`). On its face, divided government now goes with more laws.
That flip is a collinearity artifact, not a finding. The full model conditions on seat shares that almost define the treatment. Divided government matches "the president's party held under 50% of the seats in a chamber at the start of the Congress" in `r S7$minority_match` of `r S7$n` Congresses; the `r words[length(S7$minority_mismatch)]` exceptions are the `r ord(S7$minority_mismatch[1])` and `r ord(S7$minority_mismatch[2])`, both split Senates. The correlation between divided government and the president's House seat share is `r f3(S7$corr$pres_house_share)`, and that seat share has a variance inflation factor of `r f2(S7$vif_full$pres_house_share)` in the full model (`r f2(S7$vif_full$divided)` for divided itself, against `r f2(S7$vif_parsimonious$divided)` in the parsimonious model). Once the model holds seat shares fixed, most of the variation in divided government is already carried by the seats, and the divided coefficient rests on what little is left.
Do not read the flip as the controls reversing the effect. The parsimonious model is the one whose divided coefficient means what the question asks. But the pre-registration also said that if the coefficient moved between the two specifications, the movement would be reported as fragility rather than resolved by picking one. It is reported that way here. The collinearity explains the flip; it does not turn the parsimonious estimate into a robust one.
### Independent measures disagree
This is the center of the study. The pre-registration required the divided coefficient to agree across independent codings of significant legislation before any claim could be called robust. Each measure below uses the same predictor and controls; only the count of significant laws changes. The last column refits the Mayhew count on the same Congresses, so a difference between columns is the measure, not the sample.
```{r measures-table}
lab <- c(n_sweepone = "Mayhew, Sweep One (primary)", aps = "Ansolabehere-Palmer-Schneer",
stathis = "Stathis landmark laws",
cl_top1 = sprintf("Clinton-Lapinski, top %d%%", cl_pct[["cl_top1"]]),
cl_top2 = sprintf("Clinton-Lapinski, top %d%%", cl_pct[["cl_top2"]]),
cl_top5 = sprintf("Clinton-Lapinski, top %d%%", cl_pct[["cl_top5"]]))
est <- function(i, lo, hi, p) ifelse(is.na(i), "not estimable (no overdispersion)",
sprintf("%s %s, p = %s", f3(i), br(lo, hi), sapply(p, fp)))
same <- ifelse(S8$dv == "n_sweepone", f3(S8$mayhew_same_span_pois_IRR),
sprintf("%s (p = %s)", f3(S8$mayhew_same_span_pois_IRR), sapply(S8$mayhew_same_span_pois_p, fp)))
tab <- data.frame(Measure = lab[S8$dv],
Congresses = paste0(S8$first_congress, "-", S8$last_congress), n = S8$n,
`NB: divided IRR [95% CI], p` = est(S8$nb_IRR, S8$nb_lo, S8$nb_hi, S8$nb_p),
`Poisson: divided IRR [95% CI], p` = est(S8$pois_IRR, S8$pois_lo, S8$pois_hi, S8$pois_p),
`Mayhew, same Congresses (Poisson)` = same, check.names = FALSE)
knitr::kable(tab, row.names = FALSE)
```
The three independent codings do not agree. APS finds fewer significant laws under divided government, significant under both estimators. Stathis finds nothing, with a point estimate slightly above 1. Clinton-Lapinski depends on where the significance line is drawn and on the estimator: under Poisson the top `r cl_pct[["cl_top1"]]`% and top `r cl_pct[["cl_top5"]]`% cutoffs are significant and the top `r cl_pct[["cl_top2"]]`% is not; under negative binomial, which converged for these series because they are overdispersed, none of the three cutoffs is significant.
Per the registered rule, that disagreement means the effect is not robust. It is not reconciled here, and no measure is promoted over another. We do not know which coding of "significant" is right, and this study cannot settle it.
The disagreement may also help explain why the literature has not converged. Mayhew and Ansolabehere, Palmer, and Schneer reached different conclusions using different lists of important laws. On the same Congresses, with the same model, the choice of list alone moves the estimate from a significant reduction to nothing. That is consistent with the prior disagreement being partly a disagreement about measurement, though this study does not test that directly.
Two details of these measures matter. Clinton and Lapinski publish a continuous significance score, not a list, so a count requires a cutoff. The cutoff is a coding choice; it was fixed at the top `r cl_pct[["cl_top1"]]`%, `r cl_pct[["cl_top2"]]`%, and `r cl_pct[["cl_top5"]]`% of their global rank across all `r format(S5$n_ranked, big.mark = ",")` ranked laws, and all three are reported rather than one. And the Stathis file used here ends at the `r ord(STA$last_congress)` Congress (`r end_year(STA$last_congress)`), not 2014.
### Leave-one-out
Dropping one Congress at a time (`r LC$refits` refits), the divided rate ratio stays between `r f3(LC$pois_min)` and `r f3(LC$pois_max)`. Dropping one decade at a time (`r LD$refits` refits), it stays between `r f3(LD$pois_min)` and `r f3(LD$pois_max)`. It never changes sign. So no single Congress or decade manufactures the negative lean. What leave-one-out shows is that the estimate is reliably marginal: always negative, always near the edge, never robustly significant.
### The 1990 seam
Mayhew's list changes method in 1990. Before that, each Congress's count combines contemporaneous judgments (Sweep One) with a later retrospective review (Sweep Two). From 1991 on, Mayhew uses Sweep One only, because the retrospective review cannot yet be done for recent years. Of the `r pre_comb` laws on the 1947-1990 list, `r pre_comb - pre_s1` come from Sweep Two alone. Because divided government also became more common after 1994, a series that mixes the two methods would let "divided" absorb "counted differently," which is why the amendment made Sweep One the primary series.
The registered robustness check runs the model on the mixed series with an indicator for the post-1990 method. The divided rate ratio is `r f3(MIX$nb_IRR)` (negative binomial, 95% CI `r to(MIX$nb_lo, MIX$nb_hi)`, p = `r fp(MIX$nb_p)`; Poisson `r f3(MIX$pois_IRR)`, p = `r fp(MIX$pois_p)`). It agrees in sign with the primary and is not significant. The method indicator itself is `r f3(S7$regime_irr)`, the drop in counts that comes with losing Sweep Two. The seam does not overturn the conclusion.
### Serial correlation
Residual autocorrelation is mild. The Durbin-Watson statistic is `r f3(S7$dw)`, and a Ljung-Box test at `r words[S7$hac_lags]` lags finds nothing (p = `r fp(S7$lb_p)`). The Newey-West standard errors reported above are the registered correction regardless.
### War coding
The pre-registration defines the war control as a Correlates of War inter-state or intra-state war in either year of the Congress. Coded that way, `r n_war` of the `r S6$n` Congresses are war Congresses. Counting inter-state wars only gives `r n_war_inter`. The divided estimate depends on this choice more than on anything else in the specification. With inter-state wars only, the parsimonious rate ratio is `r f3(WINT$pois_IRR)` (95% CI `r to(WINT$pois_lo, WINT$pois_hi)`, p = `r fp(WINT$pois_p)`); with both, as registered, it is `r f3(PARS$pois_IRR)` (p = `r fp(PARS$pois_p)`). Neither version is significant on model standard errors. This is a stated limitation, below, and the full coding is listed in the [war appendix](#war-appendix).
## The polarization question (underpowered by design)
The pre-registration included a secondary hypothesis, that gridlock emerges or grows as the parties polarize, and registered it as underpowered before seeing any data. It is tested as an interaction between divided government and the distance between the parties' mean DW-NOMINATE scores, with House and Senate members pooled into one party gap.
The interaction is `r f3(S7$h2_beta)` (95% CI `r to(S7$h2_lo, S7$h2_hi)`, p = `r fp(S7$h2_p)`). Only `r S7$n_div_hi_pol` divided Congresses sit above median polarization, so the test has little power. Splitting polarization by chamber, as a secondary check, gives the same picture (House p = `r fp(H2H$pois_p)`, Senate p = `r fp(H2S$pois_p)`, with point estimates on opposite sides of 1).
This is no evidence of a polarization effect. It is not evidence that there is none.
## Limitations
- **The modern era rests on Mayhew alone.** Every independent measure stops by `r end_year(indep_last)` (Clinton-Lapinski at `r end_year(CL1$last_congress)`). The `r ord(indep_last + 1)` to `r ord(S6$last_congress)` Congresses, the most polarized in the series, cannot be cross-checked.
- **"Significant" is a coding choice.** The cross-measure disagreement is the main result, and it cannot be resolved with the data available. The Clinton-Lapinski cutoffs are a further choice inside one measure.
- **War coding is load-bearing at the margin.** Inter-state-only war coding gives `r f3(WINT$pois_IRR)` (p = `r fp(WINT$pois_p)`); the registered inter- and intra-state coding gives `r f3(PARS$pois_IRR)` (p = `r fp(PARS$pois_p)`). The Correlates of War's current intra-state release (v5.1) codes US participation differently after 2006 and ends in `r S6$v51_data_end`, so it cannot code the `r ord(min(unlist(S6$v51_uncodable)))` to `r ord(max(unlist(S6$v51_uncodable)))` Congresses. It fails the completeness gate as a modeling variable and was not run. It is documented in the war appendix only.
- **Sweep One is the same procedure throughout, but not guaranteed to be applied identically across decades.** Drift within Sweep One is possible and is not corrected. The primary series also drops the `r pre_comb - pre_s1` pre-1990 laws that only the retrospective review picked up; that is a choice of consistent measurement, not a claim that those laws were unimportant.
- **n = `r S6$n`.** Enough to see a main effect of the size prior work reported, if it were stable. Not enough for the polarization interaction, as registered.
- **The full model's controls are near-definitional.** Seat shares and divided government measure almost the same thing, so the full specification cannot separate them.
## Integrity and provenance
This study's analysis was run twice, and the first run did not follow the pre-registration in three places. The record of both runs is kept in the open.
The first modeling pass ran on 2026-07-16, the day after the amendment was decided. A review against the frozen spec on 2026-09-26 found that it:
1. used Poisson as the primary estimator for every reported estimate, where the spec made negative binomial primary. For the Mayhew primary series this is immaterial: there is no overdispersion for negative binomial to model, and it collapses onto Poisson. For the independent measures it is material. Negative binomial converges there, with wider intervals, and Clinton-Lapinski is significant at the top `r cl_pct[["cl_top1"]]`% and top `r cl_pct[["cl_top5"]]`% cutoffs under Poisson but not significant at any cutoff under the registered negative binomial. The cross-measure disagreement, and so the study's conclusion, holds under either estimator. But the estimator choice does change that one measure's significance verdict, which is why both estimators are shown side by side;
2. coded the war control from inter-state wars only, where the spec said inter- or intra-state; and
3. assigned the `r ord(117)` Congress (2021-22) to President Trump instead of President Biden, because the voteview data lists both for the January 2021 transition.
It also cited three collinearity figures that no script produced, and it used a hand-made Clinton-Lapinski count file. The corrected pass fixed all three deviations, rebuilt the Clinton-Lapinski counts from the source data by script (they match the hand-made file exactly), computed every diagnostic in code, and switched seat shares to start-of-Congress counts from the official House and Senate tables. All of those decisions were made before the corrected pass produced any estimate, and the corrected scripts were committed before they were run.
**The correction changed the result at the margin.** In the first pass, the parsimonious divided estimate with Newey-West standard errors was `r f3(J_HAC$irr)`, p = `r fp(J_HAC$p)`: significant. In the corrected pass it is `r f3(HAC$pois_IRR)`, p = `r fp(HAC$pois_p)`: just outside. The whole shift comes from the war coding the spec required. The inter-state-only sensitivity in the corrected pass reproduces the first pass's parsimonious estimate exactly (`r f3(J_PARS$irr)`), and the other two fixes touch only the full model. A reader should know that the first pass, run with a war control that departed from the registered spec, reported the HAC estimate as significant.
The git history is itself part of the record, and it contains one false statement. The commit that added the amendment, made on 2026-09-26, says "Stop 2 has not been run as of this commit." That is false: stop 2 had run on 2026-07-16. The line was written without checking the working tree. It has been left in place and corrected in [`PROVENANCE.md`](PROVENANCE.md), which gives the true timeline, the original file timestamps, and what the corrected pass changed and why. The repository was created on 2026-09-26, so git commit dates say nothing about the July sequence; for July, the evidence is the amendment's blindness attestation and the file modification times.
## Method and completeness
**Outcome.** Mayhew's important-enactments list, through its last fully covered Congress (the `r ord(S6$last_congress)`, from his file dated 2025-01-06). Sweep One counts for 1947-1990 come from the Sweep One markers in his 1947-1990 enactments file (`r pre_s1` laws, against `r pre_comb` combined); from 1991 on, his list is Sweep One only. Every Congress in the span has a count, or the pipeline halts.
**Divided government.** Mayhew's own classification for the 80th to 101st Congresses, and the control table from this portfolio's executive-orders study for the 102nd on. Where both exist (83rd to 101st), they agree on every Congress. The 107th, split by the 2001 Jeffords switch, is coded divided, and Mayhew's post-1990 list agrees.
**Controls.** Congress number, centered. War from the Correlates of War project (below). Post-election Congress, the one convening in the January after a presidential election. President's party from voteview, with the `r ord(117)` set to `r cap(tolower(sub(",.*", "", S6$president_117)))`. President's-party seat shares from the official start-of-Congress party divisions (history.house.gov and senate.gov, as of the initial election results).
**Polarization.** Mean Republican minus mean Democratic first-dimension DW-NOMINATE score among House and Senate members, from voteview.
**Independent measures.** Ansolabehere, Palmer, and Schneer's replication data (Harvard Dataverse, doi:10.7910/DVN/TVCY6I), which also carries the Stathis landmark list; Clinton and Lapinski's statute significance data (`r 1789 + 2 * (S5$first_congress - 1)`-`r end_year(S5$last_congress)`).
**Estimation.** Negative binomial (NB2) attempted first for every estimate, with Poisson beside it; Newey-West HAC standard errors with `r words[S7$hac_lags]` lags; leave-one-Congress-out and leave-one-decade-out refits.
### War appendix
War = 1 if the United States was in a Correlates of War inter-state war (v4.0) or intra-state war (v4.1) in either year of the Congress. `r cap(words[n_war])` Congresses qualify:
```{r war-appendix}
yy <- function(a, b) if (a == b) as.character(a) else
if (a %/% 100 == b %/% 100) sprintf("%d-%02d", a, b %% 100) else sprintf("%d-%d", a, b)
seen <- c()
rows <- lapply(S6$war_appendix, function(r) {
parts <- c()
for (k in c("inter-state", "intra-state")) {
ws <- Filter(function(w) w$kind == k, r$wars)
if (!length(ws)) next
items <- vapply(ws, function(w) {
key <- paste(w$kind, w$num)
s <- if (key %in% seen) sprintf("#%d", w$num) else sprintf("#%d %s (%s)", w$num, w$name, yy(w$y0, w$y1))
seen <<- c(seen, key); s }, character(1))
parts <- c(parts, paste(k, paste(items, collapse = ", ")))
}
data.frame(Congress = r$congress, Years = yy(r$y0, r$y1),
`Source wars` = cap(paste(parts, collapse = "; ")), check.names = FALSE)
})
knitr::kable(do.call(rbind, rows), row.names = FALSE)
```
The inter-state-only sensitivity codes `r n_war_inter` of these: `r paste(unlist(S6$war_inter_congresses), collapse = ", ")`.
**Coding-sensitivity note: COW intra-state v5.1.** The Correlates of War's current intra-state release codes US participation differently from v4.1 after 2006. It adds the Third Somalia War through `r max(vapply(v51_row(940.8), function(r) r$y1, numeric(1)))`, the Second Waziristan War from `r v51_row(942)[[1]]$y0`, the Iraqi Sunni Revolt (`r yy(v51_row(971)[[1]]$y0, v51_row(971)[[1]]$y1)`), the Libyan Civil War (listed with US years "`r v51_row(976)[[1]]$y0`-`r v51_row(976)[[1]]$y1`," apparently a data error), and `r words[n_2014]` wars beginning in 2014; it also dates US involvement in Waziristan to `r v51_row(932)[[1]]$y0` only. With v5.1, the `r ord(min(v51_extra))` to `r ord(max(v51_extra))` Congresses would also be war Congresses. But v5.1 ends in `r S6$v51_data_end` and cannot code the `r ord(min(unlist(S6$v51_uncodable)))` to `r ord(max(unlist(S6$v51_uncodable)))`, so it fails the completeness gate as a modeling variable. It was not run in any model.
## Reproduce this
```bash
python R/01_build_spine.py # stop 1: Mayhew spine and gates (July artifact; not re-run)
python R/05_cl_counts.py # Clinton-Lapinski counts from source
python R/06_build_panel_corrected.py # analysis panel, war appendix, seam table
python R/07_models_corrected.py # primary battery
python R/08_robustness_measures_corrected.py # independent measures
quarto render report.qmd # rebuild this page
```
The first pass (`R/02` to `R/04`, `docs/STOP2_REPORT.md`) is kept unaltered for the record. Full method: [`PRE_REGISTRATION.md`](PRE_REGISTRATION.md) and [`PRE_REGISTRATION_AMENDMENT_01.md`](PRE_REGISTRATION_AMENDMENT_01.md). Timeline and corrections: [`PROVENANCE.md`](PROVENANCE.md).
---
**Cite this:** Frisbie, F. (2026). *Does Divided Government Stop Congress From Passing Major Laws?* DOI pending.