Address residual P3 docs drift from re-audit of PR #408 by igerber · Pull Request #424 · igerber/diff-diff · GitHub
Skip to content

Address residual P3 docs drift from re-audit of PR #408#424

Merged
igerber merged 2 commits into
mainfrom
fix-audit-408
May 13, 2026
Merged

Address residual P3 docs drift from re-audit of PR #408#424
igerber merged 2 commits into
mainfrom
fix-audit-408

Conversation

@igerber

@igerber igerber commented May 13, 2026

Copy link
Copy Markdown
Owner

Summary

Audit follow-up to PR #408. The restored CI reviewer caught one actionable docs-drift item: stale mentions of "plug-in-only SE" and a `survey_design` mutex that #408 itself lifted.

  • CHANGELOG: The `paths_of_interest` entry's mutex list still named `survey_design` and `heterogeneity` in the by_path precondition gate. Both were lifted later in the same Unreleased cycle (Compose by_path / paths_of_interest with survey_design (Wave 4 #10) #408 lifted `survey_design`, dCDH by_path Wave 5 #11: + heterogeneity (predict_het per-by_level) #412 composed in `heterogeneity`). Update to reflect the shipped gate (`drop_larger_lower / L_max / design2 / honest_did` only) and call out the lifted mutexes explicitly.

  • `_compute_path_effects` docstring in `chaisemartin_dhaultfoeuille.py`: described SE only as "plug-in via `_plugin_se(...)`". Add a dedicated SE-formation section listing both the non-survey plug-in path and the new survey path (path-restricted per-period IF routed through `_survey_se_from_group_if`, replicate-weight `df_survey` propagation via `replicate_n_valid_list`, and the shared post-call `_refresh_path_inference` reconciling stored inference fields against the final `df_survey`).

  • `_compute_path_placebos` docstring: mirrored the same plug-in-only description. Add a parallel SE-formation section pointing back at `_compute_path_effects` for the shared survey contract.

No runtime behavior change - documentation accuracy only.

Test plan

  • CI - no test changes; no functional code changed.

🤖 Generated with Claude Code

Restored CI reviewer caught one actionable docs-drift item: stale
mentions of "plug-in-only SE" and a `survey_design` mutex that #408
itself lifted.

1. CHANGELOG paths_of_interest entry listed `survey_design` in the
   by_path precondition gate alongside `heterogeneity` / `design2` /
   `honest_did`. Both `survey_design` (lifted by #408) and
   `heterogeneity` (composed in by #412) have been removed from that
   gate. Update the parenthetical to reflect the shipped gate and
   note the lifted mutexes explicitly to avoid misleading readers
   about current behavior.

2. `_compute_path_effects` docstring described SE only as
   "plug-in via _plugin_se(...)". Add a dedicated SE-formation
   section listing the non-survey plug-in path and the new survey
   path (path-restricted per-period IF routed through
   `_survey_se_from_group_if`, replicate-weight df propagation via
   `replicate_n_valid_list`, and the shared post-call
   `_refresh_path_inference` reconciling stored inference fields
   against the final `df_survey`).

3. `_compute_path_placebos` docstring mirrored the same plug-in-only
   description. Add a parallel SE-formation section pointing back
   at `_compute_path_effects` for the shared survey contract.

No runtime behavior change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

The CHANGELOG paths_of_interest entry referenced
`chaisemartin_dhaultfoeuille.py:1118` for the by_path precondition
gate, but later edits (lifting the survey_design mutex in #408 and
composing in heterogeneity in #412) have drifted the actual gate
location to ~L1216. Drop the numeric anchor entirely and describe
the gate textually so future edits do not silently invalidate the
line reference.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

@igerber igerber added the ready-for-ci Triggers CI test workflows label May 13, 2026
@igerber igerber merged commit 73c2391 into main May 13, 2026
31 of 32 checks passed
@igerber igerber deleted the fix-audit-408 branch May 13, 2026 23:02
TDL77 pushed a commit to TDL77/diff-diff that referenced this pull request May 18, 2026
…ps + stale by_path gate list in CHANGELOG

Holistic re-audit of merged igerber#408 (compose `by_path` × `survey_design` Wave 4) + igerber#424 (post-merge docs-drift cleanup). Per-PR CI on igerber#424 couldn't see the combined post-PR holistic state. Local agentic codex review surfaced 2 sibling-surface test gaps + 1 real `[Unreleased]` CHANGELOG drift.

**Sibling-surface coverage**: igerber#408's Wave-4 PR shipped replicate-weight regressions for `by_path` (`test_per_path_replicate_se_finite`, `test_per_path_inference_refreshes_to_lower_final_df`) but the parallel `paths_of_interest` selector only had analytical / gate / unobserved-path tests under survey. Both selectors share the same `_compute_path_effects` and `_compute_path_placebos` IF code path, so the test gap was a selector-symmetry oversight, not a methodology gap. Added:

- `test_paths_of_interest_replicate_weight_per_path_se_finite` — pins finite per-horizon SE under Rao-Wu (JK1) AND the `_refresh_path_inference` contract (every per-path entry's `t_stat` matches `safe_inference` at the FINAL `df_survey`, not the per-path snapshot from before replicate-weight fits appended to the shared `_replicate_n_valid_list`).
- `test_paths_of_interest_survey_design_placebo_replicate_weight` — same invariants on the `_compute_path_placebos` branch.

**CHANGELOG drift**: the original `[Unreleased]` `by_path` entry (added when by_path first shipped) said `trends_linear`, `trends_nonparam`, `heterogeneity`, `design2`, `honest_did`, and `survey_design` all raise `NotImplementedError`. Each subsequent gate-lift PR shipped its own `[Unreleased]` entry, but none of them went back to update this original entry's stale gated-features list. Users reading the changelog in order get contradictory upgrade guidance. Rewrote the gates list to reflect actual current state: only `design2` + `honest_did` remain gated. Pre-existing single-CHANGELOG-cycle hygiene gap, surfaced by the igerber#408 holistic audit but applies independently of any specific subsequent PR.

Holistic pilot finding NOT addressed: phantom `heterogeneity was composed in` claim in igerber#424's CHANGELOG. That's correct in real main (igerber#412 lifted the heterogeneity gate), but appears as a code/doc mismatch in the pilot because pilot construction (per `feedback_holistic_pilot_true_merge_cherry_pick_pitfall`) is `igerber#408 + igerber#424 deltas only` and doesn't include intermediate sibling PRs like igerber#412. This is a structural limitation of the strict-delta pilot pattern — no fix-PR action needed in main.
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