ResolveFailed

Symptom
READY=False, REASON=ResolveFailed. The Message describes why resolution failed.
Cause
A stage’s sourceRef could not be resolved to an ExternalArtifact for a spec/config or API reason (distinct from “not published yet”, which is SourceNotReady, and “no such object”, which is ArtifactNotFound). Common cases:
- an ambiguous producer — more than one
ExternalArtifactback-points at the same producer object, so the target is undefined; - a cross-namespace ref rejected by
--no-cross-namespace-refs; - an API error reading the source or artifact (RBAC denial, the artifact CRD not installed).
When the failing sourceRef targets another namespace, the Message is deliberately scrubbed to cross-namespace <kind> %q is not reachable so tenants cannot fingerprint other namespaces — check that source CR’s status in its own namespace.
Diagnosis
kubectl describe stageset <name> -n <namespace>
# Ambiguity: are there multiple artifacts pointing at the producer?
kubectl get externalartifact -n <namespace> -o yaml | grep -A3 sourceRef
Remediation
- Ambiguous producer: ensure exactly one
ExternalArtifactback-points at the producer, or reference theExternalArtifactdirectly by name. - Cross-namespace rejected: move the source into the StageSet’s namespace, or run the controller without
--no-cross-namespace-refsif your tenancy model allows it. - RBAC / missing CRD: grant the controller (or the impersonated
serviceAccountName) read on the source kind, or install thesource-controllerCRDs.