Skip to main content

release-gate

A machine produced something consequential. A human has to decide whether the evidence is enough to act on it. Release-gate builds the case they decide from.

It does not generate results and it does not verify them — agents generate, tools verify, and release-gate assembles the argument those two leave behind, then says whether that argument is sound enough to put to a person.

PyPI version License Benchmark Security Policy

pip install release-gate
release-gate assure your-run.jsonl        # no config file, no YAML, no account

That works on an OpenTelemetry trace, a Langfuse export, a promptfoo result, or release-gate's own record format — the shape is detected, not declared. You get a verdict, what a person has to look at, and what would resolve it.

Nothing to install first: drop a run into the browser demo — it runs this same engine, and its three sample runs are the files in examples/assurance/, byte for byte.

Or run the five worked examples — an OpenTelemetry agent trace, a promptfoo eval, a destructive migration, a research swarm, and one that promotes:

cd examples/agents && ./run-all.sh

What each one demonstrates →


Three things it does that a scanner or a score cannot

1. It reduces machine work to a list a person can actually read

Two million records is not reviewable. A score over two million records is not reviewable either — it is one number standing in for a judgement nobody made.

Release-gate returns a bounded set of things that need a human, derived from which claims the decision actually rests on:

distinct producers records seen evidence claims reaches a person
one agent, one action 4 7 6 0 1 item
10,248 workers 10,254 2,287,133 10,258 2,420 13 items, 7 undroppable

Every figure in that table is measured by the test suite, not written here by hand — a claim that drifts from the implementation fails a test.

Criticality comes from reachability in the claim graph, never from volume — a claim one agent emitted once is exactly as load-bearing as one four hundred agents discussed.

And a shorter list is not a better case. That is a property in code that cannot return anything else, because the one dangerous way to read this table is that a smaller number is a win. It can equally mean detection got worse.

2. Every verdict says what it did not check

This is the part most tools skip. A pass that doesn't state its own coverage is indistinguishable from a pass that never looked.

WHAT WAS ASSESSED
  [    assessed]  input_integrity: the input file was hashed by release-gate
  [    assessed]  record_mapping: 6 of 6 record(s) mapped; 0 skipped
  [NOT_ASSESSED]  execution_reconstruction: no execution graph was reconstructed
  [NOT_ASSESSED]  replication: no verification attempt names a target
  [NOT_ASSESSED]  adversarial_review: no verifier set out to disprove this

NOT_ASSESSED is a first-class answer, kept apart from "we looked and found nothing" everywhere in the engine. So is UNKNOWN, and so is a refuted check as against an unresolved one. Collapsing those is how a gap comes to read as a clean bill of health.

3. When it holds, it returns the work order

A gate that only says no is a nag. Each item comes with what would close it:

[BLOCK]    RG-ACT-001    'execution_reconstruction' is stated as NOT_ASSESSED
             → supply the run's trace or tool-call log

[ADVISORY] RG-PROV-002   all evidence traces to a single producer
             → add evidence from an independently-operated producer

That list is machine-readable (--json), so the next agent run can go and get the evidence rather than a human re-reading the case to work out what was missing.


What it will not tell you

Not that a release is safe. Not that a result is guaranteed correct. Not that the gate is unhackable — twenty attacks run against the engine itself and one is recorded NOT_DEFENDED with what bounds it instead. Not that a case is uncontested, that hallucinations are solved, or that an expert has been replaced: the output is a list of what needs a person.

Each refusal is a property in code that cannot return anything else. docs/POSITIONING.md names every one with the line that enforces it.


From Python

import release_gate as rg

case = rg.create_case(objective="Deploy generated migration", subject=migration)
case.add_execution(trace)                       # the steps, or a native trace
case.add_verification(test_result, method="TEST_SUITE", outcome="PASSED",
                      verifier="ci://pytest", against_subject=True)

decision = case.finalize()     # PROMOTE / HOLD / BLOCK, with its coverage attached
print(decision.required_evidence)

The same four calls carry one agent's migration and a ten-thousand-worker research run. Not two products with a shared name — one code path: 346 engine functions are common to both, 87% of everything the single-agent path touches.


Configuration

Nothing is required to run. A methodology is what turns structure into a verdict — without one, release-gate reports everything structural it can see and holds, because "is this enough?" is a domain question and inventing an answer would be claiming a standard it does not have.

release-gate assure --list-methodologies
release-gate assure run.jsonl --methodology research-mathematics@1.1.0

One input, four yardsticks, four answers — each naming what it is missing:

methodology verdict unmet
(none) HOLD METHODOLOGY_REQUIRED
general-autonomous-action@1.0.0 BLOCK no execution record
software-change@1.0.0 HOLD structural findings only
research-mathematics@1.1.0 BLOCK machine check, assumptions, independence

Organisation config (--config) layers your own standards on top and can only ever tighten.

📖 Full walkthrough: inputs, outputs, and what to configure →


We also do this

The assurance engine above is the product. These are separate lanes that feed it or stand on their own — each documented in its own place:

release-gate pr One verdict on what a pull request introduced — net-new agent risk only, inherited debt shown and never gated
Agent code scanning AST + taint analysis for the agent layer: model output reaching eval/pickle, prompt injection from RAG, uncapped LLM loops. 93-case corpus, 100% precision / 100% recall
Trace & eval ingestion OpenTelemetry · Langfuse · Arize-Phoenix · promptfoo convert in place — no bespoke file, no new instrumentation
Evidence packs A sealed, verifiable record of what was decided and on what
GitHub Action · MCP server pip install 'release-gate[mcp]'
Assurance corpus 16 constructed cases for the engine itself — publishes no headline precision figure, because on most of them precision is not a meaningful thing to measure

Docs

Demo & integration walkthrough inputs, outputs, configuration
Positioning every claim, and the line that enforces it
Architecture how the engine is put together
Reference full command and feature reference
Changelog release history
Contributing · Security

Development

git clone https://github.com/VamsiSudhakaran1/release-gate
cd release-gate && pip install -e '.[dev]'
pytest -q

License

MIT — see LICENSE.

Metadata

Release files for release-gate 0.11.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 release-gate 0.11.1
File Size Uploaded
release_gate-0.11.1.tar.gz 2.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for release-gate 0.11.1
File Interpreter ABI Platform
release_gate-0.11.1-py3-none-any.whl Python 3 none any Details

Total release size: 3.1 MB

Release files / release_gate-0.11.1.tar.gz

Download URL release_gate-0.11.1.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
853b650dac05b8dce06f5fca882f5ed631ac658a8a99b06e0cb63f6395f84fc8
BLAKE2b-256 checksum
How to use checksums
5b985572ab2bcdb6571c60415ddd0141aa9ece4a0464528c0e60ebcaa7153b76
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 Sep 29, 2026.

Transparency log

Release files / release_gate-0.11.1-py3-none-any.whl

Download URL release_gate-0.11.1-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d0b6866086aec34331d8f6ca29dcbe24d3e11cd6dbde0e5cb49708faa87c21df
BLAKE2b-256 checksum
How to use checksums
c8bf0747a3708f33960d64e07da7a9b9156b99dd1c0a9d58fa3d9e12adecc736
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 Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

0.13.0

2 release files

This release

0.11.1 This release

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

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