You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Helm extractor (#338) delivered the template call-graph — {{ define }} named templates (Function 35), {{ include }} calls (CALLS 37), chart deps (DEPENDS_ON 2), verified on a real helm-charts repo. The values/render dataflow was out of that scope and is still missing:
.Values.* not linked to keys: 189 .Values.x.y accesses across 25 templates; only 36 CONFIGURES edges over 4 top-level keys; nested keys (image.tag, image.repository) do not exist as nodes (qualified_name CONTAINS 'values.tag' -> 0). The image value node has 0 edges. "Which templates consume image.tag?" and unused-value detection are impossible.
No image/env injection nodes:$.Values.image.repository, container env/envFrom/secretKeyRef not modeled; no string exposed for cross-repo image->producer matching.
What problem does this solve?
The Helm extractor (#338) delivered the template call-graph —
{{ define }}named templates (Function 35),{{ include }}calls (CALLS 37), chart deps (DEPENDS_ON 2), verified on a realhelm-chartsrepo. The values/render dataflow was out of that scope and is still missing:.Values.*not linked to keys: 189.Values.x.yaccesses across 25 templates; only 36CONFIGURESedges over 4 top-level keys; nested keys (image.tag,image.repository) do not exist as nodes (qualified_name CONTAINS 'values.tag'-> 0). Theimagevalue node has 0 edges. "Which templates consumeimage.tag?" and unused-value detection are impossible.kind/metadata.name->Resource) works on plain manifests — that is why one indexed repo has 54Resourcenodes. But in Helm charts thekind:sits inside{{ }}templating, sodaemonset.yaml/service.yaml/*-rbac.yamlfall through to genericModule/File(0 resource-kind nodes inhelm-charts). The feat(k8s): index Kubernetes manifests and Kustomize overlays as graph nodes #86 code path does not reach templated manifests.$.Values.image.repository, containerenv/envFrom/secretKeyRefnot modeled; no string exposed for cross-repo image->producer matching.helm.sh/hookannotations unmodeled;Role->RoleBinding->ServiceAccountsubject/roleRef edges absent.Proposed solution
Extend the Helm path in
internal/cbm/extract_k8s.c(which already owns both #86 manifests and #338 Helm):.Values.a.b.caccess chains into nested values-key nodes; emittemplate -[:CONFIGURES]-> valuesKey; reconcile againstvalues.yamlkeys.kind:even when the file contains{{ }}), so a HelmDeploymenttemplate maps to the sameResource-kind concept as a plain manifest.image:as a node (registry/repo/tag) + container env edges; expose the repo string for cross-repo matching.Hooknode (phase/weight fromhelm.sh/hook) and RBACRole/ClusterRole -[:GRANTS]-> RoleBinding -[:SUBJECT]-> ServiceAccount.Public OSS test beds:
prometheus-community/helm-charts,bitnami/charts(deep nested values, RBAC, hooks),grafana/helm-charts.Alternatives considered
helm templatethen parse rendered output: requires executing Helm; out of scope for a static parser.Confirmations