Skip to content

docs(todo): waive the TWFE full-dummy dedup row (premise resolved by #655)#671

Merged
igerber merged 1 commit into
mainfrom
refactor/twfe-fulldummy-dedup
Jul 10, 2026
Merged

docs(todo): waive the TWFE full-dummy dedup row (premise resolved by #655)#671
igerber merged 1 commit into
mainfrom
refactor/twfe-fulldummy-dedup

Conversation

@igerber

@igerber igerber commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • Move the TWFE HC2/HC2-BM full-dummy dedup row from Actionable Backlog to Deferred -> Won't-fix/waived (decisions on the record), recording the scoping outcome.
  • The row's shared-helper half already shipped in refactor(utils): shared FE-dummy design build across DiD/MPD/TWFE #655: both the TWFE full-dummy branch and DiD's fixed_effects= branch delegate dummy construction, the drop-first convention, FE column naming, and the duplicate-term backstop to the single build_fe_dummy_blocks + validate_design_term_names implementation in utils.py - the FE-naming / survey-behavior drift risk the row targeted is gone.
  • The remaining full-delegation option (routing TWFE.fit through DiD's branch with cluster-default threading) would touch TWFE's user-visible result surface (coefficient-dict keys, cluster-label conventions, warning text) to dedup ~4 genuinely estimator-specific assembly lines; waived on cost/benefit.

Methodology references (required if estimator / math changes)

  • Method name(s): N/A - no methodology changes (TODO.md bookkeeping only)
  • Paper / source link(s): N/A
  • Any intentional deviations from the source (and why): None

Validation

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

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

Generated with Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_01Lbd6nqWmg4snvvBmegwqiw

…655)

Move the TWFE HC2/HC2-BM full-dummy dedup row from Actionable Backlog to
Deferred -> Won't-fix/waived. The shared-helper half of the row shipped in
#655 (build_fe_dummy_blocks + validate_design_term_names own dummy
construction, drop-first convention, FE naming, and the duplicate-term
backstop for both sites), which removes the drift risk the row targeted.
The remaining full-delegation option would touch TWFE's user-visible
result surface to dedup ~4 estimator-specific assembly lines; waived on
cost/benefit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Lbd6nqWmg4snvvBmegwqiw
@github-actions

Copy link
Copy Markdown

Overall Assessment

Looks good — no unmitigated P0/P1 findings.

Executive Summary

  • PR changes only TODO.md, moving the TWFE HC2/HC2-BM full-dummy dedup item from Actionable Backlog to documented waived work.
  • No estimator, variance, weighting, inference, defaults, or identification code changes are introduced.
  • The waiver is consistent with current source: TWFE and DiD both use build_fe_dummy_blocks() and the final duplicate-name guard.
  • The Methodology Registry already documents TWFE’s inline full-dummy route and why it is distinct from DiD’s fixed_effects= surface.
  • No security, performance, or test-blocking issues found.

Methodology

Finding: None.

  • Severity: None
  • Impact: No methodology behavior changes. The referenced methods are TwoWayFixedEffects HC2/HC2-BM and DifferenceInDifferences(fixed_effects=...), but the PR only changes TODO bookkeeping.
  • Concrete fix: None required.

Cross-check: Registry documents DiD full-dummy routing and TWFE’s inline full-dummy route, including TWFE-specific cluster/result-surface behavior at docs/methodology/REGISTRY.md:L3427-L3428. Current code shares dummy construction and name validation via diff_diff/utils.py:L220-L265, diff_diff/twfe.py:L360-L381, and diff_diff/estimators.py:L558-L570.

Code Quality

Finding: None.

  • Severity: None
  • Impact: No executable code changed; no new inline inference, NaN guard, parameter propagation, or control-group logic risk.
  • Concrete fix: None required.

Performance

Finding: None.

  • Severity: None
  • Impact: No runtime path changed. The waived full-delegation option is documentation-only and does not affect performance.
  • Concrete fix: None required.

Maintainability

Finding: TWFE dedup item is now recorded as waived/deferred.

  • Severity: P3 informational
  • Impact: Acceptable. The row is now under Won't-fix / waived, and the stated premise is supported by existing shared helper usage and tests.
  • Concrete fix: None required.

Reference: TODO.md:L146; helper coverage in tests/test_utils.py:L2084-L2127.

Tech Debt

Finding: Deferred work is properly tracked.

  • Severity: P3 informational
  • Impact: This is exactly the accepted deferred-work pattern: a prior actionable follow-up is moved into documented waived debt with rationale and PR/date attribution.
  • Concrete fix: None required.

Security

Finding: None.

  • Severity: None
  • Impact: TODO-only diff; no secrets, credentials, runtime inputs, or security-sensitive code paths changed.
  • Concrete fix: None required.

Documentation/Tests

Finding: No new tests added for the TODO move.

  • Severity: P3 informational
  • Impact: Acceptable for docs-only bookkeeping. Existing tests already cover the shared dummy builder and TWFE/DiD full-dummy consistency, including survey variants at tests/test_estimators_vcov_type.py:L1073-L1198.
  • Concrete fix: None required.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Jul 10, 2026
@igerber igerber merged commit 0925894 into main Jul 10, 2026
5 of 6 checks passed
@igerber igerber deleted the refactor/twfe-fulldummy-dedup branch July 10, 2026 18:13
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