Phase 1Spec — Pooled two-node DiD with β1, β2 tranche decomposition
Full equation
Indices: u = unit (dataset × genre), 74 levels (25 iOS genres + 47 Android genres + edges) d = day_in_cycle ∈ [0, 425) (days since Mar 1 of cycle year) c = cycle ∈ {2023, 2025} (Pooled PT uses these two)
Treatment indicators: DAc,d = treatedc × post_May22d = 1[c = 2025] · 1[d ≥ 82] DBc,d = treatedc × post_Nov24d = 1[c = 2025] · 1[d ≥ 268]
Fixed effects (Pooled spec): αu = unit FE (74 levels) — absorbs (dataset, genre) baseline γd × dataset = day-of-year × dataset (850 levels) — absorbs seasonality per platform δc × dataset = cycle × dataset (4 levels) — absorbs cycle level per platform holiday dummies (16 total: 10 floating point + 5 US federal Mondays + 1 cycle Christmas block)
Cluster: unit (dataset × genre).
What β1, β2 capture
Coefficient on (treated × post_May22). Average log-elevation of treated 2025 cohort's entry rate during May 22 onwards, relative to control 2023 same calendar period.
β1 = +0.127 → +13.6%
Interpretation: post-May-22 broad coding-agent adoption period sees treated entry rate +13.6% above the equivalent counterfactual.
Coefficient on (treated × post_Nov24). Additional log-elevation during Nov 24+ on top of β1.
β2 = +0.276 → +31.8% incremental
Total post-Nov-24 effect = β1 + β2 = exp(0.127 + 0.276) − 1 = +49.6%
Tranche structure — 2 cohorts × 3 time tranches
Cycle 2023 (control): ┌────────────────────────────┬────────────────────────────┬────────────────────────────┐ │ Tranche 1 (baseline) │ Tranche 2 (between A & B) │ Tranche 3 (post B) │ │ Mar 1 2023 - May 21 2023 │ May 22 2023 - Nov 23 2023 │ Nov 24 2023 - Apr 30 2024 │ │ D^A=0, D^B=0 │ D^A=0, D^B=0 │ D^A=0, D^B=0 │ │ baseline level │ baseline level │ baseline level │ └────────────────────────────┴────────────────────────────┴────────────────────────────┘ Cycle 2025 (treated): ┌────────────────────────────┬────────────────────────────┬────────────────────────────┐ │ Tranche 1 (baseline) │ Tranche 2 (β1 active) │ Tranche 3 (β1 + β2 active) │ │ Mar 1 2025 - May 21 2025 │ May 22 2025 - Nov 23 2025 │ Nov 24 2025 - Apr 30 2026 │ │ D^A=0, D^B=0 │ D^A=1, D^B=0 │ D^A=1, D^B=1 │ │ baseline level │ baseline + β1 │ baseline + β1 + β2 │ └────────────────────────────┴────────────────────────────┴────────────────────────────┘
DDD identification logic
β2 = (ȳ2025, T3 − ȳ2025, T2) − (ȳ2023, T3 − ȳ2023, T2) ↑ treated mid→post change ↑ control mid→post change (placebo)
2023 cycle's tranche-to-tranche changes act as the "if no shock happened" counterfactual. 2025 cycle's change minus 2023's change isolates the treatment-specific incremental in each tranche transition.
Pooling across platforms — what's constrained, what's free
CriticalPre-May-22 parallel-trends test (coworker concern)
Joint Wald F-test on event-study leads (bins 4-10, ref=bin 11 just before May 22). Linear slope test on the same leads. Rambachan-Roth M-sensitivity bounds.
Bin-by-bin pre-May-22 coefficients
Modern PT testRambachan-Roth M-sensitivity for Nov-24 effect
Honest CI: βNov24_inc ± [1.96·SE + M·max|pre-lead|]. Breakdown M* = (|β̂| − 1.96·SE) / max|pre|. Per top-econ convention, M* > 1 ⇒ result robust to post-trend violations as large as worst observed pre-trend.
Android: M* = 1.27 — barely passes M=1 threshold. CI starts including 0 at M=1.5. PT-fragile but survives standard RR test.
Pooled: M* = 2.62 ✓ PASSES — pooling halves max|pre| (averages out Android noise), CI excludes 0 even at M=2. By modern top-econ standard (Rambachan-Roth 2023, Roth 2022), this is the relevant PT test and Pooled clearly passes.
Event-study (vs C2023)
95% CI shaded. Reference bin 11 (just before May 22). Orange line = May 22 cutoff (bin 12). Blue line = Nov 24 cutoff (bin 38).
Phase 5 · Step 13Code-sufficiency stratification (paper §5.3 mechanism)
Paper §5.3: code-sufficient genres (Utilities, Productivity, Games, etc.) should show LARGER β than code-insufficient (Social, Shopping, Medical).
Description-keyword (paper §5.3, AI-branded vs not)
Split cohort by AI-keyword regex in title/description. If shock were just AI-branded surge, non-AI would have small β.
Verdict summary
- iOS βNov24_inc = +38% (M* = 3.39, PT clean)
- Cross-platform entry effect replicates (iOS +38%, Android +27%, Pooled +30%)
- Code-sufficient mechanism (paper §5.3) replicated on both
- Description-keyword: broader entry, not AI-only
- Pooled spec improves inference (M*=2.53)
- Android strict Wald PT fails (p=0.0003); bin 7 (Apr 19) +14% suggests pre-May-22 ramp — likely Bass diffusion of earlier coding-agent shocks (Cursor/Claude Code GA Feb-Mar 2025)
- Android RR M*=1.27 barely passes M=1; CI includes 0 at M=1.5
- Pooled spec strict Wald p=0.026 marginal, but RR M*=2.53 strong
- Dropping iOS V1 (importance-sample) eliminates the marginal PT failure issue there