01 · Every six hours
Read the backups, not the dashboards.
The backup scan lists Velero Backup objects and
CloudNativePG Backup objects created in the last 48
hours (both configurable). It reads them straight from the cluster API, read-only.
Here: 14 Velero runs and 8 database backups in the window.
02 · Failed and partially failed
"Partially" failed is still failed.
Velero runs in Failed or
PartiallyFailed count. A partial failure often means
Velero saved the Kubernetes objects but not a volume. The volume is exactly the part you need for a restore.
The assistant groups runs by their Schedule, so seven failed nights become one finding, not seven.
03 · Gather the evidence
Errors, the schedule, and what git says it should be.
For each failing schedule the scan collects the error messages of the most recent runs and the Schedule's spec and status from the cluster. It also collects the Schedule and BackupStorageLocation manifests from your repository.
The error usually names the layer: storage credentials, bucket,
snapshot permissions, a node agent.
04 · Databases too
CloudNativePG backups, grouped per database cluster.
The assistant groups failed CNPG backups by the Cluster that owns them. It attaches the Cluster's status and its spec.backup block
(object store, credentials reference, retention) as context.
05 · Diagnose
A probable cause and concrete next steps.
An AI model (LLM) reads the evidence and writes a short diagnosis. It gives the most likely cause, what to check first and how to confirm the fix. If the analysis is unavailable, the assistant still opens the issue with the raw phase and error. It never drops the finding.
06 · An issue, not an MR
Backup fixes are too context-dependent to guess.
The assistant opens backup findings as issues, not draft merge requests (MRs). The issues carry the labels reliability and high risk. The fix is often outside git: a cloud permission, a bucket policy or a rotated key. A wrong storage change can make things worse.
That caution is earned. Once, removing a storage-location prefix to fix one error made the whole location invalid, because the bucket was shared. The full issue is below.
07 · When nothing fails Roadmap
No failed backup can also mean no backup.
If the BackupStorageLocation is Unavailable, Velero attempts nothing, so there is no failed backup to find. We plan to check the storage location itself and the age of the newest successful backup per schedule. Then silence no longer reads as health.
We also plan to flag runs whose volume snapshot list is empty when the
schedule includes volumes.
08 · From finding to fix Roadmap
MRs where the fix does live in git.
We plan draft MRs for schedule and retention changes, and for a missing BackupStorageLocation. The assistant will first check the actual layout of the bucket before it touches a prefix.
When an upgrade bumps a backup plugin, the assistant will also compare the cloud permissions that each version documents. Then a new required permission shows up in the upgrade MR, not in next month's failed restore.