Skip to content

Release 3.3.3: Conley spatial-HAC SE, HAD stratified-survey Stute bootstrap, dCDH by_path × survey_design, Tutorials 21+22#445

Merged
igerber merged 1 commit into
mainfrom
release/3.3.3
May 15, 2026
Merged

Release 3.3.3: Conley spatial-HAC SE, HAD stratified-survey Stute bootstrap, dCDH by_path × survey_design, Tutorials 21+22#445
igerber merged 1 commit into
mainfrom
release/3.3.3

Conversation

@igerber
Copy link
Copy Markdown
Owner

@igerber igerber commented May 15, 2026

Summary

Patch release. Bumps version 3.3.2 -> 3.3.3 across pyproject.toml, rust/Cargo.toml, diff_diff/__init__.py, diff_diff/guides/llms-full.txt, CITATION.cff (with date-released: 2026-05-15), and splits the CHANGELOG.md [Unreleased] section into a new empty [Unreleased] + [3.3.3] - 2026-05-15 block with comparison link.

Per the project SemVer convention (minor reserved for new estimator classes; additive extensions, new variance methods, new kwargs are patch-level), this is patch-level. Nothing in [Unreleased] adds a new top-level estimator.

What landed since 3.3.2 (full detail in CHANGELOG [3.3.3]):

  • Conley (1999) spatial-HAC SE via vcov_type=\"conley\" on LinearRegression / compute_robust_vcov / MultiPeriodDiD / TwoWayFixedEffects / DifferenceInDifferences (Phases 1+2 + Wave A): cross-sectional + panel block-decomposed sandwich, combined spatial × cluster product kernel, sparse k-d-tree fast path at n > 5k, callable-metric validation. R `conleyreg` parity at ~5.7e-16 on six benchmark fixtures.
  • HAD pretest stratified survey-design support (Phase 4.5 C continuation): lifts `NotImplementedError` on `SurveyDesign(strata=...)` in the Stute family; documented synthesis of CGM 2008 / DF 2008 / DMN 2019 / KL 2012 / Wu 1986 ingredients with new shared `bootstrap_utils.apply_stratum_centering` helper.
  • dCDH `by_path` and `paths_of_interest` × `survey_design` composition (analytical Binder TSL SE + replicate-weight bootstrap); `by_path` + non-binary integer treatment; new `paths_of_interest` kwarg.
  • Inference-field aliases (`att` / `se` / `conf_int` / `p_value` / `t_stat`) on all staggered result classes for adapter / external-consumer compatibility.
  • HAD `practitioner_next_steps()` handler + `llms-full.txt` reference section (Phase 5).
  • Tutorials 21 (HAD pretest workflow) and 22 (Survey-Weighted HAD) with companion drift-test files.
  • Paper reviews: retrospective methodology reviews for TROP (Athey et al. 2025) and Wooldridge ETWFE (2023) under `docs/methodology/papers/`.
  • CI infra: AI reviewer now sees tutorial notebook prose via stdlib-only `tools/notebook_md_extract.py`.
  • Changed: HAD Stute non-strata bootstrap now applies the standard `sqrt(n_psu/(n_psu-1))` Bessel small-sample correction — calibration shift ~1.7% at n_psu=60. Pre-PR p-values reproducible by pinning the prior release.

Methodology references (required if estimator / math changes)

  • Method name(s): N/A for this release-bump PR — methodology changes landed in the underlying PRs (Conley Phases 1+2 + Wave A, HAD Phase 4.5 C, dCDH by_path waves). All deviations and citations are documented in `docs/methodology/REGISTRY.md` (`## ConleySpatialHAC`, `## HeterogeneousAdoptionDiD`, `## ChaisemartinDHaultfoeuille`).
  • Paper / source link(s): see CHANGELOG `[3.3.3]` bullets — each cites its papers inline.
  • Any intentional deviations from the source (and why): documented per-method in REGISTRY.md (Conley panel temporal kernel hardcoded Bartlett per R `conleyreg::time_dist.cpp`; HAD stratified Stute synthesis composes ingredients from 5 papers since no single source covers the exact CvM functional under stratification; cell-level Wooldridge aggregation matches Stata `jwdid_estat` rather than W2025 Eqs. 7.2-7.4).

Validation

  • Tests added/updated: none in this PR (release-bump only). Test additions and parity validation landed with the underlying PRs.
  • Backtest / simulation / notebook evidence (if applicable): none in this PR.

Security / privacy

  • Confirm no secrets/PII in this PR: confirmed

…tstrap, dCDH by_path × survey_design, Tutorials 21+22

Patch bump per the project SemVer convention (no new estimator classes; all
additions are extensions, new vcov_type, new kwargs, tutorials, and a
small-sample bootstrap calibration improvement).

Files updated:
- pyproject.toml, rust/Cargo.toml, diff_diff/__init__.py, diff_diff/guides/llms-full.txt: 3.3.2 -> 3.3.3
- CITATION.cff: version 3.3.3, date-released 2026-05-15
- CHANGELOG.md: [Unreleased] split into new empty [Unreleased] + [3.3.3] - 2026-05-15
  with comparison link added

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Overall Assessment

✅ Looks good — no unmitigated P0/P1 findings.

Executive Summary

  • This is a release-cut PR only: changelog, citation, package/crate version strings, and the llms-full.txt version banner. It does not modify estimator implementations, weighting, SE formulas, identification logic, or defaults.
  • I cross-checked the methodology-bearing changelog prose against the Methodology Registry. The Conley, HAD, and dCDH items referenced here are already documented, including explicit Notes/Deviations and supported/deferred combinations in docs/methodology/REGISTRY.md:L643-L679, docs/methodology/REGISTRY.md:L2356-L2386, and docs/methodology/REGISTRY.md:L2939-L3095.
  • The remaining deferrals mentioned in the release notes are already tracked in TODO.md, so this PR does not introduce new untracked methodology debt (TODO.md:L101-L103, TODO.md:L119-L120).
  • Version metadata is internally consistent across pyproject.toml:L5-L8, diff_diff/__init__.py:L287-L291, rust/Cargo.toml:L1-L5, CITATION.cff:L9-L12, diff_diff/guides/llms-full.txt:L1-L6, and CHANGELOG.md:L8-L10, CHANGELOG.md:L1444-L1445.

Methodology

  • No findings. The PR does not change estimator code or inference logic. The release-note prose matches existing Registry documentation rather than introducing any new undocumented methodology behavior (CHANGELOG.md:L13-L18, docs/methodology/REGISTRY.md:L643-L679, docs/methodology/REGISTRY.md:L2356-L2386, docs/methodology/REGISTRY.md:L2939-L3095).

Code Quality

  • No findings. The 3.3.3 bump is consistent across Python metadata, Rust metadata, citation metadata, and the LLM reference guide (pyproject.toml:L5-L8, diff_diff/__init__.py:L287-L291, rust/Cargo.toml:L1-L5, CITATION.cff:L9-L12, diff_diff/guides/llms-full.txt:L1-L6).

Performance

  • No findings. No executable or performance-sensitive code paths changed.

Maintainability

  • No findings. The changelog split is clean and the new release compare link is present (CHANGELOG.md:L8-L10, CHANGELOG.md:L1444-L1445).

Tech Debt

  • No findings. The limitations referenced by the release notes are already tracked and therefore are not blockers for this metadata PR (TODO.md:L101-L103, TODO.md:L119-L120).

Security

  • No findings. The diff is metadata/docs only, and I did not see any credentials, tokens, or new executable surfaces.

Documentation/Tests

  • No findings. The edited files are consistent with the release cut. I did not rerun tests because the diff does not touch executable code.

@igerber igerber added the ready-for-ci Triggers CI test workflows label May 15, 2026
@igerber igerber merged commit f2dbce5 into main May 15, 2026
33 of 34 checks passed
@igerber igerber deleted the release/3.3.3 branch May 15, 2026 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-ci Triggers CI test workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant