Skip to content

Commit 889b24a

Browse files
igerberclaude
andcommitted
Address PR #356 CI review round 14 (1 P1 guide)
dCDH "spillover designs" claim removed. The earlier §4.3 bullet said ChaisemartinDHaultfoeuille was "robust to non-absorbing treatment and to spillover designs," but REGISTRY.md §ChaisemartinDHaultfoeuille only documents support for non-absorbing / reversible treatment — the estimator assumes SUTVA like every other DiD estimator in the suite. The same guide's §7 glossary already defines SUTVA as ruling out spillovers, so the §4.3 wording was internally inconsistent and would have misrouted interference designs to dCDH. Rewrote the §4.3 bullet to state the actually-supported contract (non-absorbing / reversible treatment via DID_M / DID_l) and added an explicit note that interference / between-unit spillovers are not supported natively. Regression test: `tests/test_profile_panel.py` extended with a forbidden-phrase check that fails if the autonomous guide re-advertises dCDH as "robust to spillover", "interference-robust", "supports spillover", or "and to spillover". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2ba1010 commit 889b24a

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

diff_diff/guides/llms-autonomous.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,9 @@ estimators:
339339
coefficients. Requires a never-treated cohort (`fit` raises a
340340
`ValueError` when none exists).
341341
- `ChaisemartinDHaultfoeuille` - DID_M / DID_l estimators robust to
342-
non-absorbing treatment (see §4.5) and to spillover designs.
342+
non-absorbing / reversible treatment (see §4.5). Interference /
343+
between-unit spillovers are not supported natively - SUTVA is
344+
assumed like every other DiD estimator in the suite.
343345
- `ImputationDiD` (Borusyak, Jaravel, Spiess) - imputation-based,
344346
efficient under homoskedasticity, produces an imputation-based
345347
residual at the observation level.

tests/test_profile_panel.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,22 @@ def test_guide_api_strings_resolve_against_public_api():
729729
"intolerant estimators"
730730
)
731731

732+
# ChaisemartinDHaultfoeuille handles non-absorbing / reversible
733+
# treatment; SUTVA is still assumed (no native interference or
734+
# spillover support per REGISTRY.md). Guard against the guide
735+
# drifting back to advertising dCDH as "robust to spillover
736+
# designs" or similar.
737+
for phrase in (
738+
"robust to spillover",
739+
"interference-robust",
740+
"supports spillover",
741+
"and to spillover",
742+
):
743+
assert phrase not in text, (
744+
f"Guide must not advertise unsupported dCDH capability "
745+
f"{phrase!r}: SUTVA is assumed across the estimator suite."
746+
)
747+
732748

733749
def test_min_pre_post_use_per_unit_observed_support():
734750
"""On an unbalanced panel where one treated unit is missing its

0 commit comments

Comments
 (0)