Skip to content

Release 3.6.0#581

Merged
igerber merged 1 commit into
mainfrom
release/3.6.0
Jun 29, 2026
Merged

Release 3.6.0#581
igerber merged 1 commit into
mainfrom
release/3.6.0

Conversation

@igerber

@igerber igerber commented Jun 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bump version 3.5.33.6.0 across diff_diff/__init__.py, pyproject.toml, rust/Cargo.toml, diff_diff/guides/llms-full.txt, and CITATION.cff.
  • Promote the CHANGELOG.md [Unreleased] section to [3.6.0] - 2026-06-29 (fresh empty [Unreleased] retained on top) and add the v3.5.3...v3.6.0 comparison link.

This is a release-cut PR: no source/behavior changes of its own — it tags the work already merged to main since v3.5.3. Release highlights:

  • New estimator — LPDiD (Local Projections DiD; Dube, Girardi, Jordà & Taylor 2025), top-level export with full API docs.
  • PlaceboTests — new optional treatment param on placebo_group_test; fake-group path now filters ever-treated units by default; permutation_test reports the (1+count)/(B+1) randomization-inference p-value.
  • ~78–84% peak-memory reduction in the multiplier-bootstrap estimators (Callaway-Sant'Anna, EfficientDiD, HeterogeneousAdoptionDiD) via block-tiled weight generation.
  • Methodology validation promoted to Complete: TwoStageDiD, PlaceboTests, Survey Data Support.
  • Security: pyo3 + numpy 0.280.29 (RUSTSEC-2026-0176/0177); CI/deps hardening.
  • Numerous perf + rank-deficiency correctness fixes across linalg, imputation, two_stage, conley, spillover, and continuous DiD.

Methodology references (required if estimator / math changes)

Validation

  • Tests added/updated: None (no source changes in this PR; the released work shipped with its own tests).
  • Backtest / simulation / notebook evidence (if applicable): N/A
  • Note: recommend running the full-matrix wheel dry-run (release-build-check.yml) before merge.

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

🤖 Generated with Claude Code

Release 3.6.0. Highlights since 3.5.3:
- New estimator: LPDiD (Local Projections DiD; Dube, Girardi, Jorda &
  Taylor 2025), exported from the top-level package with full API docs.
- PlaceboTests: new optional `treatment` param on placebo_group_test,
  fake-group path now filters ever-treated by default, and
  permutation_test reports the (1+count)/(B+1) randomization-inference
  p-value.
- ~78-84% peak-memory reduction in the multiplier-bootstrap estimators
  (Callaway-Sant'Anna, EfficientDiD, HeterogeneousAdoptionDiD) via
  block-tiled weight generation.
- Methodology validation promoted to Complete: TwoStageDiD, PlaceboTests,
  Survey Data Support.
- Security: pyo3 + numpy 0.28 -> 0.29 (RUSTSEC-2026-0176/0177); deps and
  CI hardening (blas-src, checkout v7, release-build guard).
- Numerous perf and rank-deficiency correctness fixes across linalg,
  imputation, two-stage, conley, spillover, and continuous DiD.

Promotes the CHANGELOG [Unreleased] section to [3.6.0] - 2026-06-29 and
syncs the version across __init__.py, pyproject.toml, rust/Cargo.toml,
llms-full.txt, and CITATION.cff.

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

Copy link
Copy Markdown

Overall Assessment

✅ Looks good — no unmitigated P0/P1 findings.

Executive Summary

  • The diff is release metadata only: changelog header/link, package versions, Rust crate version, CFF release date, and LLM guide version.
  • No estimator, inference, weighting, variance/SE, identification, or default-behavior code changed.
  • Version surfaces are consistent at 3.6.0; remaining 3.5.3 references are historical changelog entries or the expected comparison base.
  • No methodology defects found.
  • One minor documentation-maintenance note: the new changelog link reference is inserted out of version order, but it renders correctly.

Methodology

No findings.

  • Severity: P3 informational
  • Impact: No methodology-affecting files changed. The release note content under CHANGELOG.md:L10 is promoted from [Unreleased] to [3.6.0], but the PR does not alter estimator implementations, assumptions, variance, weighting, or inference paths.
  • Concrete fix: None required.

Code Quality

No findings.

  • Severity: P3 informational
  • Impact: Version constants are updated consistently in diff_diff/__init__.py:L304, pyproject.toml:L7, and rust/Cargo.toml:L3.
  • Concrete fix: None required.

Performance

No findings.

  • Severity: P3 informational
  • Impact: No runtime code paths changed.
  • Concrete fix: None required.

Maintainability

Finding: Changelog reference ordering is slightly inconsistent.

  • Severity: P3 informational
  • Impact: CHANGELOG.md:L1799 adds [3.6.0] after [2.1.0] and before [3.5.3]. Markdown resolution is unaffected, but the reference block is harder to scan.
  • Concrete fix: Optionally move [3.6.0] directly above [3.5.3].

Tech Debt

No findings.

  • Severity: P3 informational
  • Impact: The PR does not add or remove deferred-work entries, and no new untracked correctness limitation is introduced.
  • Concrete fix: None required.

Security

No findings.

  • Severity: P3 informational
  • Impact: No dependency, workflow, credential, or secret-bearing files changed in this diff.
  • Concrete fix: None required.

Documentation/Tests

No blocking findings.

  • Severity: P3 informational
  • Impact: Metadata and docs version surfaces are aligned: CITATION.cff:L10-L11, diff_diff/guides/llms-full.txt:L5, and CHANGELOG.md:L10.
  • Concrete fix: None required. Full release-wheel validation is still appropriate before publishing, but this diff does not require new estimator tests.
@igerber igerber added the ready-for-ci Triggers CI test workflows label Jun 29, 2026
@igerber igerber merged commit 96c6e61 into main Jun 29, 2026
39 of 40 checks passed
@igerber igerber deleted the release/3.6.0 branch June 29, 2026 12:48
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

1 participant