Skip to content

fix(estimation): replay estimation options in data-changing refits - #1524

Draft
s3alfisc wants to merge 16 commits into
fix/retained-estimation-storagefrom
fix/faithful-estimation-refits
Draft

fix(estimation): replay estimation options in data-changing refits#1524
s3alfisc wants to merge 16 commits into
fix/retained-estimation-storagefrom
fix/faithful-estimation-refits

Conversation

@s3alfisc

@s3alfisc s3alfisc commented Sep 5, 2026

Copy link
Copy Markdown
Member

Summary

Poisson CRV3 jackknife refits and slow randomization-inference refits now replay the original estimation options: weights, small-sample corrections, singleton handling, solver, demeaner, offset, and IRLS tolerances. A prebuilt LSMR preconditioner is the one deliberate exception: its factorization belongs to one fixed-effect design, so a refit keeps the variant but rebuilds it for the changed row set.

Review question: Does a refit replay the original specification?

Layer 8 of 9 replacing #1500/#1501; depends on #1523 (fix/retained-estimation-storage). The original PRs stay open until the replacement stack is validated.

Verification

  • Release contract: 1,355 passed.
  • Refit-contract tests: tests/test_ses.py and tests/test_ritest.py -k "replay or refit or estimation_contract or preconditioner" 3 passed; tests/test_estimator_state_lifecycle.py 55 passed.
  • Changed-file Ruff and mypy passed; whole-tree ruff-check/ruff-format hooks passed at this tip.

Exact targeted command: pixi run -e py312-r pytest tests/test_ses.py tests/test_ritest.py -q --no-cov -k "replay or refit or estimation_contract or preconditioner".

The repository's Python/R/docs workflow only runs for PRs targeting master; this stacked PR receives pre-commit CI only. Broad cumulative checks ran locally on the final replacement head (layer 9). Human review is required; no automatic merge.

…mation-refits

# Conflicts:
#	docs/changelog.qmd
#	docs/developer/architecture.md
…mation-refits

Adapt the refit layer to the hook-free base: the architecture note keeps
only this layer's refit-replay paragraph, because the base review removed
the `fixef()` and `IV_Diag()` sentence it was appended to. No code
adaptation was needed; the replayed options keep their attribute names.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant