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

# Lifecycle

> Runtime contract for the Vantage custom resource: reconcile phases, status conditions, and forcing a retry.

This page documents the runtime contract between you and the Vantage operator: the phases the operator runs through on every reconcile, the conditions it publishes back on the `Vantage` resource, and how to force a retry. For the field-level schema, see [API reference](/vantage/self-hosted/v3.0/api-reference). For the conceptual overview, see [Architecture](/vantage/self-hosted/v3.0/architecture).

## Reconcile phases

The operator's reconcile is structured as five sequential phases. Each phase contains validators or steps that must all succeed before the operator advances to the next phase. A failure in any step is fatal to the reconcile and surfaces on `status.degradationReasons[]`.

| # | Phase             | What happens                                                                                                                                                                                                                                                                                                   |
| - | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | **Preflight**     | Validates configuration. During preflight checks, secrets configuration is validated.                                                                                                                                                                                                                          |
| 2 | **Secrets**       | Ensures secrets-related resources exist for the configured secrets provider. For the Azure Key Vault provider, the operator provisions `SecretProviderClass` resources per chart; the Secrets Store CSI driver supplies the values to pods at startup. The operator does not materialize secret values itself. |
| 3 | **OCI Migration** | Runs the one-time job that copies Vantage artifacts from the ABBYY-distributed source registry into the destination registry declared on `spec.ociMigration.destination`. Skipped when `spec.ociMigration.enabled: false`.                                                                                     |
| 4 | **Installation**  | Generates ArgoCD `Application` manifests for each Vantage component from the workloads ConfigMap and applies them.                                                                                                                                                                                             |
| 5 | **Sync**          | Watches ArgoCD application status, surfaces per-component errors via `status.degradationReasons[]`, and updates the `Progressing`, `Ready`, and `Degraded` conditions accordingly.                                                                                                                             |

## Status conditions

The operator publishes installation state through condition types on `status.conditions[]`:

* **`Progressing`**: `status` is `True` while the process is ongoing.
* **`Ready`**: `status` is `True` on success.
* **`Degraded`**: `status` is `True` if an error is encountered at any point. In this case, `status.degradationReasons[]` contains the details of the error(s).

The Azure and self-managed installation procedures wait on `condition=Ready` (`kubectl wait --for=condition=Ready vantages.vantage.abbyy.com/$release_name`). `Ready` does not cover skill installation, which runs as a separate job (see below), and you should also verify the generated ArgoCD applications. See the [`Vantage.status` reference](/vantage/self-hosted/v3.0/api-reference#vantagestatus) for the full status schema.

### Skill installation runs separately

Skills are installed by a separate Kubernetes job in the install namespace, not by an ArgoCD application. The job is not surfaced via ArgoCD and is not reflected in the conditions above, so `Ready` does not indicate that skill installation has finished. You can use Vantage while the job is running.

Monitor the job directly:

```bash theme={null}
kubectl -n $install_namespace wait --for=create job/$install_namespace-skill-installer-job
kubectl -n $install_namespace wait --for=condition=Complete job/$install_namespace-skill-installer-job
```

## Forcing a retry

To retry installation (for example, after fixing a Key Vault permission), annotate the `Vantage` resource with `vantage.abbyy.com/reprocess` (any value):

```bash theme={null}
kubectl -n $install_namespace annotate vantages.vantage.abbyy.com/$release_name \
  vantage.abbyy.com/reprocess="$(date +%s)" --overwrite
```

The `Vantage` custom resource is mutable, but in order to retry installation of Vantage, the corresponding `Vantage` CR must be annotated with `vantage.abbyy.com/reprocess` (any value). Editing `spec.*` alone does not retry a failed install; after correcting the spec, apply the annotation to trigger the retry.

## What's next

<CardGroup cols={2}>
  <Card title="API reference" icon="code" href="/vantage/self-hosted/v3.0/api-reference">
    Field-by-field reference for every spec and status property.
  </Card>

  <Card title="Troubleshooting" icon="stethoscope" href="/vantage/self-hosted/v3.0/troubleshooting">
    Symptom → diagnosis → fix for common reconcile failures.
  </Card>
</CardGroup>
