apiVersion: "helm-expt.confighub.com/v1alpha1"
kind: "HelmPainReport"
metadata:
  name: "haproxytech-kubernetes-ingress-1.52.0"
spec:
  chart:
    name: "haproxytech/kubernetes-ingress"
    version: "1.52.0"
    source: "https://haproxytech.github.io/helm-charts"
    digest: "90920ec938be27e638b86e8267bde75d90058e61ca8c3c64ad27f05d0d5a73f1"
  supportedScopeStatus: "no-unhandled-pain-points-for-supported-scopes"
  supportedScopes:
    []
  supportedVariants:
    []
  productionReadiness: "not-reviewed-for-production"
  notes:
    - "haproxytech/kubernetes-ingress@1.52.0 renders deterministically under Kubernetes 1.30.0 with hooks and tests excluded."
    - "The default variant is intended as a proof baseline; production promotion still follows scan/gate review."
    - "Chart source contains Helm hooks; the proof revision uses no-hooks so hook lifecycle must be handled separately before production."
    - "Chart source contains lookup; future variants using lookup paths must bind target facts in the recipe."
    - "Chart source contains generated/random/time helpers; generated values must be captured before approval if activated by a variant."
    - "Chart source contains tpl; raw templating extension slots need explicit ownership and review."
    - "Rendered output includes cluster-scoped RBAC; production promotion needs RBAC review."
  painPoints:
    -
      id: "source-lock"
      detectedPainPoint: "source-lock requires source-lock.yaml"
      evidence:
        - "source-lock.yaml"
      configHubHome: "source-lock"
      disposition: "absorbed-into-recipe"
      linkedReceipt: "source-lock.yaml"
      supportedVariantStatus: "handled"
    -
      id: "dependency-lock"
      detectedPainPoint: "dependency-lock requires dependency-lock.yaml"
      evidence:
        - "dependency-lock.yaml"
      configHubHome: "dependency-lock"
      disposition: "absorbed-into-recipe"
      linkedReceipt: "dependency-lock.yaml"
      supportedVariantStatus: "handled"
    -
      id: "capability-profile"
      detectedPainPoint: "capability-profile is detected in this chart and mapped to a ConfigHub control point"
      evidence:
        - "control-points.yaml"
      configHubHome: "capability-profile"
      disposition: "handled-by-capability-profile"
      linkedReceipt: "revisions/default/r001/receipts/render-receipt.yaml"
      supportedVariantStatus: "handled"
    -
      id: "variant-revision"
      detectedPainPoint: "variant-revision requires revisions/default/r001/variant-revision.yaml"
      evidence:
        - "revisions/default/r001/variant-revision.yaml"
      configHubHome: "recipe"
      disposition: "absorbed-into-recipe"
      linkedReceipt: "revisions/default/r001/receipts/install-gate.yaml"
      supportedVariantStatus: "handled"
    -
      id: "rendered-manifest-scan"
      detectedPainPoint: "rendered-manifest-scan requires revisions/default/r001/receipts/scan-receipt.yaml"
      evidence:
        - "revisions/default/r001/receipts/scan-receipt.yaml"
      configHubHome: "scan-gate"
      disposition: "absorbed-into-recipe"
      linkedReceipt: "revisions/default/r001/receipts/scan-receipt.yaml"
      supportedVariantStatus: "handled"
    -
      id: "helm-equivalence"
      detectedPainPoint: "helm-equivalence requires revisions/default/r001/receipts/helm-equivalence-receipt.yaml"
      evidence:
        - "revisions/default/r001/receipts/helm-equivalence-receipt.yaml"
      configHubHome: "recipe"
      disposition: "absorbed-into-recipe"
      linkedReceipt: "revisions/default/r001/receipts/install-gate.yaml"
      supportedVariantStatus: "handled"
    -
      id: "target-facts"
      detectedPainPoint: "default proof render was deterministic under pinned inputs; future variants must bind lookup-driven facts explicitly"
      evidence:
        - "control-points.yaml"
      configHubHome: "target-fact-requirement"
      disposition: "handled-by-target-fact-values"
      linkedReceipt: "value-model.yaml"
      supportedVariantStatus: "source-signal-recorded"
    -
      id: "generated-facts"
      detectedPainPoint: "default proof render was deterministic; future generated material must be captured before approval"
      evidence:
        - "control-points.yaml"
      configHubHome: "generated-fact"
      disposition: "handled-by-generated-facts"
      linkedReceipt: "value-model.yaml"
      supportedVariantStatus: "source-signal-recorded"
    -
      id: "tpl-extension-slots"
      detectedPainPoint: "tpl use is recorded for review and variant analysis"
      evidence:
        - "control-points.yaml"
      configHubHome: "extension-slot"
      disposition: "needs-operator-decision"
      linkedReceipt: "revisions/default/r001/receipts/install-gate.yaml"
      supportedVariantStatus: "source-signal-recorded"
    -
      id: "lifecycle-policy"
      detectedPainPoint: "hook templates are excluded from the approved rendered object revision"
      evidence:
        - "no-hooks"
      configHubHome: "lifecycle-policy"
      disposition: "handled-by-lifecycle-policy"
      linkedReceipt: "revisions/default/r001/receipts/install-gate.yaml"
      supportedVariantStatus: "handled-by-no-hooks-proof"
    -
      id: "extension-slots"
      detectedPainPoint: "raw/extra manifest knobs require explicit variant ownership before promotion"
      evidence:
        - "control-points.yaml"
      configHubHome: "extension-slot"
      disposition: "needs-operator-decision"
      linkedReceipt: "revisions/default/r001/receipts/install-gate.yaml"
      supportedVariantStatus: "source-signal-recorded"
    -
      id: "cluster-rbac"
      detectedPainPoint: "cluster-rbac is detected in this chart and mapped to a ConfigHub control point"
      evidence:
        - "control-points.yaml"
      configHubHome: "scan-gate"
      disposition: "handled-by-scan-or-gate"
      linkedReceipt: "revisions/default/r001/receipts/scan-receipt.yaml"
      supportedVariantStatus: "scan-and-review"
    -
      id: "scan-gate"
      detectedPainPoint: "Current scan gate is warn-review-before-production"
      evidence:
        - "helm-plan.yaml"
        - "scan receipts"
        - "install gates"
      configHubHome: "scan-gate"
      disposition: "handled-by-scan-or-gate"
      linkedReceipt: "revisions/default/r001/receipts/install-gate.yaml"
      supportedVariantStatus: "warn-review-before-production"
    -
      id: "value-model-diagnostics"
      detectedPainPoint: "Helm values can be unknown, dead, misspelled, shadowed, or ignored unless the values model records the analysis boundary."
      evidence:
        - "value-model.yaml"
      configHubHome: "value-model"
      disposition: "absorbed-into-value-model"
      linkedReceipt: "value-model.yaml"
      supportedVariantStatus: "unknown=not-exhaustively-checked-in-next80-lane; dead=not-exhaustively-checked-in-next80-lane; ignored=not-exhaustively-checked-in-next80-lane"
  answerForSkepticalHelmUser: "haproxytech/kubernetes-ingress@1.52.0 maps its detected Helm pain to 10 ConfigHub control areas: source-lock, dependency-lock, capability-profile, recipe, scan-gate, target-fact-requirement, generated-fact, extension-slot, lifecycle-policy, value-model. Supported scopes have explicit variants, receipts, scans/gates, and control-point dispositions; production readiness remains not-reviewed-for-production."
