You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
LinkedIn launch carousel for the LWDiD estimator (v3.10.0 release): carousel/generate_lwdid_carousel.py + its committed PDF, following the house deck architecture (magazine sidebar, split logo, footer wordmark, dark slides) in a new poster mode (one idea per slide, body >= 16pt, headlines 32-54pt) with the "Ledger" palette (indigo primary, gold reserved for the single treated unit).
8-slide inverted arc: hook ("One treated unit. An exact p-value.") -> the inference gap (SyntheticDiD named once, neutrally) -> the rolling transformation as the reveal -> Prop 99 proof (exact p = 0.021, RI p = 0.054, detrended, LW 2026 Table 3) -> Walmart at scale -> consolidated practice slide -> code -> CTA. Cover subtitle names the 3.10 release with the version derived from pyproject.toml.
tests/test_lwdid_carousel_claims.py (16 tests): every deck number is located on the committed tutorial-31 notebook surface via ast-parsed generator constants; slide-local qualifier pins (each qualifier must ride with the claim it scopes); per-slide constant-reference checks (a hardcoded literal cannot silently replace a synced value); ratio recomputation for the "barely half" / "factor of two" claims; banned-phrase guards (no absolutes, no competitor claims, no total-sample N = 1 notation, no inferential "flat leads" wording).
Methodology references (required if estimator / math changes)
Paper / source link(s): deck copy sourced from Lee & Wooldridge (2025, SSRN 4516518; 2026, SSRN 5325686) via docs/methodology/REGISTRY.md and the committed docs/tutorials/31_lwdid.ipynb
Any intentional deviations from the source (and why): the displayed RI p = 0.054 follows the authors'-package inclusive convention (Registry-documented deviation from the paper's printed 0.020) and is labeled as such on-slide; the Table 3 reproduction claim is scoped to ATT/SE/exact p
Validation
Tests added/updated: tests/test_lwdid_carousel_claims.py (new, 16 tests, all passing; skips cleanly when carousel/ or docs/ is absent)
Backtest / simulation / notebook evidence (if applicable): every number on the deck is a committed, seed-locked tutorial-31 output (Prop 99 and Walmart cells assert lwdid_ssc_ancillary provenance in the notebook itself); PDF regenerated from the committed generator
No estimator, weighting, variance, or default behavior changes.
LWDiD claims match the Registry, cited paper reviews, and tutorial outputs.
The RI p = 0.054 deviation is explicitly Registry-documented.
The committed eight-page PDF contains the qualified source copy.
All 16 claim assertions passed by direct invocation.
One non-blocking weakness remains in the AST-based guard.
Methodology
P3 — Documented RI deviation. Impact: The deck reports RI p = 0.054, whereas the paper prints 0.020. This is not a defect: the inclusive authors-package convention is documented at docs/methodology/REGISTRY.md:L2715, and the slide scopes Table 3 reproduction to ATT, SE, and exact p at carousel/generate_lwdid_carousel.py:L790-L796. Concrete fix: None required.
The exact-t assumptions and N >= 3 guard agree with docs/methodology/REGISTRY.md:L2649-L2656 and are stated at carousel/generate_lwdid_carousel.py:L722-L737. Walmart aggregation and inference wording also respects the documented per-surface conventions.
Code Quality
No findings.
Performance
No findings. PDF generation is an offline marketing workflow.
Maintainability
No separate findings beyond the test-guard limitation below.
Tech Debt
P3 — Tracked PDF drift risk. Impact: Nothing automatically proves the committed PDF was regenerated from its source, although this PR’s artifact is currently textually consistent. Concrete fix: Follow the existing rendered-text manifest or deterministic-build work item at TODO.md:L94. No PR action required.
Security
No findings. Temporary images use securely created files and are cleaned up; no secrets or PII were found.
Documentation / Tests
P2 — AST checks do not prove values are rendered. Impact:slide_strings accepts every string literal and slide_constant_refs every name anywhere in a function. A qualifier moved into a docstring, or a constant retained as a no-op while the slide hardcodes another value, would still pass despite the comments claiming rendered-surface coverage (tests/test_lwdid_carousel_claims.py:L123-L147). Concrete fix: Exclude docstrings and non-rendering expressions, or assert required per-page text/value tokens against an extracted PDF/render manifest.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
carousel/generate_lwdid_carousel.py+ its committed PDF, following the house deck architecture (magazine sidebar, split logo, footer wordmark, dark slides) in a new poster mode (one idea per slide, body >= 16pt, headlines 32-54pt) with the "Ledger" palette (indigo primary, gold reserved for the single treated unit).pyproject.toml.tests/test_lwdid_carousel_claims.py(16 tests): every deck number is located on the committed tutorial-31 notebook surface viaast-parsed generator constants; slide-local qualifier pins (each qualifier must ride with the claim it scopes); per-slide constant-reference checks (a hardcoded literal cannot silently replace a synced value); ratio recomputation for the "barely half" / "factor of two" claims; banned-phrase guards (no absolutes, no competitor claims, no total-sampleN = 1notation, no inferential "flat leads" wording).Methodology references (required if estimator / math changes)
docs/methodology/REGISTRY.mdand the committeddocs/tutorials/31_lwdid.ipynbValidation
tests/test_lwdid_carousel_claims.py(new, 16 tests, all passing; skips cleanly whencarousel/ordocs/is absent)lwdid_ssc_ancillaryprovenance in the notebook itself); PDF regenerated from the committed generatorSecurity / privacy