Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

 __     _______ ____  ___ _____ ___ _____ ____  _        _    ____  
 \ \   / / ____|  _ \|_ _|  ___|_ _| ____|  _ \| |      / \  | __ ) 
  \ \ / /|  _| | |_) || || |_   | ||  _| | |_) | |     / _ \ |  _ \ 
   \ V / | |___|  _ < | ||  _|  | || |___|  _ <| |___ / ___ \| |_) |
    \_/  |_____|_| \_\___|_|   |___|_____|_| \_\_____/_/   \_\____/ 

Verifier Assurance Lab

Stress-test graders, reward functions, and policy checkers under optimization — not another model leaderboard.

CI License Python Status

verifierlab · CLI: valab


Pitch

VerifierLab is a local-first lab for running reproducible campaigns that ask a hard question: when something is optimized against your verifier, does the verifier still do its job?

You wrap a grader or reward function, run ordinary baselines alongside optimized-tagged attack cohorts under declared budgets and access models, then rebuild reports from content-addressed artifacts after freeze → adjudicate → release-labels. Finding no exploit is evidence under those conditions — not a proof of correctness. This release candidate (0.2.0rc2) meets executable RC gates 1–6 in tests/test_acceptance_gates.py; do not claim soundness or SOTA verifier assurance. Honest gaps (default process-local trust boundary, research-grade attack depth) are listed in docs/limitations.md.

Why it exists

Modern agents and training loops lean on verifiers: graders, reward models, rubrics, policy checkers. Those components can be gamed — reward hacking, rubric gaming, eval cheating — and the failure modes only show up under pressure.

VerifierLab exists so you can:

  • Separate ordinary behavior from optimized-tagged attack cohorts
  • Keep runs reproducible with content-addressed artifacts and digests
  • Stay local-first: the base install has no PyTorch, Ray, Kubernetes, or model SDKs
  • Record budgets (queries, steps, wall time) instead of pretending attacks are free

Status

Release candidate (0.2.0rc2). Gates 1–6 are encoded and passing in tests/test_acceptance_gates.py (isolation, optimization, measurement, repair, reproduction, developer lifecycle). Core loop — workspace, process workers, typed decisions, broker metering with worker budget vouchers, vault v2, freeze→adjudicate→release, StatsPlan reports, packs A–F, and the offline tutorial — is implemented and tested. See docs/limitations.md and SECURITY.md. Optional adapters and launchers ship behind extras or explicit dry-run modes. APIs and CLI may still shift before 0.2.0.

Install

Requires Python >=3.11,<3.14. uv is recommended.

git clone https://github.com/fraware/verifierlab.git
cd verifierlab
uv sync --extra dev
# or: pip install -e ".[dev]"

uv run valab doctor
uv run valab --version

From a published package (when available on your index):

pip install verifierlab
valab doctor

Quick start

Offline refund tutorial (full lifecycle):

uv run valab init
uv run valab inspect examples.refunds.verifier:grade
uv run valab run campaigns/refund-blackbox.yaml
uv run valab campaign freeze .valab/runs/<run-id>
uv run valab campaign adjudicate .valab/runs/<run-id> --campaign campaigns/refund-blackbox.yaml
uv run valab campaign release-labels .valab/runs/<run-id>
uv run valab report builds .valab/runs/<run-id>

Faster smoke:

uv run valab campaign validate campaigns/fake-smoke.yaml
uv run valab campaign run campaigns/fake-smoke.yaml --processes

What you can do

Goal How
Wrap a verifier Decorate a grader with @verifier, then valab inspect MODULE:ATTR
Run a campaign valab run PATH or valab campaign run PATH (attack plane only)
Freeze, adjudicate, release freeze → adjudicate → release-labels before reports
Rebuild a report valab report builds RUN_DIR → HTML / JSON / CSV (post-release)
Compare a repair Call compare_repair in Python: regression corpus plus a mandatory fresh attacker
Plan sample size valab stats power for binomial power / n planning

Full CLI table: docs/cli.md.

Optional extras

Keep the base install light. Pull only what you need:

Extra Use
gym Gymnasium adapter
inspect Inspect AI adapter
harbor Harbor adapter (Python ≥3.12)
openenv OpenEnv adapter
nemo NeMo Gym HTTP client surface
objectstore S3-compatible object store
kubernetes Kubernetes launcher client
adapters Bundle of the adapter extras above
uv sync --extra gym
# or: pip install -e ".[gym]"

Details: docs/adapters.md.

Documentation

Doc Topic
Getting started Install and tutorial
Concepts Verifiers, cohorts, store, access models
Architecture Engine, store, run bundles
Methodology How to interpret campaign results
Attacks Built-in strategies
Labels and statistics Vault, freeze, error rates
Threat model Assets, boundaries, non-goals
Limitations What not to claim
Security policy Vulnerability reporting

Contributing

Contributions are welcome — new attack strategies, adapters, campaigns, docs, and bug fixes all help.

  • Read CONTRIBUTING.md for setup, PR expectations, and coding standards
  • Browse open issues, especially ones labeled for newcomers
  • Keep the base dependency graph light; heavy stacks belong behind extras
  • Follow the Code of Conduct
uv sync --extra dev
uv run ruff check src tests
uv run mypy
uv run pytest
uv run python scripts/check_base_imports.py

Security

Do not open public issues for security-sensitive reports. Prefer a private GitHub Security Advisory, or see SECURITY.md.

License

Apache-2.0.

Metadata

Release files for verifierlab 0.2.0rc2

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

Source distribution (sdist)

Source distribution for verifierlab 0.2.0rc2
File Size Uploaded
verifierlab-0.2.0rc2.tar.gz 275.5 kB Details

Built distribution (wheel)

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

Total release size: 507.3 kB

Release files / verifierlab-0.2.0rc2.tar.gz

Download URL verifierlab-0.2.0rc2.tar.gz
Size 275.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8bba821bca68501be8ca7398d99e04be7ab6223fe047946cb122f550f3c4e419
BLAKE2b-256 checksum
How to use checksums
25f1d4644bc6875a513ccb72791de050e933e90ac515eb5d8c52ff783656e91c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 26, 2026.

Transparency log

Release files / verifierlab-0.2.0rc2-py3-none-any.whl

Download URL verifierlab-0.2.0rc2-py3-none-any.whl
Size 231.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a053640ca7322b05cf0a5600a40747916fd2fd6ef8438f4671aef26f6150b19
BLAKE2b-256 checksum
How to use checksums
243769538bbeb08eeac979be9108ab65a3a00233f7e69342e8f4a692395016ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0rc2 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