Directional support for M5 on the routes where AN-074 said repeats = tracking contracts, not statistically conclusive: committee disclosure rate = 63.3% (repeat) vs 71.7% (singleton), gap −8.4 pp, χ² p = 0.12; CPF 42.9% vs 63.6%, gap −20.8 pp (n=14+11, p=0.53); party essentially zero gap; party-name +7.4 pp (REVERSED — repeats more disclosed, n=69+80, p=0.29). The party-name pattern fits the relational reading (campaigns repeatedly using a firm they trust to publish); the committee + CPF patterns fit M5. Joint evidence: AN-074's time-gap diagnostic (committee 12% > 30d, party-name 87% > 30d) + AN-077's β gap pattern (only contract-routes show gap) + AN-078's directional disclosure pattern align coherently. M5 wins the weight-of-evidence test on the committee route, not the knockout test.
Question
AN-077 found β_committee_repeat = +14.17 pp vs β_committee_singleton = +6.75 pp (gap +7.43 pp), but AN-074 showed committee repeats are mostly single-campaign multi-wave tracking contracts (median time-gap 11 days, only 12 % > 30 days). Two readings:
- M1-individual relational: durable firm × candidate ties on committee contracts deliver larger slant.
- M5 selective publication: tracking-poll contracts let campaigns choose which waves to publish. The disclosed committee_repeat polls are a cherry-picked subset of a larger biased universe; the β gap is selection.
The discriminator: does the disclosure rate differ between repeat and singleton dyads on the committee route? If disclosed-committee_repeat is < 100 % while disclosed-singleton is much higher (because singletons are commissioned and released unconditionally while tracking-contract waves are filtered), the M5 mechanism is operating.
Design
source/analysis/an-078-disclosure-rate-by-route-dyad.py:
- Load 793 candidate-sponsored protocols from
poll_sponsor_2024.parquet. - Compute within-route
dyad_kindper AN-077 logic. - Mark
is_disclosed = protocol present in poll_response_2024.parquet(the registry's extracted-and-disclosed subset). - Cross-tabulate disclosure rate by
sponsor_route × dyad_kind. - Chi-square test of independence per route.
- Report Δ_route = rate(repeat) − rate(singleton).
- Plot per-cell disclosure rates with 95 % Clopper-Pearson CIs.
Results

| Route | Repeat n / disclosed / rate | Singleton n / disclosed / rate | Gap | χ² p |
|---|---|---|---|---|
| CPF | 14 / 6 / 42.9 % | 11 / 7 / 63.6 % | −20.8 pp | 0.53 |
| Committee | 98 / 62 / 63.3 % | 463 / 332 / 71.7 % | −8.4 pp | 0.12 |
| Party | 19 / 12 / 63.2 % | 39 / 25 / 64.1 % | −0.9 pp | 1.00 |
| Party-name | 69 / 62 / 89.9 % | 80 / 66 / 82.5 % | +7.4 pp | 0.29 |
The overall candidate-sponsored disclosure rate is 72.1 %.
The committee gap of −8.4 pp has z ≈ 1.65 (two-sided p ≈ 0.10) — directionally consistent with M5 selective publication, falling short of conventional significance. The CPF gap is larger (−20.8 pp) but with n=14+11 is statistically uninformative. Party-name shows a reversed gap (+7.4 pp — repeats more disclosed than singletons), consistent with the relational reading (campaigns repeatedly use a firm they trust to publish).
Interpretation
The discriminator is directionally aligned with M5 on the routes where AN-074 said repeats = single tracking contracts (committee and CPF), and reversed on the route where AN-074 said repeats = separate decisions (party-name). Joint reading:
| Route | AN-074 time-gap signature | AN-077 β gap | AN-078 disclosure gap | Coherent mechanism |
|---|---|---|---|---|
| Committee | tracking contract (12 % > 30 d) | +7.43 pp | −8.4 pp | M5 — selective publication |
| CPF | tracking contract (50 % only 1 dyad timed, +84 d) | +2.61 pp | −20.8 pp | M5 directional, n thin |
| Party | mixed (60 % > 30 d) | −1.27 pp | −0.9 pp | (no signal) |
| Party-name | separate decisions (87 % > 30 d) | −0.60 pp | +7.4 pp | relational (M1-individual) candidate |
The cross-route pattern is internally consistent in a way that strengthens the M5 reading for committee beyond what the χ² p = 0.12 would suggest in isolation. Three independent signals (time-gap → contract structure; β gap → only on contract routes; disclosure gap → directionally lower on contract routes) line up.
Net update on the enforcement-puzzle ranking: M5 / publication option / contract-structure remains the leading reading of the committee +7.43 pp β gap. M1-individual relational gets a very weak positive signal at party-name (+7.4 pp disclosure gap in the relational direction) but n=69 + 80 with χ² p = 0.29 is too thin to anchor anything on. The headline ranking is unchanged: M4-leaning for the CPF +19, M5-leaning for the committee +7.43.
Caveats:
- "Not disclosed" conflates campaign withholding (M5) with extraction failure (data quality). The committee gap could be partially extraction-failure-driven if tracking-poll PDFs are systematically harder to parse — but it's hard to see why that would correlate with dyad kind.
- The χ² test does not reach conventional significance on the committee gap. The signal is in the joint pattern across AN-074/077/078, not in any single test.
Follow-ups
Refine the disclosure indicator (extension): separate PDF-filed from extraction-success. A protocol that registered but never filed a relatório is unambiguously campaign-side withholding; a protocol that filed a relatório but extraction failed is data-quality. The relatório PDF list is available on
bi-dropbox:data/TSE/2024/pesquisa_eleitoral/relatorios/per docs/summary.md. Refining the indicator would let us test M5 cleanly. ~1 hour to wire up.The party-name +7.4 pp reversed gap deserves a closer look (puzzle): party-name repeats are the "purest" M1-individual case in the data (87 % gap > 30 d, n=69 repeats), and they show higher disclosure rate than singletons — the relational story would predict this. The n is too thin to conclude, but a one-page descriptive write-up of the party- name repeat dyads (which firms, which candidates, what's the firm-level β) might surface a relational pattern AN-077's pooled β missed. ~30 min.
Selective publication × β interaction (extension): if M5 is operating, the β coefficient on disclosed repeats should be biased UPWARD relative to a counterfactual with full disclosure. Construct bounds: assume the non-disclosed committee_repeat polls (36 protocols) had β = 0 or β = the committee average (~7 pp), recompute the disclosed β adjusted for selection. The Lee bounds or Imbens-Manski bounds give the M5-attribution magnitude formally. ~1 hour.
Heuristic tracking-contract flag (extension, already on todo): build the "≥ 3 polls in 60 days from same firm for same candidate" indicator. Useful cross-cut with AN-078's disclosure rate. ~30 min.
2020 cross-cycle data is still the unblocker. Without it, the M1-individual story can't be cleanly identified anywhere. AN-077 + AN-078 jointly close the within-cycle inquiry — the next major sharpening test requires 2020 sponsor data.