Skip to content

Release digest/ownership status is not reliably observable, and chart URL drift goes undetected #382

Closed

Description

@jonasz-lasut

What happens

  • status.atProvider.digest and ownershipTaken are set during Create, but crossplane-runtime reverts any status written during Create when it persists critical annotations (pkg/reconciler/managed/reconciler.go), so both are lost. generateObservation additionally zeroes ownershipTaken on every Observe, so the re-adoption guard only holds for one poll after each upgrade.
  • isUpToDate never compares spec.forProvider.chart.url, so changing the chart URL on a URL-only deployment is never detected as drift.

Proposed fix

Persist the deploy facts as helm release labels - helm stores them on the release Secret atomically with the deploy and returns them on read:

  • release.helm.crossplane.io/digest-hash, .../url-hash, .../ownership-taken

Observe rehydrates status.atProvider from the labels (with a fallback for releases deployed before label support), and isUpToDate compares the url-hash label against the spec URL to detect URL drift.

Environment

provider-helm main (post helm-v4), helm.sh/helm/v4 v4.2.3, crossplane-runtime/v2 v2.3.3.

Activity

  1. added a commit that references this issue on Aug 18, 2026
    8468bb8
  2. self-assigned this
    on Sep 10, 2026
  3. added a commit that references this issue on Sep 24, 2026
    c3bd4bb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions