You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Address thirteenth round of CI review findings on PR #318
- P1 CS ``not_yet_treated`` sample semantics:
``BusinessReport._extract_sample`` no longer maps
``CallawaySantAnnaResults.n_control_units`` to a generic
``n_control`` / "control" label when ``control_group=
"not_yet_treated"``. That field counts only never-treated units
(REGISTRY.md §CallawaySantAnna), while the actual comparison group
in that mode is the dynamic not-yet-treated set at each (g, t)
cell. New behavior: ``n_control`` is ``None`` for this mode,
``control_group`` and ``n_never_treated`` surface the real
semantics in the schema, and both ``summary()`` and ``full_report
()`` describe the dynamic comparison group instead of misreporting
a possibly-zero never-treated tally as "control". Default
``never_treated`` fits still render the fixed count unchanged.
- P3 ``_pt_hausman`` remediation hint: skipped-Hausman reason now
points to ``precomputed={'parallel_trends': ...}`` (the actual
PT precomputed key) rather than the prior misleading
``'sensitivity'`` alias.
- P3 source-of-truth wording: ``diagnostic_report.py`` module
docstring, ``REPORTING.md``, and ``llms-full.txt`` all now say
"no estimator fitting and no variance re-derivation" rather than
"no new statistical computation", and explicitly name the raw-
data utilities DR may call (``check_parallel_trends``,
``bacon_decompose``, ``EfficientDiD.hausman_pretest``) when the
caller supplies panel + column kwargs. Report-layer aggregations
remain enumerated in REPORTING.md.
- P3 docs consistency: ``docs/api/business_report.rst`` and
``diff_diff/guides/llms-practitioner.txt`` now show the raw-data
passthrough kwargs on ``BusinessReport(...)`` alongside the
README pattern, with an explicit note that data-dependent checks
are skipped otherwise.
- Regressions: ``TestCSNotYetTreatedControlGroupSemantics`` covers
both the ``not_yet_treated`` path (suppressed ``n_control``,
``control_group`` + ``n_never_treated`` populated, prose mentions
"not-yet-treated" / "dynamic") and the default ``never_treated``
path (fixed count preserved).
134 targeted tests passing (BR + DR); guides fingerprint test
still clean (18 ``test_guides`` tests pass, confirming the UTF-8
fingerprint in ``llms-full.txt`` remains intact after the prose
edit); black / ruff / mypy clean on BR/DR modules.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments