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

# Candidate Report • AI Agent SDK

> CandidateReport: Outcome of validating a candidate config *before* cutover.

# CandidateReport

> Defined in the [**config**](../modules/config) module.

<Badge color="blue">AI Agent</Badge>

Outcome of validating a candidate config *before* cutover.

Produced by :meth:`ReloadValidationProtocol.validate_candidate`: the
gateway builds/boots the candidate runtime in isolation (or a pre-flight)
and reports whether it is healthy enough to swap in. When `ok` is False
the live config keeps serving and the failures feed
:class:`~praisonaiagents.gateway.protocols.ReloadStatus.error` / `health()`.

Attributes:
ok: Whether the candidate built and passed pre-flight — only then may
the live runtime be drained and the candidate swapped in.
failures: Human-readable reasons the candidate was rejected (empty when
`ok`); joined into the reload `error` an operator sees.
candidate: Optional opaque handle to the already-built candidate runtime
the wrapper activates on success. Left untyped so core carries no
heavy runtime import; `None` when the runtime validates in place.

## Properties

<ResponseField name="ok" type="bool">
  No description available.
</ResponseField>

<ResponseField name="failures" type="'List[str]'">
  No description available.
</ResponseField>

<ResponseField name="candidate" type="Optional">
  No description available.
</ResponseField>

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/gateway/config.py#L320">
  `praisonaiagents/gateway/config.py` at line 320
</Card>
