Skip to content

docs(v4): item 9 of the 4.0 cut - diagnostic-family roster reorganization (M-090 done) - #884

Open
igerber wants to merge 1 commit into
mainfrom
feat/v4-pr9-m090-docs-reorg
Open

igerber wants to merge 1 commit into
mainfrom
feat/v4-pr9-m090-docs-reorg

Conversation

@igerber

@igerber igerber commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Item 9 of the 4.0 cut - [M-090] flips to done: the public surface splits into estimators + the diagnostic family (spec section 3.5). BaconDecomposition leaves every estimator catalogue for the Diagnostics grouping - README ## Estimators -> ## Diagnostics & Sensitivity, llms.txt ## Estimators -> ## Diagnostics and Sensitivity Analysis, the llms-full.txt ### BaconDecomposition block (together with ### TWFE Weight Diagnostics, ### RDPlot and ### RDDensityTest, which were also filed under ## Estimators) -> ## Diagnostics plus the alias line, the docs/api/index.rst Estimators autosummary (now exactly the 23 spec-3.1 estimators) -> the Diagnostics autosummary (RDPlot consolidated there from Visualization; the bacon module page moves to the Diagnostics & Inference toctree), and the docs homepage Supported Estimators table (Bacon row dropped; new Diagnostics & Sensitivity table listing BaconDecomposition, RDPlot, RDDensityTest, HonestDiD, PreTrendsPower, PowerAnalysis, DiagnosticReport, the parallel-trends / placebo / TWFE-weight functions and the HAD pretest workflow). docs/api/bacon.rst and docs/api/estimators.rst stop calling Bacon an estimator. Docs-only: the import path, the Bacon alias, the results class and every number are unchanged. Homepage counts stay "20+"; paper.md is untouched (it already states 23 estimators with Bacon outside the count).
  • REGISTRY archive framing for the classes removed at 4.0: the MultiPeriodDiD and StaggeredTripleDifference sections and the QDiD class-spelling subsection open with an archive Note, the table of contents marks them (archived) and states the archived-sections convention, the cross-reference tables name ChangesInChanges(method="qdid") instead of a standalone QDiD row, and the stale "20-estimator count" wording is gone. The migration guide gains the [M-090] bullet.
  • Ledger row M-090 -> done with test_ref tests/test_v4_diagnostic_family_docs.py; the guard runs in the docs-tests workflow, whose path filters now include README.md and the test file so README-only diffs reach it. docs/doc-deps.yaml points the diagnostic modules at the new homepage table; the /docs-check classification table files Bacon as a diagnostics-class entry; spec section 3.5 and cut item 9 record the ship. The committed SunAbrahamResults autosummary stub picks up the n_clusters field added at 7b (the Sphinx -W build regenerated it).

Methodology references (required if estimator / math changes)

  • Method name(s): N/A - no estimator or math changes. Documentation roster reorganization only (spec section 3.5, ledger row M-090).
  • Paper / source link(s): docs/v4-design.md section 3.5 (the diagnostic family) and section 3.1 (23 estimators + 1 diagnostic entry point).
  • Any intentional deviations from the source (and why): None. REGISTRY sections for the removed classes are kept verbatim (archive Notes, TOC markers and one convention paragraph only).

Validation

  • Tests added/updated: new tests/test_v4_diagnostic_family_docs.py (M-090 test_ref: API Estimators autosummary == the 23-class roster by object identity, Bacon/RDPlot/RDDensityTest under Diagnostics, no stub referenced from two :toctree: autosummaries, bacon module page in the Diagnostics & Inference toctree, homepage estimator table without Bacon + Diagnostics table == the family's class-backed entry points, README / llms.txt section placement and 23-bullet counts, llms-full.txt block placement and alias line, REGISTRY archive Notes / TOC markers / convention paragraph / no standalone QDiD row, ledger row). Existing docs gates (test_docs_ia.py homepage-API parity, test_guides.py, test_v4_matrix.py, test_doc_deps_integrity.py, test_naming_guard.py, test_tracking_files.py, test_changelog_fragments.py) and the diagnostic-consumer suites (test_diagnostic_marker.py, test_practitioner.py, test_business_report.py, test_diagnostic_report.py) green.
  • Backtest / simulation / notebook evidence (if applicable): Sphinx HTML build with -W green (the autosummary moves and the new homepage table raise no warnings). No notebook changes.

Security / privacy

  • Confirm no secrets/PII in this PR: Yes

Changelog

  • changelog.d/ fragment added (or N/A - no user-visible change): Yes (changelog.d/20261101-v4-pr9-m090-docs-reorg.md)

…tion (M-090 done)

BaconDecomposition leaves every estimator catalogue for the diagnostics
grouping: README `## Estimators` -> `## Diagnostics & Sensitivity`,
llms.txt `## Estimators` -> `## Diagnostics and Sensitivity Analysis`,
the llms-full.txt `### BaconDecomposition` block (with `### TWFE Weight
Diagnostics`, `### RDPlot` and `### RDDensityTest`, which were also filed
under `## Estimators`) -> `## Diagnostics`, plus the alias line; the
docs/api/index.rst Estimators autosummary (now exactly the 23 spec-3.1
estimators) -> the Diagnostics autosummary, with RDPlot consolidated
there from Visualization and the `bacon` module page moved to the
Diagnostics & Inference toctree; the docs homepage Supported Estimators
table drops the Bacon row and gains a Diagnostics & Sensitivity table
(BaconDecomposition, RDPlot, RDDensityTest, HonestDiD, PreTrendsPower,
PowerAnalysis, DiagnosticReport, the parallel-trends / placebo /
TWFE-weight functions, the HAD pretest workflow). The Estimators and
Diagnostics intros describe the split; docs/api/bacon.rst and
docs/api/estimators.rst stop calling Bacon an estimator. Docs-only: the
import path, the `Bacon` alias, the results class and every number are
unchanged. Homepage counts stay "20+" (user decision); paper.md is
untouched (it already states 23 estimators with Bacon outside the
count).

REGISTRY archive framing for the classes removed at 4.0: the
MultiPeriodDiD and StaggeredTripleDifference sections and the QDiD
class-spelling subsection open with `- **Note (archived ...):**`, the
table of contents marks them *(archived)* and states the
archived-sections convention, the two cross-reference tables name
`ChangesInChanges(method="qdid")` instead of a standalone QDiD row, and
the stale "20-estimator count" wording is gone. The migration guide
gains the [M-090] bullet under "Remaining 4.0 changes".

Ledger: M-090 -> done with test_ref tests/test_v4_diagnostic_family_docs.py
(the roster split on README, llms.txt, llms-full.txt, docs/index.rst,
docs/api/index.rst - incl. a duplicate-toctree-stub guard - and the
REGISTRY archive framing; ledger row). The guard runs in the docs-tests
workflow, whose path filters now include README.md and the test file so
README-only diffs reach it. docs/doc-deps.yaml points the diagnostic
modules at the new homepage table and refiles Bacon's README/llms.txt
sections; the /docs-check classification table files Bacon as a
diagnostics-class entry; spec section 3.5 and cut item 9 record the
ship. The committed SunAbrahamResults autosummary stub picks up the
n_clusters field added at 7b (Sphinx -W build regenerated it).
@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Overall assessment

✅ Looks good — no unmitigated P0/P1 findings or actionable P2/P3 issues identified.

Executive summary

  • Changes affect documentation, tracking metadata, tests, and CI; estimator calculations and inference remain unchanged.
  • Bacon’s diagnostic classification agrees with the Methodology Registry and the Goodman-Bacon (2021) paper review.
  • Static checks confirmed the 23-estimator rosters, diagnostic placements, archive framing, and CI wiring.
  • Changelog validation passed. Runtime tests and the Sphinx build could not run because required dependencies are unavailable.

Methodology

No findings. The reclassification matches docs/methodology/REGISTRY.md:L6404-L6416 and the paper’s decomposition contract. Archive notes distinguish removed class names from their supported replacements without changing methodological requirements.

Code Quality

No findings. The new guards cover catalogue membership, duplicate autosummary entries, section placement, and ledger status.

Performance

No findings. Production execution paths are unchanged.

Maintainability

No findings. Documentation dependency mappings and workflow triggers include the reorganized surfaces and new guard.

Tech Debt

No findings. No new untracked limitation identified.

Security

No findings in the changed content.

Documentation/Tests

No findings. Static validation passed for roster consistency, diagnostic grouping, referenced paths, archive notes, and workflow wiring. changelog_compile.py check also passed.

Verification limitation: pytest, NumPy, pandas, SciPy, and Sphinx are unavailable in this environment, so the reported test-suite and Sphinx-build results were not independently reproduced.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Nov 1, 2026

This branch has not been deployed

No deployments
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