π€ Generated by the Daily AI Engineer
Part of #5344 (GitOps shift-left fidelity β render all layers in-process).
Evidence & problem
workload validate/scan render HelmRelease charts offline (default-on) so the actual applied manifests are validated/scanned. Values come from spec.values + spec.valuesFrom ConfigMap/Secret refs resolved from the in-repo stream (pkg/svc/gitops/render/resolver.go). But a valuesFrom reference to a ConfigMap/Secret that isn't in the offline stream β typically a cluster-managed object β is silently dropped (applyValuesFrom, resolver.go !ok return): the chart still renders, but with incomplete values, so the offline output can differ from what Flux applies with no signal to the user. The shift-left gate reports success while its coverage silently diverged from cluster reality.
This is the same honesty gap the existing chart-source degradation channel already closes for chart sources (it warns when a chart source can't be resolved offline) β but it does not yet cover values.
Expected behaviour
When a non-optional valuesFrom reference cannot be resolved from the offline stream, emit a non-fatal warning naming the HelmRelease and the reference, so the user knows the render was partial and can act (vendor the values into the validated source, or mark the ref optional). An optional: true reference is Flux-tolerated (helm-controller ignores a not-found optional ref) and stays silent. No change to pass/fail, exit codes, or rendered output β warning only, on the existing degradation-reporting path.
Acceptance criteria
Size: S.
Part of #5344 (GitOps shift-left fidelity β render all layers in-process).
Evidence & problem
workload validate/scanrenderHelmReleasecharts offline (default-on) so the actual applied manifests are validated/scanned. Values come fromspec.values+spec.valuesFromConfigMap/Secret refs resolved from the in-repo stream (pkg/svc/gitops/render/resolver.go). But avaluesFromreference to a ConfigMap/Secret that isn't in the offline stream β typically a cluster-managed object β is silently dropped (applyValuesFrom,resolver.go!okreturn): the chart still renders, but with incomplete values, so the offline output can differ from what Flux applies with no signal to the user. The shift-left gate reports success while its coverage silently diverged from cluster reality.This is the same honesty gap the existing chart-source degradation channel already closes for chart sources (it warns when a chart source can't be resolved offline) β but it does not yet cover values.
Expected behaviour
When a non-optional
valuesFromreference cannot be resolved from the offline stream, emit a non-fatal warning naming the HelmRelease and the reference, so the user knows the render was partial and can act (vendor the values into the validated source, or mark the refoptional). Anoptional: truereference is Flux-tolerated (helm-controller ignores a not-found optional ref) and stays silent. No change to pass/fail, exit codes, or rendered output β warning only, on the existing degradation-reporting path.Acceptance criteria
valuesFrom(ConfigMap or Secret, incl. a specificvaluesKey) absent from the offline stream produces a distinct, accurate warning (not the misleading "skipped Helm render β¦ as-is" message).optional: trueunresolvablevaluesFromproduces no warning.valuesFromproduces no warning (no regression).validateandscan(shared render path).Size: S.