Skip to content

Bump version to 3.12.0 - #832

Merged
igerber merged 1 commit into
mainfrom
chore/bump-version-3.12.0
Sep 8, 2026
Merged

Bump version to 3.12.0#832
igerber merged 1 commit into
mainfrom
chore/bump-version-3.12.0

Conversation

@igerber

@igerber igerber commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Release bump 3.11.1 -> 3.12.0 (minor: two new public surfaces, one new kwarg, three behavioral corrections; nothing removed, no default flipped, so 4.0 stays reserved for the planned ledger rows).
  • CHANGELOG.md: the ten changelog.d/ fragments since v3.11.1 compiled into ## [3.12.0] - 2026-09-08 by changelog_compile.py (fragments deleted; [Unreleased] stays pointer-only). Comparison link v3.11.1...v3.12.0 added.
  • Version synced in diff_diff/__init__.py, pyproject.toml, rust/Cargo.toml, diff_diff/guides/llms-full.txt, CITATION.cff (version + date-released: 2026-09-08).
  • tests/test_naming_guard.py: (3, 12): "4.0" added to the release ladder (a missing key fails loudly; same shape as the 3.10.0 bump).

Release contents (12 PRs): DurationDiD estimator (#827), DMLDiD bad-control lane (#829) with tutorial 33 (#831), WooldridgeDiD(unsupported_period_action=) (#820), SDiD shape-only pre-fit diagnostic + placebo-anchored warning (#818), HC2/HC2-BM fail-closed at leverage one (#823), summary(alpha=) guard + honest dose-response bands (#811), exact fractional confidence-level labels (#815), three paper reviews (#810, #819, #822), ruff pin bump (#813).

Methodology references (required if estimator / math changes)

  • Method name(s): N/A - version bump only; no estimator or math changes in this diff
  • Paper / source link(s): N/A
  • Any intentional deviations from the source (and why): None

Validation

  • Tests added/updated: tests/test_naming_guard.py (release-ladder entry only). Ran test_naming_guard.py + test_v4_matrix.py on Python 3.14 (CI's interpreter for that job) against this tree: 290 passed, 24 skipped; test_changelog_fragments.py, test_tracking_files.py, test_docs_ia.py pass; changelog_compile.py check OK; import diff_diff reports 3.12.0; no stale 3.11.1 references outside CHANGELOG history.
  • Backtest / simulation / notebook evidence (if applicable): N/A

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

Changelog

  • changelog.d/ fragment added (or N/A - no user-visible change): N/A - this PR compiles the existing fragments into the 3.12.0 section

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Overall assessment

Looks good — no unmitigated P0/P1 findings.

Executive summary

  • Release-only diff; no estimator, weighting, variance, identification, or default logic changed.
  • Version metadata is consistently 3.12.0, with matching release dates and comparison link.
  • Changelog compilation passes its repository check and preserves the pointer-only Unreleased section.
  • Methodological claims align with documented Registry notes and tracked deviations.
  • One P2 documentation inconsistency remains: several SDiD references name the unreleased version 3.11.2.

Methodology

  • Severity: P3 — Informational.
    Impact: DMLDiD’s CS-simple weighting and DurationDiD’s PH/fixed-anchor choices differ from paper alternatives, but are explicitly documented and tracked; they are not defects. See docs/methodology/REGISTRY.md:L3406-L3420, docs/methodology/REGISTRY.md:L5983-L6002, and TODO.md:L60-L64.
    Concrete fix: None required.

No undocumented methodology, inference, or assumption-check changes were introduced.

Code Quality

No findings.

Performance

No findings; no executable performance paths changed.

Maintainability

No findings. The (3, 12): "4.0" release-ladder entry correctly preserves the enforcement horizon at tests/test_naming_guard.py:L103-L117.

Tech Debt

No untracked debt introduced. Limitations mentioned in the compiled notes remain recorded in TODO.md or DEFERRED.md.

Security

No findings or apparent secrets/PII.

Documentation/Tests

  • Severity: P2.
    Impact: The release is identified as 3.12.0 at CHANGELOG.md:L12, but the SDiD methodology and compatibility comments say the diagnostic/schema shipped in nonexistent version 3.11.2. This gives users an inaccurate pickle-compatibility boundary. See docs/methodology/REGISTRY.md:L3511, diff_diff/results.py:L1287, and tests/test_methodology_sdid.py:L2590, L2655, L2761.
    Concrete fix: Replace the v3.11.2/pre-v3.11.2 references with v3.12.0/pre-v3.12.0, including affected test names or docstrings.

The changelog checker and metadata consistency checks pass. The full pytest suite could not be run because pytest is unavailable in the review environment.

Compile the ten changelog.d fragments accumulated since v3.11.1 into the
CHANGELOG 3.12.0 section (dated 2026-09-08) and sync the version across
__init__.py, pyproject.toml, rust/Cargo.toml, llms-full.txt and CITATION.cff.
Add the (3, 12) -> "4.0" entry to the release ladder in
tests/test_naming_guard.py, as the 3.10.0 bump did, so the lifecycle gate
keeps 4.0 as the next lifecycle-gated release.
@igerber
igerber force-pushed the chore/bump-version-3.12.0 branch from 19e123c to cc85988 Compare September 8, 2026 11:48
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

🔁 AI review rerun (requested by @igerber)

Head SHA: cc85988e1617da203ef8b2665dcc99a2c8ded584


Overall assessment

Looks good — no unmitigated P0/P1 findings.

Executive summary

  • Prior 3.11.2 documentation inconsistency is fully resolved as 3.12.0.
  • No estimator, inference, weighting, variance, or identification logic changed.
  • All version metadata and release dates are consistent.
  • Changelog compilation and comparison-link validation pass.

Methodology

  • Severity: P3 — Informational.
    Impact: The SDiD diagnostic remains explicitly documented under a Registry Note; this PR only corrects its release boundary at docs/methodology/REGISTRY.md:L3511. Runtime methodology is unchanged.
    Concrete fix: None required.

Code Quality

No findings.

Performance

No findings; no performance-sensitive code changed.

Maintainability

No findings. The 3.12 lifecycle entry correctly retains the 4.0 enforcement horizon at tests/test_naming_guard.py:L110-L117.

Tech Debt

No new or untracked technical debt.

Security

No findings or apparent secrets/PII.

Documentation/Tests

The previous P2 finding is resolved consistently in diff_diff/results.py:L1287, docs/methodology/REGISTRY.md:L3511, and the affected SDiD tests.

Version surfaces agree at diff_diff/__init__.py:L376, pyproject.toml:L7, rust/Cargo.toml:L3, and CITATION.cff:L10-L11. The compiled release and comparison link validate at CHANGELOG.md:L12 and CHANGELOG.md:L5833.

The changelog compiler passes. Pytest could not run because pytest, numpy, and project dependencies are unavailable in the review environment.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Sep 8, 2026
@igerber
igerber merged commit ff03d08 into main Sep 8, 2026
49 of 50 checks passed
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