Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
Cross-language covariate parity is layered - conventions bit-exact given R
inputs, LP solver proven optimal per tau, end-to-end results gated at
documented exact-tie selection bounds (see the REGISTRY Deviation note).
- **Dedicated `practitioner_next_steps()` handler for ChangesInChanges / QDiD.**
`ChangesInChangesResults` no longer falls through to the generic handler
(which recommends mean parallel-trends checks and HonestDiD - neither fits a
distributional 2x2 estimator with no event-study effects). The new handler
branches on the shared results class's `estimator` field and covariate
status: distributional identification screen (monotone-model /
time-invariance assumptions, not mean parallel trends), interior-range
guidance (unconditional CiC), conditional-envelope support guidance
(covariate CiC), the paper's CiC-over-QDiD recommendation (QDiD fits),
two-pre-period distributional placebo, sup-t uniform-band reading of the
QTE profile, with/without-covariates comparison, and cross-estimator
anchoring against mean DiD. Adds bootstrap-health warnings the shared
NaN-ATT check cannot see (inference disabled at `n_bootstrap=0`; replicate
failure above the 5% fit-time materiality threshold) and per-instance
display names ("ChangesInChanges (CiC)" vs "QDiD") for the shared results
class. Guidance-only change - no estimation or inference behavior touched.

### Changed
- `diff_diff/guides/llms-autonomous.txt` no longer lists regression discontinuity as
Expand Down
1 change: 0 additions & 1 deletion TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ generic sparse-FE, QR+SVD rank-detection redundancy, `check_finite` bypass — m
|-------|----------|--------|--------|----------|
| ChangesInChanges/QDiD tutorial notebook (2x2 distributional walkthrough: QTE grid, interior range, uniform bands, CiC-vs-QDiD comparison) - deferred from the implementation PR as a documented decision. | `docs/tutorials/` | #682 | Mid | Low |
| Tighten the mypy suppressions that back the enforced-zero posture: burn down `prep_dgp`'s per-module `[index]` override (needs a None-vs-array restructure that preserves the seeded RNG stream), and evaluate re-enabling the globally disabled codes (`arg-type`, `return-value`, `var-annotated`, `assignment`) one at a time — `assignment` alone hid several real annotation drifts found during the 2026-07 triage. | `pyproject.toml` `[tool.mypy]`, `diff_diff/prep_dgp.py` | lint-CI | Mid | Low |
| `practitioner_next_steps()` dedicated handler for `ChangesInChangesResults` (currently falls back to `_handle_generic`, which is safe; a dedicated handler is the established full-integration step, cf. HAD Phase 5). | `diff_diff/practitioner.py` | #682 | Quick | Low |
| Align the four legacy dataset loaders (`load_card_krueger`, `load_castle_doctrine`, `load_divorce_laws`, `load_mpdta`) with the loud-fallback pattern of `load_prop99`/`load_walmart`: `UserWarning` + `df.attrs["source"]` marker on synthetic fallback (currently silent), plus optional checksum pinning for the CSV downloads. **Upgraded to a live defect 2026-07-13: the `causaldata/causal_datasets` GitHub repo backing castle/card_krueger/divorce is dead (404), so those loaders silently serve synthetic data everywhere - needs loud fallback + replacement sources.** | `diff_diff/datasets.py` | LWDiD precursor | Quick | Medium |
| Real-data CI canary for dataset-backed replication tests: `test_methodology_lwdid.py`'s Prop 99 / Walmart goldens skip (visibly) when loaders fall back to synthetic; add a lane or canary asserting `df.attrs["source"] == "lwdid_ssc_ancillary"` in CI so network regressions cannot silently de-gate the replication tests. Pairs with the loader-fallback repair row above. | `tests/test_methodology_lwdid.py`, `.github/workflows/` | LWDiD validation suite | Quick | Low |

Expand Down
Loading
Loading