apiVersion: "helm-expt.confighub.com/v1alpha1"
kind: "ChartArtifactIndex"
metadata:
  name: "hashicorp-consul-2.0.0"
  chart: "hashicorp/consul"
  version: "2.0.0"
  generatedBy: "scripts/generate-chart-catalogs.mjs"
spec:
  doctrine: "1 Helm chart version -> 1 core recipe -> N variants -> M variant revisions -> package bases -> receipts"
  chart:
    ref: "hashicorp/consul"
    version: "2.0.0"
    appVersion: "2.0.0"
    sourceLock: "recipes/hashicorp/consul/2.0.0/source-lock.yaml"
    dependencyLock: "recipes/hashicorp/consul/2.0.0/dependency-lock.yaml"
    repository: "https://helm.releases.hashicorp.com"
    packageSHA256: "41d0b30408cd3dbbfdafe5207f85d29111636d105dd17dba005ff5c857647dc0"
  recipe:
    path: "recipes/hashicorp/consul/2.0.0/recipe.yaml"
    importMode: "render-and-vendor"
    helmPlan: "recipes/hashicorp/consul/2.0.0/helm-plan.yaml"
    chartDossier: "recipes/hashicorp/consul/2.0.0/chart-dossier.yaml"
    controlPoints: "recipes/hashicorp/consul/2.0.0/control-points.yaml"
    valueModel: "recipes/hashicorp/consul/2.0.0/value-model.yaml"
    weirdnessAndMitigations: "recipes/hashicorp/consul/2.0.0/weirdness-and-mitigations.md"
    helmPainReport: "recipes/hashicorp/consul/2.0.0/helm-pain-report.yaml"
    controlPointCategories:
      - "admission-webhook"
      - "capability-profile"
      - "cluster-rbac"
      - "crd-ownership"
      - "dependency-lock"
      - "extension-slots"
      - "installer-support-object"
      - "lifecycle-policy"
      - "mesh-gateway-policy"
      - "namespace-references"
      - "source-lock"
      - "stateful-workload"
      - "target-facts"
      - "target-topology"
      - "ui-ingress-policy"
  catalogStatus:
    path: "recipes/hashicorp/consul/2.0.0/catalog-status.yaml"
    status: "catalog-supported"
    supportLevel: "supported-for-declared-scopes"
    supportedScopes:
      - "local-test"
    productionReadiness: "production-review-ready"
    supportedVariants:
      - "default-control-plane"
      - "secure-mesh-existing-secrets"
    candidateVariants:
      []
    deferredVariants:
      []
  proofSummary:
    adoptionBucket: "try-from-public-catalog"
    userStatus: "catalog-supported-with-live-evidence"
    strongestEvidence: "live-helm-vs-confighub-parity"
    proofLanes:
      renderParity: "2/2"
      inConfigHub: "2/2"
      localLive: "1/2"
      gitopsLive: "1/2"
      liveParity: "1/2"
    featureSummary: "webhooks;required-values;install-vs-upgrade;extension-slots"
    hardGap: "ha (curated proof lane - bespoke teaching needed)"
    nextAction: "image policy decision recorded for a target scope; create digest-pinned bases or overrides for stricter scopes"
  installerPackage:
    path: "packages/hashicorp/consul/2.0.0"
    ociRef: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/hashicorp-consul:2.0.0"
    installer: "packages/hashicorp/consul/2.0.0/installer.yaml"
    receipt: "recipes/hashicorp/consul/2.0.0/publication/installer-package-receipt.yaml"
    deterministicBundleSHA256: "0ea3237ab96fd85b83b976a6c824c63f2b48168ac4543903d1e9dc21ccb5aa43"
    deterministicAcrossTwoLocalBundles: true
    bases:
      -
        name: "default-control-plane"
        path: "packages/hashicorp/consul/2.0.0/bases/default-control-plane"
        default: true
        description: "consul default control plane variant rendered from hashicorp/consul@2.0.0"
      -
        name: "secure-mesh-existing-secrets"
        path: "packages/hashicorp/consul/2.0.0/bases/secure-mesh-existing-secrets"
        default: false
        description: "consul secure mesh with existing Secrets variant rendered from hashicorp/consul@2.0.0"
  variants:
    -
      name: "default-control-plane"
      variant: "recipes/hashicorp/consul/2.0.0/variants/default-control-plane/variant.yaml"
      namespace: "consul"
      releaseName: "consul"
      valuesProfile: "recipes/hashicorp/consul/2.0.0/effective-values.yaml"
      capabilityProfile:
        apiVersions:
          []
        kubeVersion: "1.30.0"
      hookPolicy: "no-hooks"
      targetFacts:
        {}
      targetFactSummary: "none"
      packageBase:
        name: "default-control-plane"
        path: "packages/hashicorp/consul/2.0.0/bases/default-control-plane"
        default: true
        description: "consul default control plane variant rendered from hashicorp/consul@2.0.0"
      setupCheck:
        command: "cub installer setup --pull oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/hashicorp-consul:2.0.0 --base default-control-plane --work-dir <tmp> --non-interactive --namespace consul"
        helmReleaseObjectCount: 68
        cubInstallObjectCountIncludingSupport: 69
        semanticObjectMatches: "68/68"
        separatedSecretCount: 0
        allowedCubOnlyObjects:
          - "v1|Namespace||consul"
      revisions:
        -
          name: "default-control-plane-r001"
          revision: "r001"
          variantRevision: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/variant-revision.yaml"
          digest: "b83c19e0fd112cd7ef9080d42a3a16d6b3b22c5b2021c5a30a93372d1ff3f0de"
          renderedObjectSetSHA256: "7efa3e8b59c702c8b8fa744a0ff91198e09ad8ba0fb93a86b50c3fd9e39d29f7"
          renderedObjects: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/rendered/release-objects.yaml"
          objectInventory: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/rendered/object-inventory.yaml"
          objectCount: 68
          helmObjectCount: 68
          cubInstallObjectCountIncludingSupport: 69
          semanticObjectMatches: "68/68"
          separatedSecretFiles: 0
          receipts:
            render:
              kind: "RenderReceipt"
              path: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/receipts/render-receipt.yaml"
              result: "recorded"
              renderedObjectSetSHA256: "7efa3e8b59c702c8b8fa744a0ff91198e09ad8ba0fb93a86b50c3fd9e39d29f7"
            helmEquivalence:
              kind: "HelmEquivalenceReceipt"
              path: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/receipts/helm-equivalence-receipt.yaml"
              result: "pass"
              renderedObjectSetSHA256: "7efa3e8b59c702c8b8fa744a0ff91198e09ad8ba0fb93a86b50c3fd9e39d29f7"
            scan:
              kind: "ScanReceipt"
              path: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/receipts/scan-receipt.yaml"
              result: "warn"
              renderedObjectSetSHA256: "7efa3e8b59c702c8b8fa744a0ff91198e09ad8ba0fb93a86b50c3fd9e39d29f7"
            installGate:
              kind: "InstallGate"
              path: "recipes/hashicorp/consul/2.0.0/revisions/default-control-plane/r001/receipts/install-gate.yaml"
              result: "warn"
              renderedObjectSetSHA256: "7efa3e8b59c702c8b8fa744a0ff91198e09ad8ba0fb93a86b50c3fd9e39d29f7"
    -
      name: "secure-mesh-existing-secrets"
      variant: "recipes/hashicorp/consul/2.0.0/variants/secure-mesh-existing-secrets/variant.yaml"
      namespace: "consul"
      releaseName: "consul"
      valuesProfile: "recipes/hashicorp/consul/2.0.0/effective-values-secure-mesh-existing-secrets.yaml"
      capabilityProfile:
        apiVersions:
          []
        kubeVersion: "1.30.0"
      hookPolicy: "no-hooks"
      targetFacts:
        requiredSecrets:
          -
            keys:
              - "tls.crt"
            name: "consul-ca-cert"
            namespace: "consul"
            purpose: "Consul TLS CA certificate; must sign consul-server-cert"
          -
            caSecretName: "consul-ca-cert"
            keys:
              - "tls.crt"
              - "tls.key"
            name: "consul-server-cert"
            namespace: "consul"
            purpose: "Consul server TLS certificate and private key; certificate SANs must cover server.dc1.consul and rendered consul-consul-server service DNS names"
            requiredDNSNames:
              - "server.dc1.consul"
              - "consul-consul-server"
              - "consul-consul-server.consul"
              - "consul-consul-server.consul.svc"
              - "consul-consul-server.consul-helm"
              - "consul-consul-server.consul-helm.svc"
              - "consul-consul-server.consul-apply"
              - "consul-consul-server.consul-apply.svc"
              - "consul-consul-server.consul-oci"
              - "consul-consul-server.consul-oci.svc"
          -
            keys:
              - "key"
            name: "consul-gossip-encryption-key"
            namespace: "consul"
            purpose: "Consul gossip encryption key"
          -
            keys:
              - "token"
            name: "consul-bootstrap-acl-token"
            namespace: "consul"
            purpose: "Consul ACL bootstrap token"
        requiredTopology:
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
          minimumSchedulableNodes: 3
          purpose: "Consul secure mesh renders three server replicas with anti-affinity and gateway workloads."
      targetFactSummary: "required Secret consul/consul-ca-cert keys tls.crt; required Secret consul/consul-server-cert keys tls.crt,tls.key; required Secret consul/consul-gossip-encryption-key keys key; required Secret consul/consul-bootstrap-acl-token keys token; topology minSchedulableNodes=3"
      packageBase:
        name: "secure-mesh-existing-secrets"
        path: "packages/hashicorp/consul/2.0.0/bases/secure-mesh-existing-secrets"
        default: false
        description: "consul secure mesh with existing Secrets variant rendered from hashicorp/consul@2.0.0"
      setupCheck:
        command: "cub installer setup --pull oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/hashicorp-consul:2.0.0 --base secure-mesh-existing-secrets --work-dir <tmp> --non-interactive --namespace consul"
        helmReleaseObjectCount: 97
        cubInstallObjectCountIncludingSupport: 98
        semanticObjectMatches: "97/97"
        separatedSecretCount: 1
        allowedCubOnlyObjects:
          - "v1|Namespace||consul"
      revisions:
        -
          name: "secure-mesh-existing-secrets-r001"
          revision: "r001"
          variantRevision: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/variant-revision.yaml"
          digest: "f1c903c0195ac960a1108142730b10044eeba6c0ad8649c743b483a4c88976d3"
          renderedObjectSetSHA256: "0acc8c339c2965446b754c3a9c948c4f154ca6e47b074ddc3b8d315e2cb7c468"
          renderedObjects: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/rendered/release-objects.yaml"
          objectInventory: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/rendered/object-inventory.yaml"
          objectCount: 97
          helmObjectCount: 97
          cubInstallObjectCountIncludingSupport: 98
          semanticObjectMatches: "97/97"
          separatedSecretFiles: 1
          receipts:
            render:
              kind: "RenderReceipt"
              path: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/receipts/render-receipt.yaml"
              result: "recorded"
              renderedObjectSetSHA256: "0acc8c339c2965446b754c3a9c948c4f154ca6e47b074ddc3b8d315e2cb7c468"
            helmEquivalence:
              kind: "HelmEquivalenceReceipt"
              path: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/receipts/helm-equivalence-receipt.yaml"
              result: "pass"
              renderedObjectSetSHA256: "0acc8c339c2965446b754c3a9c948c4f154ca6e47b074ddc3b8d315e2cb7c468"
            scan:
              kind: "ScanReceipt"
              path: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/receipts/scan-receipt.yaml"
              result: "warn"
              renderedObjectSetSHA256: "0acc8c339c2965446b754c3a9c948c4f154ca6e47b074ddc3b8d315e2cb7c468"
            installGate:
              kind: "InstallGate"
              path: "recipes/hashicorp/consul/2.0.0/revisions/secure-mesh-existing-secrets/r001/receipts/install-gate.yaml"
              result: "warn"
              renderedObjectSetSHA256: "0acc8c339c2965446b754c3a9c948c4f154ca6e47b074ddc3b8d315e2cb7c468"
