Repository navigation
Releases: 00200200/repro-lens
Release list
v0.3.1 — notebook and global RNG checks
Repro Lens v0.3.1 packages the latest static reproducibility checks for ML projects.
What changed
- notebook-aware findings with cell locations
- decorator scope handling for reproducibility checks
- named dictionary resolution for framework configuration
- global RNG review rules R111–R114 for NumPy, Python, PyTorch and TensorFlow
Install from the tagged release
uv tool install 'git+https://github.com/00200200/repro-lens.git@v0.3.1'For pre-commit, pin the hook to v0.3.1.
The static scanner has no ML runtime dependency. It checks selected framework APIs and reports scoped evidence; a clean scan is not proof of scientific validity or cross-platform equivalence.
Validation
- 609 tests passed
- CI passed on Python 3.11, 3.12 and 3.13
- Ruff checks and formatting passed
- wheel and source distribution installed in isolated environments
- gallery build and XGBoost replay passed
SHA-256 checksums are included as SHA256SUMS-0.3.1.txt.
v0.3.0 — framework reproducibility checks
Repro Lens v0.3.0 brings the framework checks into the versioned CLI and pre-commit installation.
- Seven new checks cover selected XGBoost, LightGBM, PyTorch, TensorFlow and Lightning APIs. New warnings cover the XGBoost linear
shotgunupdater, enabled cuDNN benchmarking and explicitly nondeterministic TensorFlow generators. Settings that may be controlled elsewhere produce advisoryreviewfindings. - Inline framework parameter dictionaries and literal keyword expansions are recognized. Variable dictionaries and unresolved options remain review items.
- RNG calls in lambda default arguments are now checked; parameters from nested default lambdas no longer hide outer imports.
- A small framework demo shows each check before and after a configuration change, without importing an ML framework or running training.
Install with Python 3.11+ and Git:
uv tool install 'git+https://github.com/00200200/repro-lens.git@v0.3.0'Existing pre-commit users can change rev to v0.3.0. Review new findings before making them mandatory; args: [--fail-on, error] keeps warnings advisory during rollout. The attached wheel is another installation option. No runtime dependencies; not published to PyPI.
Validation: 352 tests, Python 3.11/3.12/3.13 CI, independent wheel and source-archive installations, both demos, and two tests plus replay in a generated scikit-learn project. New framework checks were validated statically; no new framework training benchmark is claimed.
These checks cover selected APIs, not whole frameworks. A clean scan does not establish repeatability or scientific validity. See the coverage matrix and agent review workflow.
v0.2.0
Repro Lens can now compare experiment outputs before and after a coding agent's change.
repro-lens compare before/report.json after/report.json --format jsonBoth inputs are retained reports from successful verify runs. Comparison reports metric and artifact differences, changed input hashes, and changes to the verification contract or recorded environment. It uses the same output comparison as replay, checks all four run pairs and does not execute project code.
The reproducibility skill now covers baseline capture, authorized edits and change review. Also included: an advisory rollout guide, a problem report form and reviewed scikit-learn examples.
Install:
uv tool install 'git+https://github.com/00200200/repro-lens.git@v0.2.0'Or install the attached wheel with pip. Python 3.11+; the CLI has no runtime dependencies. This release is available on GitHub, not PyPI.
Validation: 193 core tests, two generated-project tests, isolated wheel installation, skill launcher and before/after checks on the generated scikit-learn example. Reports are not authenticated, and matching recorded outputs do not prove scientific validity.
v0.1.1
Repro Lens checks selected randomness risks in Python ML code and compares declared outputs from two local experiment runs.
Install this release without cloning the repository:
uv tool install 'git+https://github.com/00200200/repro-lens.git@v0.1.1'See the quickstart for a missing-seed example and a runnable scikit-learn experiment. The README now includes an isolated pre-commit configuration.
This release also fixes:
- Integer precision and overflow in metric comparisons (#2).
- Missed findings and false alarms caused by mixed function scopes (#3).
- Ambiguous JSON results and lost error reports caused by nonfinite runtime metadata (#4).
Validation: 142 tests, two generated-project tests, copied quickstart examples, wheel and Git-source installation, remote pre-commit checks, and CI on Python 3.11–3.13. The generated experiment matched across both runs.
Static checks do not prove reproducibility. A replay match covers the declared outputs in the tested environment. The package is available through GitHub; it is not published to PyPI.
v0.1.0
First public release of Repro Lens.
- Import-aware checks for uncontrolled randomness in selected scikit-learn APIs and Python/NumPy RNG construction, with justified suppressions and JSON reports.
- Experiment replay in two separate processes, recording input hashes, logs, numeric metric comparisons and exact artifact comparisons.
- An isolated pre-commit hook, an Agent Skill and a runnable scikit-learn project template with a committed dataset and locked dependencies.
Validation: 69 checker/replay tests, two generated-template tests, an actual pre-commit installation, wheel installation, and CI on Python 3.11, 3.12 and 3.13. The example experiment matched across both runs.
Install the attached wheel with uv tool install ./repro_lens-0.1.0-py3-none-any.whl, or use the tagged source:
uv tool install 'git+https://github.com/00200200/repro-lens.git@v0.1.0'Use the hook in an existing pre-commit configuration:
repos:
- repo: https://github.com/00200200/repro-lens
rev: v0.1.0
hooks:
- id: repro-lensThis is an early release. Static checks do not prove reproducibility; a two-run match describes the declared outputs in the tested environment. Notebook cells, PyTorch and whole-program data flow are not covered. The package is not published to PyPI.