Skip to content

docs(v4): PR 5a-ii of the 4.0 cut - migrate the documented readers of the overall_* field names to the canonical quintet - #874

Merged
igerber merged 1 commit into
mainfrom
feat/v4-pr5a-ii-docs-readers
Oct 26, 2026
Merged

igerber merged 1 commit into
mainfrom
feat/v4-pr5a-ii-docs-readers

Conversation

@igerber

@igerber igerber commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • 4.0 cut, PR 5a-ii (docs/v4-design.md section 9 item 5, the M-050..M-058 storage flip - reader half, documentation). Split from PR 5a because the combined review input exceeded the AI review budget; independent of 5a (different files, both based on main). Every documented READ of the 3.x overall_att / overall_se / overall_t_stat / overall_p_value / overall_conf_int names (and ContinuousDiD's overall_att_* spellings) on the nine flipping containers now reads the canonical att / se / t_stat / p_value / conf_int quintet. No behaviour change: the canonical names already resolve.
  • RTD pages (docs/*.rst, docs/api/*.rst; the executed snippets pass) and the one REGISTRY sentence that describes a read; the bundled llms-full / llms-practitioner / llms-autonomous guides (code examples and read-describing prose only - the field TABLES describe the stored surface and flip with the storage in PR 5b).
  • Tutorial code cells in 02, 09, 11-17, 24, 26, 29, 30, 32 (plus markdown in 14/19/24/32). Committed outputs are byte-identical except tutorial 18 cell 29, whose echoed practitioner_next_steps guidance string mirrors the PR 5a source change. The tutorial drift tests that mirror those notebooks (t19, t24, t26, t29, t32) read the canonical names, and tutorial 32's ALL_CODE_CELL_HASHES is re-pinned to the edited cells (6 of 15 hashes).
  • Benchmark scripts read the canonical names (attribute reads only - the "overall_att" / "overall_se" output-dict keys that compare_results.py and the R scripts exchange are an interface and stay); the carousel generator's code string.
  • Untouched by design: bootstrap_results.overall_att_se (tutorial 02) and the other bootstrap draw-container names, StaggeredTripleDiffResults readers, R / golden-JSON keys, ledger / spec / migration-guide prose.

Methodology references (required if estimator / math changes)

  • Method name(s): N/A - documentation, tutorials and benchmark scripts only; no diff_diff/*.py change.
  • Paper / source link(s): N/A
  • Any intentional deviations from the source (and why): None

Validation

  • Tests added/updated: the five tutorial drift tests above (reads + tutorial 32's hash pins). Run locally on this branch: doc gates (doc snippets, guides, docs IA, doc-deps, changelog fragments, tracking files), the six affected drift tests, and pytest --nbmake on the touched notebooks except 26 / 29 / 30 (the balance / pymc / meridian interop venvs; their cells are a pure attribute rename and the CI interop jobs execute them). Touched benchmark scripts: ruff check adds no new codes versus main.
  • Backtest / simulation / notebook evidence (if applicable): no re-execution needed - no committed output contains the renamed attribute (tutorial 18's one output string is the practitioner guidance text).

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/20261026-v4-pr5a-ii-docs-readers.md (### Internal)

Follow-ups

  • PR 5b (the storage flip) rewrites the guide field tables, the REGISTRY field-naming paragraph and the API autosummary stubs when the storage actually flips.

… the overall_* field names to the canonical quintet

Documentation half of cut-sequence item 5's reader migration (the M-050..M-058 storage
flip), split from PR 5a because the combined compiled review prompt exceeded the AI
review input cap. Every documented read of overall_att / overall_se / overall_t_stat /
overall_p_value / overall_conf_int (and ContinuousDiD's overall_att_* spellings) on the
nine flipping containers now reads att / se / t_stat / p_value / conf_int:

- RTD pages (docs/*.rst, docs/api/*.rst) and the REGISTRY prose that describes a read;
- the bundled llms-full / llms-practitioner / llms-autonomous guides (code examples and
  read-describing prose only - the field TABLES describe the stored surface and flip
  with the storage in PR 5b);
- tutorial code cells in 02, 09, 11-17, 24, 26, 29, 30, 32 (markdown in 14/19/24/32);
  committed outputs are byte-identical except tutorial 18's echoed practitioner guidance
  string, which mirrors the PR 5a source change;
- the tutorial drift tests that mirror those notebooks (t19, t24, t26, t29, t32), with
  tutorial 32's ALL_CODE_CELL_HASHES re-pinned to the edited cells;
- benchmark scripts (attribute reads only - the R-parity output-dict keys stay) and the
  carousel generator.

No behaviour change: the canonical names already resolve as properties. Bootstrap draw
containers (bootstrap_results.overall_att_se) and StaggeredTripleDiffResults readers are
untouched by design. Independent of PR 5a (different files, both based on main).
@github-actions

Copy link
Copy Markdown

Overall assessment: ✅ Looks good

No unmitigated P0, P1, or P2 findings identified.

Executive summary

  • Renamed readers preserve the existing inference values: all 45 properties across nine containers directly return their original fields; DMLDiD inherits the same contract.
  • No estimator formulas, weighting, variance, identification assumptions, or defaults change.
  • Benchmark interchange keys and bootstrap-container field names remain intact.
  • All 257 notebook code cells parse; Tutorial 32’s 15 hash pins match. Its six edited cells recover their previous hashes by reversing attribute renames alone.
  • Runtime tests could not run: this environment lacks pytest and the numerical dependencies.

Methodology

No findings. The migration agrees with the alias contract in docs/methodology/REGISTRY.md:L5. ContinuousDiD’s flat fields select the ATT side (diff_diff/continuous_did_results.py:L212-L231), while dCDH’s properties preserve stored bootstrap inference (diff_diff/chaisemartin_dhaultfoeuille_results.py:L857-L876). The changed registry notes retain their statistical meaning.

Code Quality

No findings. Reader substitutions use existing properties and introduce no inference recomputation, partial NaN guards, or parameter-propagation changes.

Performance

No findings. The changes add no substantive computation.

Maintainability

No findings. Examples consistently promote the intended canonical interface while preserving external benchmark schemas.

Tech Debt

No new untracked limitation identified. The retained storage-field tables match the explicitly described staged migration.

Security

No findings in the supplied changes.

Documentation/Tests

No findings. The per-PR changelog fragment is present, and the updated drift tests retain their numerical assertions. Static notebook and hash verification passed; estimator execution and notebook re-execution remain unverified locally because dependencies are unavailable.

@igerber igerber added the ready-for-ci Triggers CI test workflows label Oct 26, 2026
@igerber
igerber merged commit eb59806 into main Oct 26, 2026
43 of 44 checks passed
@igerber
igerber deleted the feat/v4-pr5a-ii-docs-readers branch October 26, 2026 23:05
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