Know what the machine actually did.
Agents generate. Tools verify. release-gate assembles the argument those two leave behind and says whether it is sound enough to put to a person — one PROMOTE · HOLD · BLOCK, carrying the coverage it was reached under and a list of what still needs a human.
- Every claim resolved, with the rule that decided it — established, contradicted or not assessed. One counterexample outranks any number of passes.
- What it did not check, named —
NOT_ASSESSEDis never read as a pass. - A bounded list for a person — and, for each item, the evidence that would close it.
pip install release-gate && release-gate assure run.jsonl
Reads an OpenTelemetry trace, a Langfuse or Arize export, a promptfoo run, SARIF or its own records — the shape is detected, not declared.