docs: CiC launch carousel - "The effect your DiD can't see" (Tide deck)#702
Conversation
11-slide LinkedIn deck announcing ChangesInChanges, grounded in Athey &
Imbens (2006). Villain-first narrative: real programs move parts of the
distribution and the mean averages them away ($0.22 p=0.90 verdict vs a
$3.01 known truth) -> dark twist (same data in logs: +14.0% p=0.001 -
the scale choice IS the assumption) -> the paper's answer (ranks, not
scales; verbatim abstract pull quote; equivariance receipt: dollars fit
== exp(logs fit)) -> the math (Theorem 3.1 composition annotated step
by step + QTE definition) -> the QTE-profile payoff -> sup-t uniform
bands ("the bottom half moved" as one claim) -> the code (sklearn-style
fit()) -> covariates (confidently-wrong 9.38 -> truth-covering 6.53) ->
production grid + qte-1.3.1 validation strip -> CTA (single Tutorial 27
mention). "Tide" palette: ocean navy / teal / seafoam on a light aqua
gradient, coral kickers, amber significant-band; distribution-as-water
cover motif.
Every number is Tutorial 27's seed-locked value (simulated example,
truth known by construction - stated on-slide). Claim discipline in the
module docstring: parity wording scoped per the parity-suite header
(golden files matched to 1e-10; "bit-exact" reserved for the type-1
quantile arithmetic at atol=0), equivariance qualified to unconditional
fits, power-law (never "multiplicative") trend framing, bootstrap +
fixed-95% sup-t bands framed as qte-parity conventions, no speed
claims, QDiD not mentioned.
tests/test_cic_carousel_claims.py (10 tests) closes the sync chain:
the deck's constants are parsed via ast (no carousel deps in CI) and
compared against values PARSED FROM THE COMMITTED Tutorial 27 notebook
surface (which the T27 drift test in turn locks against the library),
plus visible-slide-surface phrase locks on every load-bearing
qualifier with a negative lock on "multiplicative". PDF regenerated in
the same commit per carousel/README.md's contract.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W75ea3yFYQbjVhB2evhRiZ
Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
MethodologyFinding: None. Affected method: Code QualityFinding: None. The generator is self-contained and avoids importing carousel-only dependencies from tests by using AST parsing in PerformanceFinding: None. The added generator is an offline artifact builder. It does not affect runtime library performance. MaintainabilityFinding: None. The constants are centralized in Tech DebtFinding: None. Existing CiC deferred scope is already tracked in SecurityFinding: None. I found no obvious secret or local-path strings in the added Python/test files or via Documentation/TestsFinding: None. The new test file covers headline numeric claims, QTE table values, sup-t split, covariate claims, receipt rows, DGP constants, and load-bearing qualifier phrases at Verification note: |
…link - The three composition annotations now compute their arrow tips from rendered glyph widths (prefix-width measurement in display coords) instead of hand-tuned axes coordinates - arrow 3 previously landed on the equals sign rather than F_10. - CTA: dropped the drift-tests-in-CI sentence; the tutorial reference now links directly to the RTD tutorial page (URL verified live) instead of the docs root. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W75ea3yFYQbjVhB2evhRiZ
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good. No unmitigated P0/P1 findings. Executive Summary
Methodology
The Theorem 3.1 composition and scale-equivariance scope also match Code QualityNo findings. PerformanceNo findings. Generation costs are confined to the offline carousel builder. MaintainabilityNo findings. Numeric claims are centralized and synchronized with Tutorial 27 through Tech DebtNo findings. Existing CiC limitations remain documented in SecurityNo findings. No credentials, private paths, or sensitive metadata were found. Documentation/TestsNo findings. Tests cover the headline effects, QTE table, uniform-band split, covariate example, equivariance receipt, DGP constants, and visible qualifiers.
|
Summary
ChangesInChanges:carousel/generate_cic_carousel.py->carousel/diff-diff-cic-carousel.pdf(11 slides, regenerated in the same commit percarousel/README.md's contract). "Tide" visual identity (ocean navy / teal / seafoam on a light aqua gradient, coral kickers, amber significant-band highlight, distribution-as-water cover motif) - distinct from every existing deck palette.fit()) -> covariates (confidently-wrong 9.38 [8.32, 10.45] -> truth-covering 6.53 [5.35, 7.70]) -> production grid + validation strip -> CTA (pip install; the single Tutorial 27 mention).tests/test_cic_carousel_claims.py(10 tests) closes the synchronization chain: deck constants are parsed viaast(no carousel-only dependencies in CI) and compared against values parsed from the committed Tutorial 27 notebook surface - which the T27 drift test locks against the library - plus visible-slide-surface phrase locks on every load-bearing qualifier (docstrings excluded; negative lock on "multiplicative").Methodology references (required if estimator / math changes)
qte1.3.1 (parity conventions).Validation
tests/test_cic_carousel_claims.py- 10 tests syncing every visible deck number to the committed Tutorial 27 notebook surface (QTE table, SEs, sup-t crit, ATT row, covariate CIs, receipt pairs, DGP constants) plus qualifier phrase locks. All green alongside the T27 drift suite.docs/tutorials/27_cic_distributional_effects.ipynb(seed-locked, drift-tested in CI).Security / privacy
Generated with Claude Code