Contributor Checklist¶
Use this checklist before opening a contribution that adds or changes benchmark behaviour.
Estimators¶
- The estimator implements
BaseEstimator. - The estimator has a stable name and version.
- The target estimand is explicit.
- Assumptions and expected operating regimes are documented.
- Parameters are read from
EstimatorSpec.parameter_schema. - Short or degenerate signals return
valid=Falsewithfailure_reason. - Unexpected exceptions are captured as
exception:<type>:<message>. - Diagnostics are structured and JSON-serialisable.
- Estimator-level uncertainty support is documented.
- Tests cover at least one valid fit and one invalid fit.
Benchmark Outputs¶
- Any new report table has documented columns.
- Any public output surface change updates
configs/contracts/public_output_contract.json. lrdbench validate-output <run_root>still passes for smoke reports.- Changelog entries describe public-surface changes.
Documentation maintenance¶
Update documentation in the same pull request as the behavior it describes. If no update is needed, explain why in the pull request's documentation-impact section.
| Change | Review these sources and guides |
|---|---|
| Estimator equation, input, default or bound | Implementation and registry; parameter glossary; estimator status; migration notes |
| Metric, denominator, missingness or ranking | Evaluator/metric catalog/leaderboard; interpretation semantics; stress tutorial; output contract |
| CLI, manifest or dependency | CLI/schema and pyproject.toml; installation, quickstart and runnable examples |
| Stage order, module ownership or record lineage | Runner/execution/preprocessing; architecture; design specification; benchmark protocol; relevant workflow tests |
| Python schema or persisted outputs | Dataclasses and generated API reference; result store/reporter; Python and JSON output contracts; migration notes; output-contract tests and a generated smoke report |
| Research design, results or manuscript | Frozen protocol and audited exports; confirmation guide; current next steps; paper workflow |
| Release or archive publication | Actual release/deposit metadata; README; citation guidance; availability statements |
- Link to the central confirmation guide instead of repeating
experimental counts across status pages. Check its counts against
audit_evidence.jsonand its hashes againstexport_provenance.jsonwhen the referenced study changes. - Date status reviews. Mark old development logs as historical; never relabel an old result as having been produced by current source or rewrite frozen evidence in place.
- Keep released package behavior distinct from unreleased
main, and public source availability distinct from public deposition of the full raw results. - Regenerate affected manuscript assets from their sources and repeat numerical and visual checks. Do not manually patch generated values to make a claim agree.
- Run the strict documentation build. CI runs it on every push and pull request, but a passing build checks rendering and links, not whether prose is scientifically current.
- The output guide embeds the tracked JSON contract and the API reference renders source
definitions. Keep these generated references; review explanatory prose against stage order,
pairing, conditional outputs and fields that are not persisted.
validate-outputchecks minimum structure, not scientific completeness or archive integrity.
Validation commands¶
Run:
python -m ruff check .
python -m pytest
python -m mkdocs build --strict
python scripts/check_docs.py site
python -m build
python -m twine check --strict dist/*
python scripts/check_dist.py dist
For packaging or CLI changes, also install the built wheel in a temporary environment and run these checks outside the checkout:
lrdbench list-suites
lrdbench run smoke_ground_truth
lrdbench validate-output <result_store_printed_by_run>