Repository navigation
marketing: bad-controls launch carousel (Junction palette) + claims-sync guard - #858
Conversation
…ync guard LinkedIn launch deck for the v3.12 DMLDiD bad-control lane (Caetano, Callaway, Payne & Sant'Anna 2026): carousel/generate_bad_controls_carousel.py + committed carousel/diff-diff-bad-controls-carousel.pdf (11 slides, poster mode, ink/stone structure with a single amber accent for the bad control and the fork motif's third road). tests/test_bad_controls_carousel_claims.py (29 checks): every simulated estimate located on the committed tutorial-33 notebook surface, the NLSY79 application numbers and the paper's own wording located in the paper review, the cover's release label pinned to the CHANGELOG section that shipped the lane, validation anchors pinned to the REGISTRY block, arithmetic behind the half-the-effect / SE claims, slide-local qualifiers, a banned-absolutes list, and a valid-Python check on the code slide.
Overall assessment: ✅ Looks goodNo unmitigated P0/P1 findings in the three changed files. Executive summary
MethodologyP3 — Documented aggregation difference; informational. Impact: The deck correctly discloses that the headline ATT uses Callaway–Sant’Anna simple weighting rather than the paper’s Remark 4 weighting. This matches the Registry’s labeled Note. Concrete fix: None required. Reviewed methods: CallawaySantAnna’s Approach 1 and DMLDiD’s CCPS Approach 2. Their descriptions, distinction concerning Code QualityNo findings. Both Python files parse under Python 3.9 syntax. The generator cleans up temporary images through PerformanceNo findings. Generation runs outside library execution, and claim checks avoid importing rendering dependencies. MaintainabilityNo findings. Statistical constants are centralized and checked against their intended slides and source artifacts. Tech DebtP3 — PDF synchronization guard is already tracked. Impact: Source-based assertions cannot automatically detect a stale committed PDF. The extracted text and embedded comparison chart matched the reviewed source during this review. Concrete fix: No change required for approval. The tracked follow-up is an automated PDF-to-generator comparison using fixed metadata or a rendered-content manifest. SecurityNo findings. No secrets identified in the changed source, and the PDF contains no JavaScript, launch actions, or embedded files. Documentation/TestsNo additional findings. All 29 claim checks passed when invoked directly with pytest fixture and parameter decorators emulated. This does not substitute for full pytest execution or tutorial rederivation. The committed PDF contains 11 pages. Full-page visual rendering and regeneration were not verified. No changelog fragment is required because library behavior is unchanged. |
Summary
DMLDiDbad-control lane (Caetano, Callaway, Payne & Sant'Anna 2026):carousel/generate_bad_controls_carousel.py+ committedcarousel/diff-diff-bad-controls-carousel.pdf(11 slides, poster mode, "Junction" palette - ink/stone structure with a single amber accent reserved for the bad control and the fork motif's third road; the two wrong roads stay warm gray).bad_control_summary()pre-test table with both Remark 6 caveats on-slide, the dark code slide, the NLSY79 application told wrong-then-right (the authors' estimates, labeled as such, never reproduced) with the lane-scope / validation strip, and the CTA.tests/test_bad_controls_carousel_claims.py(29 checks): every simulated estimate located on the committed tutorial-33 notebook surface (prose and rendered outputs, including the sixATT_Xrows); the NLSY79 numbers and the paper's own "almost 10%" / "roughly 40% larger" wording located in the paper review; the cover'sFEATURE_RELEASE = "3.12"pinned to the CHANGELOG section that ships the lane (the footer still derives frompyproject.toml); oracle tolerance and R package name pinned to the REGISTRY block; arithmetic behind the half-the-effect / SE-distance claims; slide-local qualifiers; a banned-absolutes list (no "unbiased", no "detects bad control", no Pedro); a valid-Python check on the code slide; tutorial referenced once on the CTA.Methodology references (required if estimator / math changes)
DMLDiD"Bad-control extension (CCPS 2026)" block and the CallawaySantAnna Approach-1 Note.docs/methodology/papers/caetano-2026-review.md).Validation
tests/test_bad_controls_carousel_claims.py(new, 29 checks, green alongsidetests/test_t33_bad_controls_drift.py).Security / privacy
Changelog