Docs · Science
Reproducibility
Pinned environments, seeds, records and manifests.
Environment
Dependencies are pinned in requirements.lock (generated by uv pip compile --extra all). The environment lock hash recorded in every manifest and record is sha256(requirements.lock).
uv venv && uv pip install -r requirements.lock && uv pip install --no-deps -e .qmint doctor --json --report reports/environment.jsonqmint doctor reports required and optional dependencies (optional ones show SKIPPED with the extra to install), drift from the lock, free disk, network and paid-hardware flags, merged lane entrypoints, and whether known credential variables are set — booleans only, never values.
Configuration
| Variable | Default | Effect |
|---|---|---|
| QMINT_ALLOW_NETWORK | off | Public-network access. Off: require_network raises; run_core also blocks sockets. |
| QMINT_ALLOW_PAID_HARDWARE | off | Paid QPU jobs. Off: require_paid_hardware raises. |
| QMINT_SEED | 42 | Base seed. Child streams use derive_seed(seed, label) (SHA-256, platform independent). |
| QMINT_ROOT | checkout | Repository root used for paths and manifests. |
Runs
python scripts/run_core.py --offline --seed 42runs every merged lane stage offline. Unmerged stages areSKIPPEDwith a reason; a failing stage stops the run (exit 1) unless--keep-going.--require-allturns skips into failure;--check-determinismruns each stage twice and fails on differing outputs. Writesrun_core_status.jsonandrun_core.manifest.json.python scripts/run_all.py --seed 42also runs real-data stages. It refuses (exit 2) unlessdatasets/manifestsdeclare real inputs underdatasets/cache/whose hashes verify. Fixtures are never substituted.python scripts/verify_manifest.py <dir-or-file>…re-hashes every manifest entry and the environment lock; exit 1 on any mismatch or missing file, 2 if no manifest is found.
Records
experiments/run_registry.jsonl is an append-only index; each record is stored at experiments/results/<id>.json. A record wraps one frozen contract payload (C0–C7), validated on write and read, with an evidence kind and provenance (git sha, environment-lock sha256, command, seed).
- Records are refused when the evidence kind or provenance is missing, the id exists, or issuer-secret material would be stored.
- Stochastic results without a reproducibility check are flagged
REPRODUCIBILITY_UNCHECKED; a same-seed rerun that differs is flaggedIRREPRODUCIBLE_STOCHASTIC_RESULT. - Logs are one JSON object per line, with credential-like keys, issuer secrets and credential values redacted.
Lane entrypoint convention
qmint.<pkg>.entrypoints may define cli_main(argv) -> int, run_core_stage(*, seed, out_dir) -> dict and run_realdata_stage(*, seed, out_dir, cache_dir) -> dict (returning {"outputs": [...]}), and may raise qmint.core.lanes.StageSkipped(reason). Missing modules print NOT_AVAILABLE (CLI exit 3).