Skip to content

docs: update CITATION.cff with author and current version#293

Merged
igerber merged 1 commit intomainfrom
docs/citation-update
Apr 12, 2026
Merged

docs: update CITATION.cff with author and current version#293
igerber merged 1 commit intomainfrom
docs/citation-update

Conversation

@igerber
Copy link
Copy Markdown
Owner

@igerber igerber commented Apr 12, 2026

Summary

  • Replace generic "diff-diff contributors" author with Isaac Gerber (using the CITATION.cff spec's given-names/family-names format for proper parsing by Google Scholar, Zenodo, and CrossRef)
  • Bump version from 2.7.1 to 3.0.1
  • Update date-released to 2026-04-07 (v3.0.1 release date per CHANGELOG)

Methodology references (required if estimator / math changes)

  • Method name(s): N/A
  • Paper / source link(s): N/A
  • Any intentional deviations from the source (and why): None

Validation

  • Tests added/updated: No test changes (metadata-only)
  • Backtest / simulation / notebook evidence (if applicable): N/A

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

Generated with Claude Code

@github-actions
Copy link
Copy Markdown

Overall Assessment

⚠️ Needs changes

Highest unmitigated severity is P1.

Executive Summary

  • The CITATION.cff edits themselves are fine, but the diff is not metadata-only: it removes the dCDH reversible-treatment estimator, its public exports/helpers, its synthetic DGP, and its methodology/docs/test surface.
  • Affected methodology: ChaisemartinDHaultfoeuille / DCDH, twowayfeweights(), and generate_reversible_did_data().
  • The current Methodology Registry and implementation tie dCDH to de Chaisemartin & D’Haultfoeuille (2020) and the dynamic companion paper, and describe it as the library’s only reversible-treatment method; the PR deletes that functionality without any replacement or documented registry note/deviation.
  • Removing the reversible-treatment chooser/decision-tree branches also removes the main guardrail that keeps users with on/off treatments away from absorbing-state estimators that explicitly warn or error on reversals.
  • The diff deletes the full hand-worked, NaN-consistency, cohort-recentering, and R-parity validation suite for this methodology.
  • No security or performance issues stood out beyond the feature removal.

Methodology

  1. Severity: P1 Silent removal of the only source-backed reversible-treatment estimator from the public API.
    Impact: the baseline registry, roadmap, implementation docstring, exports, generator, and changelog all describe dCDH as a shipped method aligned to de Chaisemartin & D’Haultfoeuille (2020) / NBER WP 29873 and as the library’s only estimator for non-absorbing treatment. Deleting diff_diff/chaisemartin_dhaultfoeuille*.py, its exports, and generate_reversible_did_data() is a material methodology/default-behavior change, and it is not mitigated by any retained **Note:** / **Deviation from R:** entry in REGISTRY.md.
    Concrete fix: either restore the dCDH implementation, exports, generator, registry section, and related docs/tests, or explicitly document a feature retirement as a breaking change in REGISTRY.md, CHANGELOG.md, and user guides, with clear unsupported-status language for reversible treatments.
    Evidence: docs/methodology/REGISTRY.md:460, ROADMAP.md:121, diff_diff/chaisemartin_dhaultfoeuille.py:1, diff_diff/init.py:164, diff_diff/prep_dgp.py:1759, CHANGELOG.md:10

  2. Severity: P1 Removing the reversible-treatment selection branch removes an assumption guardrail for a design the remaining estimators do not support.
    Impact: the current estimator chooser and practitioner decision tree explicitly route reversible-treatment users to dCDH and state that the other staggered estimators assume absorbing treatment. The remaining code backs that up with reversal warnings/errors. If this PR deletes the reversible-treatment branch without replacing it with an explicit “unsupported in this release” stop, users with on/off treatments are left to absorbing-state estimators on an invalid design.
    Concrete fix: restore the reversible-treatment branches in the chooser/decision tree, or replace them with explicit unsupported guidance that tells users no current estimator in this release handles non-absorbing treatment.
    Evidence: docs/choosing_estimator.rst:26, docs/choosing_estimator.rst:232, docs/practitioner_decision_tree.rst:138, diff_diff/estimators.py:955, diff_diff/two_stage.py:273, diff_diff/imputation.py:295, diff_diff/efficient_did.py:431, diff_diff/trop.py:505

Code Quality

No additional code-quality finding beyond the methodology regressions above.

Performance

No findings in scope.

Maintainability

No separate maintainability finding beyond the undocumented methodology retirement/removal above.

Tech Debt

  1. Severity: P3 (informational) There is no TODO.md entry tracking this removal as deferred work.
    Impact: under the review rubric, the removal cannot be treated as accepted deferred work, so it does not mitigate the P1 methodology findings.
    Concrete fix: if retirement is intentional, add an explicit tracking/release-management entry, but note that this would not by itself downgrade the P1 issues.
    Evidence: TODO.md:51

Security

No findings in scope.

Documentation/Tests

  1. Severity: P2 The PR deletes the methodology validation and parity surface for dCDH.
    Impact: this removes the API/behavior suite, the hand-worked methodology tests, the R DIDmultiplegtDYN parity suite and generator, the reversible DGP invariants, and the dedicated R fixture support. It also removes the API/docs mapping that keeps this method discoverable and reviewable. If dCDH is restored later, the regression net is gone.
    Concrete fix: if dCDH remains supported, restore these tests/docs/assets. If retirement is intentional, replace them with explicit retirement/rejection coverage and unsupported-status docs rather than deleting the evidence trail outright.
    Evidence: tests/test_chaisemartin_dhaultfoeuille.py:1, tests/test_methodology_chaisemartin_dhaultfoeuille.py:1, tests/test_chaisemartin_dhaultfoeuille_parity.py:1, tests/test_prep_dgp_reversible.py:1, benchmarks/R/generate_dcdh_dynr_test_values.R:1, tests/conftest.py:95, docs/api/index.rst:20, docs/api/prep.rst:94, docs/doc-deps.yaml:51

Path to Approval

  1. Restore ChaisemartinDHaultfoeuille/DCDH, twowayfeweights(), generate_reversible_did_data(), and the REGISTRY.md dCDH section; or, if retirement is intentional, add an explicit breaking-change/unsupported-methodology note in REGISTRY.md and CHANGELOG.md instead of silently deleting the method.
  2. Restore the reversible-treatment branch in docs/choosing_estimator.rst and docs/practitioner_decision_tree.rst, or replace it with an explicit “reversible treatments are unsupported in this release” branch that does not send users to absorbing-only estimators.
  3. Restore the deleted dCDH regression assets (tests/test_chaisemartin_dhaultfoeuille.py, tests/test_methodology_chaisemartin_dhaultfoeuille.py, tests/test_chaisemartin_dhaultfoeuille_parity.py, tests/test_prep_dgp_reversible.py, benchmarks/R/generate_dcdh_dynr_test_values.R, and the associated fixture support in tests/conftest.py), or replace them with explicit retirement/rejection coverage if the feature is being intentionally removed.

- Replace generic "diff-diff contributors" with Isaac Gerber
  using the CITATION.cff spec's given-names/family-names format
- Bump version from 2.7.1 to 3.0.1
- Update date-released to 2026-04-07 (v3.0.1 release date)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@igerber igerber force-pushed the docs/citation-update branch from 16435e1 to 40fea27 Compare April 12, 2026 16:54
@igerber
Copy link
Copy Markdown
Owner Author

igerber commented Apr 12, 2026

/ai-review

@github-actions
Copy link
Copy Markdown

🔁 AI review rerun (requested by @igerber)

Head SHA: 40fea27d86d721ef3c3c1e682ed621599310b8df


Overall Assessment

✅ Looks good

No unmitigated P0/P1 findings in the current re-review scope. This diff is limited to citation metadata in CITATION.cff:L1-L10; it does not change any estimator, weighting, variance/SE, identification assumption, or default behavior. Re-review note: the prior dCDH-removal P1 findings are not present in this diff; the registry entry and implementation remain in docs/methodology/REGISTRY.md:L460, diff_diff/chaisemartin_dhaultfoeuille.py:L246, and diff_diff/prep_dgp.py:L1759.

Executive Summary

  • The current diff is metadata-only: CITATION.cff author, version, and release date.
  • No methodology surfaces are modified; no registry-backed estimator logic, inference, or assumptions changed.
  • The 3.0.1 / 2026-04-07 values in CITATION.cff:L9-L10 match pyproject.toml:L7-L13 and CHANGELOG.md:L25-L35.
  • Re-review note: earlier P1 findings about dCDH removal do not apply to the current diff; dCDH remains present in code and the methodology registry.
  • One informational issue remains: the preferred citation author in CITATION.cff now differs from other citation/metadata surfaces that still say diff-diff contributors.

Methodology

  • No findings. The PR only changes CITATION.cff:L1-L10 and does not touch estimator implementations, math, weighting, variance/SE, identification checks, or documented deviations in the registry.

Code Quality

Performance

  • No findings. Metadata-only change.

Maintainability

  • No findings.

Tech Debt

  • No findings. I did not identify any new deferrable technical debt that needs TODO.md tracking for this diff.

Security

  • No findings. The change is static citation metadata and does not introduce secrets, input handling, or execution surface.

Documentation/Tests

  • Severity: P3. Impact: Citation metadata is now internally inconsistent: CITATION.cff:L5-L10 names Isaac Gerber, while the user-facing citation snippet in README.md:L3026-L3037, the package metadata in pyproject.toml:L12-L14, and the docs/site author fields in docs/conf.py:L15-L19 and docs/_templates/layout.html:L4-L18 still say diff-diff contributors. Different consumers may therefore emit conflicting attribution. Concrete fix: At minimum, update the README Citing diff-diff block to match CITATION.cff. If uniform attribution is intended across all metadata surfaces, align pyproject.toml, docs/conf.py, and the JSON-LD template in the same PR; otherwise add a brief note that CITATION.cff is the authoritative preferred-citation source.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Apr 12, 2026
@igerber igerber merged commit 9a7b5c5 into main Apr 12, 2026
@igerber igerber deleted the docs/citation-update branch April 12, 2026 16:59
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