Repeat-vs-singleton gap is sharp on the committee route: β_repeat = +14.17 pp vs β_singleton = +6.75 pp (gap +7.43 pp, n_repeat=57, n_singleton=302, both p < 0.001). Other routes: CPF +19.11 vs +16.51 (gap +2.61, n=6+6 — AN-075/76 result), party −1.27 (n=11+21), party-name −0.60 (n=56+61). The AN-075/76 CPF-uniform reading does NOT generalize: on the highest-power route (committee), repeat dyads carry roughly 2× the slant of singletons. But this is consistent with EITHER M1-individual durable relational ties OR with multi-wave-tracking-contract structure — AN-074 found committee repeats have median time-gap 11 days (only 12% > 30 days), so most committee 'repeats' are likely the same campaign's tracking polls, not separate decisions to re-hire. The committee gap is real and large but not unambiguously relational; the M1-individual reading is alive but not cleanly identified.

Confidence
yellow
Type
causal
Design
Sample
AN-075 analysis sample (cand_poll.parquet, error.notna() & final_rank.notna()), with within-route repeat-dyad indicator joined for all four sponsor routes
Specification
AN-075 panel with all four route dummies split into route × {repeat, singleton}: error ~ sp_cpf_repeat + sp_cpf_singleton + sp_committee_repeat + sp_committee_singleton + sp_party_repeat + sp_party_singleton + sp_party_name_repeat + sp_party_name_singleton + opponent_sponsored + log_sample_size + days_to_election + days_to_election_sq | candidate FE + institute FE, cluster=muni_id
Comparator
all-route non-sponsored polls within candidate FE
Cluster
muni_id
Notes
Within-route repeat indicator: a protocol of route R is repeat if its (institute × sponsor_candidate_politico_id) pair has multiplicity >= 2 within R's candidate-sponsored protocols. Per AN-074. This is the load-bearing power test for the M1-individual relational-vs-M4 strategic-stake question — the CPF cell at n=6+6 was too thin in AN-075/76, but committee (n=359), party (n=32), and party-name (n=117) collectively have enough support to detect a relational gradient if one exists.
Script
source/analysis/an-077-all-routes-repeat-singleton.py
Target
build/table/an-077-all-routes-repeat-singleton.csv
Status
interpreted · 2026-06-16
Created
2026-06-16

Question

AN-075 and AN-076 found CPF-route β_repeat ≈ β_singleton ≈ +17-19 pp, but with n = 6 in each cell and a singleton CI of [+2, +32], the test was thin enough to be inconclusive on the M1-individual question. The committee (n = 359), party (n = 32), and party-name (n = 117) routes give us substantially more power for the same split.

If on at least one of the larger routes singleton β << repeat β, the M1-individual mechanism (durable firm × candidate dyads carry larger slant) is alive and AN-075/76 was just too thin to detect it at CPF. If the four routes all show β_repeat ≈ β_singleton, the AN-075/76 route-uniform / strategic-stake reading generalizes across the candidate-sponsored segment.

Design

source/analysis/an-077-all-routes-repeat-singleton.py:

  1. Load cand_poll, AN-075/76's analysis sample.
  2. From poll_sponsor_2024.parquet, for each route in {cpf, committee, party, party_name}, compute within-route repeat-dyad indicator: a protocol is repeat if its (institute × sponsor_candidate_politico_id) pair has multiplicity ≥ 2 within that route's candidate-sponsored protocols.
  3. Join the per-route indicator to cand_poll by (protocol, politico_id).
  4. Build 8 treatment dummies: sp_<route>_repeat, sp_<route>_singleton for each of the four routes.
  5. Run AN-006/75 spec: `error ~ <8 dummies> + opponent_sponsored
    • log_sample_size + days_to_election + days_to_election_sq | politico_id FE + institute FE, cluster=muni_id`.
  6. Report β with 95 % CI per dummy; also report β_repeat − β_singleton per route as the discriminator.

Results

Forest plot — all routes × repeat/singleton

Per-route decomposition (candidate FE + institute FE, muni-clustered SE)

Route β_repeat 95 % CI β_singleton 95 % CI gap n_r / n_s
Committee +14.17 [+6.53, +21.82] +6.75 [+3.59, +9.90] +7.43 57 / 302
CPF +19.11 [+18.70, +19.53] +16.51 [+1.71, +31.30] +2.61 6 / 6
Party +4.97 [+0.85, +9.10] +6.24 [−2.39, +14.87] −1.27 11 / 21
Party-name +5.52 [+0.21, +10.84] +6.13 [+0.65, +11.60] −0.60 56 / 61

The committee route shows a sharp 2× gap: repeat dyads slant at +14.17 pp vs +6.75 for singletons. Both highly significant. The CIs overlap narrowly ([+6.53, +9.90]), so the Wald test for β_committee_repeat = β_committee_singleton is marginal (gap = +7.43, SE on diff ≈ 4.21, t ≈ 1.77, p ≈ 0.08 two-sided), but the directional pattern is clear and the magnitude is large.

The other three routes do not replicate the gap: CPF gap is +2.61 (AN-075's underpowered result), party is mildly negative (−1.27), party-name is essentially zero (−0.60).

Interpretation

The naïve M1-individual prediction (durable firm × candidate dyads carry larger slant) is supported on the committee route, not on the other three. This is a meaningful update on the AN-075/76 CPF-uniform reading: on the highest-power route, the relational structure DOES carry more slant. The route-uniform strategic-stake reading does NOT generalize cleanly.

But the committee gap admits two qualitatively different readings:

  1. M1-individual relational. Durable firm × candidate ties on committee-paid polls sustain a larger slant because the firm has more relational stake. Committee CNPJs are the candidate's own campaign committee — the closest legal entity to the candidate that can contract a pollster structurally.

  2. Tracking-contract structure (not relational). Committee- route "repeats" are predominantly the same campaign's multi-wave tracking polls, not separate decisions to re-hire. AN-074 measured the time-gap distribution for committee repeat dyads: median gap = 11 days, only 12 % > 30 days, max 41 days. That pattern fits "weekly / biweekly tracking-poll contract under a single agreement," not "the campaign hired this firm twice across separate decisions." Under this reading, the committee gap is not relational — it's that campaigns with tracking-poll contracts slant more per poll than campaigns with one-off commissions. Possibly because tracking-poll contracts let the campaign choose which waves to publish (the publication-option mechanism — M5 in the enforcement-puzzle doc), or because tracking-contract campaigns are higher-stakes selecting into firms that deliver slant.

Reading (1) is M1-individual; reading (2) is more like a hybrid of M5 (publication option) + selection. We cannot discriminate them from this analysis alone.

Why party and party-name don't show the gap. Party-name repeats have median gap 102 days (AN-074: 87 % > 30 days) — mostly separate decisions, the "cleanest M1-individual" case. Party CNPJ repeats: 60 % > 30 days. Both are smaller cells and more likely to be genuine re-hires. The β gap is essentially zero on both. If M1-individual were the operative mechanism, we'd expect to see it strongest where the time-gap pattern says "separate decisions" — not on the committee route where the pattern says "single tracking contract." That's a strike against M1-individual as the substantive driver of the committee gap.

Joint reading with AN-073 / AN-074 / AN-075 / AN-076

The four-iteration arc now lands here:

Net. The relational-individual story is supported in the surface sense (committee repeats slant more), but the cleanest M1-individual reading (separate decisions to re-hire same firm for same candidate) is supported NOWHERE in our data. The committee gap is more likely a contract-structure / publication- option / selection effect than a relational-trust effect.

The leading reading of AN-006's CPF +19 pp slant remains strategic individual stake (M4-leaning), and the cross-route extension reveals an additional contract-structure mechanism on the committee route (which deserves its own follow-up framing under M5 / publication option rather than M1).

Follow-ups

  1. Discriminate M1-individual vs M5-publication-option on the committee gap (puzzle, load-bearing): the committee route's β_repeat − β_singleton = +7.43 pp could be M1 or contract-structure / publication-option. The discriminator is the publication rate: of the repeat-dyad committee polls, what fraction were ever made public vs sat on? If repeat dyads have systematically higher non-publication rates (more selection into publishing only the favorable waves), that's M5. If repeat dyads publish at the same rate, the gap is more likely relational. Need a publication / disclosure indicator joined from the registration metadata. ~1 hour if the indicator exists.

  2. Subset committee repeats by time gap (extension): AN-074 showed committee repeats have median gap 11 days. Within committee repeats, do those with time-gap > 30 days (the "genuine re-hire" subset) carry larger β than those with gap < 14 days (tracking-contract subset)? Per AN-074 only 12 % of committee repeats are > 30 days — the subset is thin (≈7 dyads at the protocol level, ≈3-4 cand_poll rows). Too thin to refine the test cleanly, but worth a descriptive look.

  3. Independent identification of tracking contracts (extension): the TSE registry doesn't directly flag "tracking contract" vs "one-off." A heuristic: a contratante that registers ≥ 3 polls with the same firm within 60 days for the same candidate's race is most likely a tracking contract. Tabulate. Useful for both the AN-077 reading and for future analyses.

  4. 2020 cross-cycle dyad recurrence (blind spot): still the gold-standard relational test. Same firm polls same candidate (or their ally) across cycles → unambiguously separate decisions → cleanest M1-individual test. Parked pending 2020 sponsor data.

  5. All-routes paper §sec:policy implications (extension): AN-077's committee gap, if read as M5-publication-option or contract-structure, points the policy framing somewhere different than either M1-relational or M4-strategic-stake: regulate the publication option (e.g. mandatory publication of all registered polls within X days of disclosure date) rather than the disclosure of sponsor identity per se. Writing item, not analysis.