> ## Documentation Index
> Fetch the complete documentation index at: https://infercrane.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Release Guard

> Compare active and candidate evidence with deterministic, persisted promotion policy.

# Release Guard

Release Guard is a deterministic, persisted comparison between an active revision and its candidate. It never uses an LLM to decide whether a candidate should be promoted.

<img src="https://mintcdn.com/infercrane/C0AXUr1932bcXspB/images/diagrams/release-guard.svg?fit=max&auto=format&n=C0AXUr1932bcXspB&q=85&s=6b80599551d36c0e0c03e94040b9e15c" alt="Animated Release Guard flow comparing persisted active and candidate evidence against deterministic policy before returning wait, reject, or accept." width="1200" height="430" data-path="images/diagrams/release-guard.svg" />

```console theme={"theme":{"light":"github-light-default","dark":"vesper"}}
infercrane rollout validate qwen-prod --acknowledge-validation-cost --wait
infercrane rollout inspect qwen-prod
infercrane rollout policy get qwen-prod
```

An evaluation returns one of three decisions:

* `ACCEPT`: enough evidence exists and every measured regression is within policy.
* `REJECT`: readiness failed, proven compatibility mismatches, or a measured regression exceeds
  policy.
* `WAIT`: the candidate is ready but there is not enough trustworthy evidence yet.

Release Guard V2 also supports exact model/runtime compatibility evidence, explicit synthetic
validation, sourced cost regression, and a bounded post-promotion automatic rollback window. Each
evaluation snapshots the exact policy, active and candidate metrics, reason codes, and revision
identities. Repeating an explanation therefore produces the same answer from stored evidence.

`infercrane rollout inspect DEPLOYMENT` renders the latest persisted active/candidate comparison as
a metric table and shows unavailable measurements explicitly. JSON output retains the complete
policy, measurements, reason codes, revision identities, and evaluation timestamp.

Missing measurements are not fabricated. Output throughput is compared only when both revisions report token usage. TTFT is required before acceptance. A candidate with no healthy ready replica is rejected immediately.

Endpoint Release Guard never applies one primary deployment's metrics to an arbitrary routing
graph. It currently qualifies single-primary comparisons, a primary change with an unchanged
`primary-fallback` graph, and an append-only managed fallback whose immutable policy includes
explicit privacy consent and hard request/cost reservations. Weighted changes or other unmeasured
topology changes persist `INCONCLUSIVE` with `serving_plan_topology_unqualified`; they cannot be
promoted until per-binding evidence exists.

Infrastructure can be healthy while model behavior has regressed. For quality-sensitive changes,
run a task-specific customer-owned evaluation and attach its
[signed aggregate evidence](/features/semantic-quality). Release Guard can require comparable
suite/evaluator versions, a minimum score, and a bounded regression. InferCrane still does not select
an LLM judge, retain evaluation prompts or outputs, or let an evaluator promote a revision.

Because a candidate is deliberately absent from the logical route, operators gather bounded
candidate evidence explicitly with AIPerf rather than duplicating production requests:

```console theme={"theme":{"light":"github-light-default","dark":"vesper"}}
infercrane rollout policy set qwen-prod \
  --require-compatibility \
  --require-synthetic \
  --auto-rollback \
  --auto-rollback-window 300 \
  --validation-max-requests 100 \
  --validation-max-concurrency 4

infercrane rollout validate qwen-prod \
  --requests 100 \
  --concurrency 4 \
  --acknowledge-validation-cost \
  --wait
```

Release Guard uses a persisted active/candidate benchmark pair only when tool version and workload
parameters match. The evaluation snapshot records `aiperf_benchmark` plus both benchmark IDs as its
evidence source. Otherwise it waits for comparable evidence instead of mixing measurements.

InferCrane does not silently duplicate inference requests. `rollout validate` prints a cost/privacy
notice, enforces persisted request and concurrency ceilings, runs AIPerf against each revision, and
then queues the durable evaluation. It does not retain prompts or generated output.

When automatic rollback is enabled, promotion retains the previous healthy capacity until the
persisted observation monitor reaches `ACCEPT` or `REJECT`. The monitor snapshots its policy and
deadline at creation, so a concurrent policy edit cannot silently weaken an in-flight decision. Rejection atomically restores the old
revision and target set, waits for its router generation, drains active streams safely, and deletes
only failed revision capacity. A restart resumes the same monitor and deadline.

After acceptance, issue an [Inference Passport](/features/inference-passports) to make the exact
revision and release evidence independently verifiable.
