Skip to main content

ReproKit

Executable minimal reproduction builder for Python and Node.js projects.

ReproKit starts from a project and a command that already fails. It repeatedly removes files, dependencies, and text while executing the command after every accepted reduction. The final .repro capsule is independently replayed and cryptographically checked before it is considered valid.

Quick start

Python 3.10+; Node is needed only for Node fixtures/projects. Runtime dependencies: none.

python -m pip install https://github.com/virajsabhaya23/reprokit/releases/download/v0.2.0/reprokit-0.2.0-py3-none-any.whl

python -m reprokit reduce examples/demo_project \
  --command "python -S app.py" \
  --out out/demo.repro \
  --report out/report.json \
  --junit out/report.junit.xml

Verify independently:

python -m reprokit verify out/demo.repro

Run the 20-case benchmark:

python -m reprokit benchmark benchmark/corpus.json \
  --out-dir benchmark/out \
  --report benchmark/results.json

What ReproKit implements

  • exact failing-command capture;
  • normalized deterministic failure signatures;
  • lexical Python/Node reachability pre-pass;
  • executable greedy file reduction;
  • executable dependency-line reduction;
  • executable chunk/line delta reduction;
  • timeout handling;
  • no-shell subprocess execution;
  • environment/tool provenance capture;
  • secret scanning that blocks unsafe exports by default;
  • portable .repro ZIP format;
  • SHA-256 file manifest + capsule hash;
  • safe ZIP extraction/path traversal defense;
  • independent replay verification;
  • JSON and JUnit reports;
  • deterministic Python/Node benchmark;
  • GitHub Actions, Dockerfile, and devcontainer.

Benchmark scope

benchmark/corpus.json contains 20 deterministic local reconstructions:

  • 10 Python cases anchored to BugsInPy project families;
  • 10 Node.js cases anchored to all ten BugsJS project families.

They validate reducer mechanics and failure preservation. They are not represented as direct archived checkouts of 20 upstream bugs.

Security model

ReproKit:

  • never invokes a shell;
  • sanitizes the environment passed to the failing command;
  • limits execution time;
  • blocks capsule creation when common secret patterns are detected unless explicitly overridden;
  • rejects path traversal when verifying a capsule.

A failing project is still untrusted code. Run third-party repositories inside a container/VM.

Limitations

  • v0.2 is file/text/dependency reduction, not language-AST minimization.
  • Failure identity is normalized exit code + output digest; nondeterministic failures may need a future custom oracle plugin.
  • The benchmark measures controlled local reduction, not maintainer acceptance rate or production adoption.

Metadata

Release files for reprokit 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reprokit 0.2.1
File Size Uploaded
reprokit-0.2.1.tar.gz 15.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for reprokit 0.2.1
File Interpreter ABI Platform
reprokit-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 32.1 kB

Release files / reprokit-0.2.1.tar.gz

Download URL reprokit-0.2.1.tar.gz
Size 15.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d073e23805a581a721e538ea628ca41bb0f7bc4d51530e41f15a414873094d83
BLAKE2b-256 checksum
How to use checksums
b9facf8ca716901392c06841b36b377f1d1913758fe39be8e6286961ca10e07d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / reprokit-0.2.1-py3-none-any.whl

Download URL reprokit-0.2.1-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ce7cd73551fe2f01d719b3d7c516fd09c38379332dab77f6bf2383bf926fed7
BLAKE2b-256 checksum
How to use checksums
d6757628d28b37a8050b113498160f89610af1c0d091f5541828312476427dad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page