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
R14 verdict ✅ Looks good with one P2 BR-schema-gap + a P3 fan-out
of stale "MDV vs ATT" prose that the R12 level-scale fix needed to
sweep through but missed.
**P2 — `_lift_pre_trends` dropped `max_abs_pre_violation`**
R12 added `max_abs_pre_violation` to the `DiagnosticReport` schema
and wired the `BusinessReport.full_report()` renderer to print it,
but the BR schema-lift helper at `business_report.py:884` did NOT
carry the field across the DR → BR boundary. Net effect:
`BR.to_dict()["pre_trends"]` was missing the field AND
`full_report()`'s `pt.get("max_abs_pre_violation")` returned None,
so the new "Max pre-period level deviation at MDV" line never
actually rendered.
Fix: add `"max_abs_pre_violation": pp.get("max_abs_pre_violation")`
to the `_lift_pre_trends` return dict. New BR end-to-end regression
asserts both `BR.to_dict()["pre_trends"]["max_abs_pre_violation"]`
is populated AND `full_report()` contains the rendered line.
**P3 — Stale "MDV / |ATT|" prose in 4 surfaces**
R12 moved the tier numerator from raw `mdv` to `max_abs_pre_violation`
but several user-facing prose surfaces still said the comparison
was between "MDV" and "estimated effect" — wording lag, not a
behavioral bug.
1. `business_report.py:2167` "the test is well-powered" summary
sentence: reworded to say "the max pre-period level deviation at
the MDV is small relative to the estimated effect" rather than
the bare "minimum-detectable violation is small".
2. `diagnostic_report.py:3284` DR "no_detected_violation /
well_powered" sentence: same swap from "MDV is a small share of
the estimated effect" to "the max pre-period level deviation at
the MDV is a small share".
3. `PreTrendsPowerResults.violation_weights` docstring: reworded to
enumerate per-violation_type normalization explicitly (linear
with-times γ-unit; linear legacy L2-norm; constant unnormalized
level-shift; last_period level; custom L2-norm).
4. `PreTrendsPowerResults.max_abs_pre_violation` property docstring
(the non-linear-types paragraph): updated to reflect the R13
constant-level-shift change (`mdv * 1 = mdv` rather than the old
`mdv / √K`).
Plus the autosummary RST adds the new
`~PreTrendsPowerResults.max_abs_pre_violation` property entry so
the published API page lists it.
R-parity P3 deferred to PR-C per the existing TODO row.
591 tests pass; no code-path regressions. The new BR regression
catches the lift-boundary bug if it ever regresses.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments