diff --git a/internal/chart/v3/util/dependencies.go b/internal/chart/v3/util/dependencies.go index e28288663..dd778d1d3 100644 --- a/internal/chart/v3/util/dependencies.go +++ b/internal/chart/v3/util/dependencies.go @@ -216,11 +216,11 @@ Loop: // recursively call self to process sub dependencies for _, t := range cd { // When a dependency uses an alias, cvals[path][alias] may be missing keys - // that were coalesced into cvals[originalName] by ancestor CoalesceValues - // calls (which used the original chart name, not the alias). To correct - // this, we backfill any missing keys from the top-level entry into the - // nested path entry. The nested entry is authoritative: if a key exists - // in both, the nested (alias-keyed) value wins. + // that were instead placed in cvals[t.Metadata.Name] at the current values root by + // earlier CoalesceValues calls (which coalesce against the full values tree, not the + // path-scoped subtable). Backfill any missing keys into the path-scoped entry so + // condition checks see chart defaults; path-scoped values remain authoritative and + // win on conflicts. if path != "" { if pt, err := cvals.Table(strings.TrimSuffix(path, ".")); err == nil { if top, ok := cvals[t.Metadata.Name].(map[string]interface{}); ok {