{
  "apiVersion": "catalog.confighub.com/v1alpha1",
  "kind": "CatalogListing",
  "listingVersion": "1",
  "generatedFrom": {
    "catalog": {
      "path": "data/base-variant-records/records.json",
      "sha256": "sha256:33e9d603109b517560aaa5e244acc3a825977fd5e417b436da07b63930ac2a78",
      "url": "https://github.com/confighub/helm-expt/blob/main/data/base-variant-records/records.json"
    },
    "record": {
      "path": "data/base-variant-records/records/prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml",
      "sha256": "sha256:ac1045b435d41ffaced184c73e2bde1ec657072afff5eb57e1780abb60e05890",
      "url": "https://github.com/confighub/helm-expt/blob/main/data/base-variant-records/records/prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml"
    },
    "recordKind": "BaseVariantRecord",
    "recordSchema": "schemas/base-variant-record.schema.json"
  },
  "identity": {
    "id": "prometheus-community-kube-prometheus-stack-87-19-2-minimal",
    "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-minimal.json",
    "name": "prometheus-community/kube-prometheus-stack",
    "format": "helm",
    "formatLabel": "Helm chart",
    "version": "87.19.2",
    "base": "minimal",
    "page": "https://confighub.github.io/helm-expt/site/charts/prometheus-community-kube-prometheus-stack-87-19-2.html"
  },
  "discovery": {
    "status": "classified",
    "roles": [
      {
        "role": "metrics",
        "componentType": "operator"
      }
    ],
    "rationale": "The retained operator and Prometheus custom resource describe an operator-managed monitoring stack. CRDs and target readiness still require checks.",
    "assignment": {
      "path": "data/catalog-roles/assignments.json",
      "sha256": "sha256:449399bbc13680cf84b065b95c1aad4b014aff48376180864c81ba9346c2f8e5",
      "url": "https://github.com/confighub/helm-expt/blob/main/data/catalog-roles/assignments.json"
    },
    "boundary": "Discovery only: a role does not establish readiness, compatibility or support. An operator needs custom resources; an agent needs its destination. Read the listing prerequisites and coverage before composing."
  },
  "source": {
    "format": "helm",
    "name": "prometheus-community/kube-prometheus-stack",
    "version": "87.19.2",
    "reference": "prometheus-community/kube-prometheus-stack@87.19.2",
    "record": "examples/prometheus-operator-minimal/catalog-profile.yaml",
    "recordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml",
    "selection": {
      "name": "minimal",
      "kind": "catalog-preset",
      "provider": "Config Workshop",
      "record": "examples/prometheus-operator-minimal/catalog-profile.yaml",
      "recordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml"
    },
    "pin": {
      "digest": "sha256:5cec316fc0ecba6900c6661c2a0848dc8911b89b7badebdeeda3e8b596b5096f",
      "role": "helm-variant-revision",
      "revision": "r001",
      "record": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml",
      "recordUrl": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml"
    },
    "fixedAtBuildTime": [
      "chart=prometheus-community/kube-prometheus-stack",
      "version=87.19.2",
      "base=minimal",
      "valuesProfile=runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/effective-values-minimal.yaml",
      "namespace=monitoring",
      "releaseName=kube-prometheus-stack",
      "capabilityProfile={\"apiVersions\":[],\"kubeVersion\":\"1.30.0\"}"
    ]
  },
  "flattened": {
    "method": "helm-render",
    "materializationStatus": "captured",
    "format": "kubernetes-yaml",
    "objectCount": 24,
    "digest": "sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c",
    "digestRole": "canonical-object-set",
    "verdict": "flatten-with-routes",
    "verdictStatus": "decided",
    "action": "retain-exact-objects-with-routes",
    "scope": "prometheus-community/kube-prometheus-stack@87.19.2/minimal; recheck after source, lifecycle-sensitive variant, destination, or delivery-runtime changes",
    "boundaries": [
      "Helm rendered the pinned chart and values into the exact objects retained by this base."
    ],
    "objects": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
    "objectsUrl": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
    "inventory": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/object-inventory.yaml",
    "inventoryUrl": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/object-inventory.yaml",
    "digestRecord": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml",
    "digestRecordUrl": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml",
    "verdictRecord": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/publication/flattening-safety-verdict-minimal.yaml",
    "verdictRecordUrl": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/publication/flattening-safety-verdict-minimal.yaml",
    "bundleSourcePath": "runs/prometheus-operator-minimal-candidate/packages/prometheus-community/kube-prometheus-stack/87.19.2/bases/minimal/upstream.yaml",
    "retainedObjects": {
      "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
      "url": "https://raw.githubusercontent.com/confighub/helm-expt/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
      "sha256": "sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c"
    }
  },
  "oci": {
    "sourcePackageRef": "",
    "bundles": [
      {
        "role": "source-package",
        "state": "not-recorded",
        "status": "not-recorded",
        "reference": "",
        "referenceState": "none",
        "digests": []
      },
      {
        "role": "literal-config",
        "state": "published",
        "status": "published-with-receipt",
        "reference": "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/bundles/catalog-prometheus-community-kube-prometheus-stack-87-19-2-minimal:latest@sha256:194fa0207e199e7f5b834583ac06495d05cd3d84c1ed5dc0fc5936d854975bb1",
        "referenceState": "published",
        "digests": [
          {
            "field": "layerDigest",
            "value": "sha256:84dca900530136818db631d2878923f3bd35c2143e3da4a9cb6f4227188b9c72"
          },
          {
            "field": "receiptSha256",
            "value": "sha256:84596d535a4d310e59d7109e872b76c1410adca8c1f5c62d6c4fdfa9025e55f6"
          },
          {
            "field": "publicationReceiptSha256",
            "value": "sha256:dac994812a28bec5fb826c3f2a6df461ce4eb4762b2952c8e96fee2ae4a2a6a7"
          },
          {
            "field": "manifestDigest",
            "value": "sha256:194fa0207e199e7f5b834583ac06495d05cd3d84c1ed5dc0fc5936d854975bb1"
          },
          {
            "field": "objectSetSha256",
            "value": "sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c"
          }
        ],
        "receipt": "data/certified-bundles/receipts/catalog/kube-prometheus-stack-87.19.2-minimal/receipt.yaml",
        "receiptUrl": "https://github.com/confighub/helm-expt/blob/main/data/certified-bundles/receipts/catalog/kube-prometheus-stack-87.19.2-minimal/receipt.yaml",
        "referenceField": "observedReference",
        "note": "The receipt and publication receipt declare these route files; this binding does not prove a remote pullback or route execution."
      },
      {
        "role": "confighub-upload",
        "state": "not-recorded",
        "status": "not-recorded",
        "reference": "",
        "referenceState": "none",
        "digests": []
      },
      {
        "role": "confighub-release",
        "state": "not-published",
        "status": "not-recorded-for-this-base",
        "reference": "",
        "referenceState": "none",
        "digests": [],
        "note": "No current ConfigHub Space release OCI receipt is recorded for this exact base."
      }
    ],
    "runtimes": [
      {
        "runtime": "argo-cd",
        "state": "not-run",
        "status": "not-recorded-for-this-base"
      },
      {
        "runtime": "flux",
        "state": "not-run",
        "status": "not-recorded-for-this-base"
      },
      {
        "runtime": "direct",
        "state": "not-run",
        "status": "not-recorded-for-this-base"
      }
    ]
  },
  "images": {
    "count": 2,
    "pinnedByDigest": 0,
    "namedByTag": 2,
    "references": [
      {
        "reference": "quay.io/prometheus-operator/prometheus-operator:v0.92.1",
        "pinned": false
      },
      {
        "reference": "quay.io/prometheus/prometheus:v3.13.1-distroless",
        "pinned": false
      }
    ],
    "readFrom": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
    "record": "data/catalog-images/images.json",
    "recordUrl": "https://github.com/confighub/helm-expt/blob/main/data/catalog-images/images.json",
    "boundary": "what the objects name, not what the registry holds now; cub config check --images resolves a tag to the bytes behind it"
  },
  "variants": {
    "base": "minimal",
    "known": [
      {
        "id": "prometheus-community-kube-prometheus-stack-87-19-2-default",
        "base": "default",
        "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-default.json",
        "self": false,
        "digest": "sha256:f93812ce23b92c73c0bcc223d5c4efd125e80430b846dc41aa874eee09f67d99"
      },
      {
        "id": "prometheus-community-kube-prometheus-stack-87-19-2-existing-secret",
        "base": "existing-secret",
        "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-existing-secret.json",
        "self": false,
        "digest": "sha256:c0a62fce6407f18a6cbadb712a2b2570f51522f55bddc9ecaffcf30c5192ed2b"
      },
      {
        "id": "prometheus-community-kube-prometheus-stack-87-19-2-minimal",
        "base": "minimal",
        "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-minimal.json",
        "self": true,
        "digest": "sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c"
      },
      {
        "id": "prometheus-community-kube-prometheus-stack-87-19-2-no-crds",
        "base": "no-crds",
        "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-no-crds.json",
        "self": false,
        "digest": "sha256:86d54113ec12fcea838d30e7e2ff6722de375bd0f6cc0e09ab8a14078c941446"
      }
    ],
    "howToMakeOne": {
      "model": "The catalog builds a base by pinning one source version, fixing one set of inputs, and retaining the exact objects that come out. A new variant starts from a retained base and changes only the fields it owns, so the base stays comparable and the change stays reviewable.",
      "steps": [
        "Materialize this base and confirm the object set hashes to sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c. The exact objects are recorded at runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml.",
        "Put those objects in a local directory called rendered, then preview the retention before writing anything.",
        "Retain the base in ConfigHub, carrying the object-set hash as an annotation so the accepted identity travels with it.",
        "Create the new variant from that base and change only the fields the variant owns.",
        "Preview the promotion and read the mutations before any write command runs."
      ],
      "commands": [
        {
          "step": "Preview the retention",
          "command": "cub variant upload --dry-run --component prometheus-community-kube-prometheus-stack --variant minimal --space prometheus-community-kube-prometheus-stack-87-19-2-minimal --unit-annotation workshop.confighub.com/object-set-sha256=sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c ./rendered",
          "writes": false
        },
        {
          "step": "Retain this base",
          "command": "cub variant upload --component prometheus-community-kube-prometheus-stack --variant minimal --space prometheus-community-kube-prometheus-stack-87-19-2-minimal --unit-annotation workshop.confighub.com/object-set-sha256=sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c ./rendered",
          "writes": true
        },
        {
          "step": "Create a staging variant",
          "command": "cub variant create staging prometheus-community-kube-prometheus-stack-87-19-2-minimal --space-pattern template:prometheus-community-kube-prometheus-stack-87-19-2-minimal-staging --environment Staging --unit-annotation workshop.confighub.com/object-set-sha256=sha256:9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c",
          "writes": true
        },
        {
          "step": "Preview the promotion",
          "command": "cub variant promote prometheus-community-kube-prometheus-stack-87-19-2-minimal-staging --dry-run -o mutations",
          "writes": false
        }
      ],
      "reference": "https://github.com/confighub/helm-expt/blob/main/data/config-workshop-command-contract/summary.md"
    }
  },
  "routing": {
    "routeStatus": "recorded",
    "requirementsStatus": "recorded",
    "targetFactsStatus": "recorded",
    "resolutionStatus": "awaits-variant-and-target",
    "resolutionRule": "Re-resolve after a lifecycle-sensitive variant change, destination assignment, or delivery-runtime change; bind the result to the exact configuration digest.",
    "requirements": [
      {
        "id": "establish-prometheus-operator-crds",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "Follow the certified CRD ordering route and wait for the ten retained CRDs before the ordinary platform objects."
      },
      {
        "id": "create-or-keep-admission-secret",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "Follow the certified lifecycle route to create or retain the target-owned admission Secret before webhook readiness checks."
      },
      {
        "id": "patch-and-check-admission-webhook",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "Follow the certified lifecycle route to patch the admission webhook after the operator and Secret exist, then check readiness."
      },
      {
        "id": "monitoring/kube-prometheus-stack-admission",
        "type": "target-fact",
        "origin": "base",
        "detail": "Admission webhook TLS material owned by the target."
      },
      {
        "id": "crd-ordering",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "Without an ordering declaration, per-file Units apply in no guaranteed order, so a custom resource can reach the cluster before the definition that gives it meaning. Apply the 10 CustomResourceDefinition objects first. Wait until every named definition reports the Established condition. Then apply the other 14 objects."
      },
      {
        "id": "lifecycle",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "The chart defines 7 hook object(s) that do not travel in a flattened bundle, so the work they do has to happen some other way. A recorded run installed this base without them and watched that work happen as the ordered actions below. The ordered stages are target-version, namespace, crds-apply, crds-established, admission-prepare, platform-apply, admission-finish, app-apply, app-ready, prometheus-ready, scrape-query, workloads."
      },
      {
        "id": "webhook-ca",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "The target-owned admission certificate must exist and its CA must be patched into all webhook configurations before admission is ready. The retained manual lifecycle observation records creation, patching and readiness checks. The ordered stages are target-version, namespace, crds-apply, crds-established, admission-prepare, platform-apply, admission-finish, app-apply, app-ready, prometheus-ready, scrape-query, workloads."
      }
    ],
    "routes": [
      {
        "id": "establish-prometheus-operator-crds",
        "phase": "pre-apply",
        "status": "recorded",
        "sourceStatus": "routed",
        "automatic": false,
        "actor": "delivery workflow",
        "mechanism": "Follow the certified CRD ordering route and wait for the ten retained CRDs before the ordinary platform objects.",
        "supportedRuntimes": [],
        "requirementRefs": [
          "establish-prometheus-operator-crds"
        ],
        "checks": [
          "a destination receipt for CRD establishment",
          "Apply the retained CRD companion and record establishment before apply."
        ],
        "evidence": [
          "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/crd-ordering.yaml",
          "runs/prometheus-operator-minimal-candidate/config-catalog/package-extras/prometheus-community/kube-prometheus-stack/87.19.2/generation-receipt.yaml"
        ]
      },
      {
        "id": "create-or-keep-admission-secret",
        "phase": "pre-apply",
        "status": "recorded",
        "sourceStatus": "routed",
        "automatic": false,
        "actor": "delivery workflow",
        "mechanism": "Follow the certified lifecycle route to create or retain the target-owned admission Secret before webhook readiness checks.",
        "supportedRuntimes": [],
        "requirementRefs": [
          "create-or-keep-admission-secret"
        ],
        "checks": [
          "a destination receipt naming the admission Secret",
          "Supply or create the named Secret, then record its target facts."
        ],
        "evidence": [
          "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/lifecycle.yaml",
          "runs/prometheus-operator-minimal-candidate/config-catalog/package-extras/prometheus-community/kube-prometheus-stack/87.19.2/lifecycle-actions.yaml"
        ]
      },
      {
        "id": "patch-and-check-admission-webhook",
        "phase": "post-apply",
        "status": "recorded",
        "sourceStatus": "routed",
        "automatic": false,
        "actor": "delivery workflow",
        "mechanism": "Follow the certified lifecycle route to patch the admission webhook after the operator and Secret exist, then check readiness.",
        "supportedRuntimes": [],
        "requirementRefs": [
          "patch-and-check-admission-webhook"
        ],
        "checks": [
          "a destination receipt for the webhook check",
          "Run the finish companion and record the readiness observation."
        ],
        "evidence": [
          "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/lifecycle.yaml",
          "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/receipts/install-gate.yaml"
        ]
      },
      {
        "id": "crd-ordering",
        "phase": "apply",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected applier",
        "mechanism": "Without an ordering declaration, per-file Units apply in no guaranteed order, so a custom resource can reach the cluster before the definition that gives it meaning. Apply the 10 CustomResourceDefinition objects first. Wait until every named definition reports the Established condition. Then apply the other 14 objects.",
        "supportedRuntimes": [
          "Argo CD",
          "Flux",
          "cub-direct applier"
        ],
        "requirementRefs": [
          "crd-ordering"
        ],
        "checks": [
          "every named definition reports the Established condition"
        ],
        "evidence": [
          "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/crd-ordering.yaml"
        ]
      },
      {
        "id": "lifecycle",
        "phase": "destination-resolution",
        "status": "recorded",
        "sourceStatus": "observed",
        "automatic": false,
        "actor": "selected applier",
        "mechanism": "The chart defines 7 hook object(s) that do not travel in a flattened bundle, so the work they do has to happen some other way. A recorded run installed this base without them and watched that work happen as the ordered actions below. The ordered stages are target-version, namespace, crds-apply, crds-established, admission-prepare, platform-apply, admission-finish, app-apply, app-ready, prometheus-ready, scrape-query, workloads.",
        "supportedRuntimes": [
          "Argo CD",
          "Flux",
          "cub-direct applier"
        ],
        "requirementRefs": [
          "lifecycle"
        ],
        "checks": [
          "stop and report; never continue past a stage that did not pass"
        ],
        "evidence": [
          "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/lifecycle.yaml"
        ]
      },
      {
        "id": "webhook-ca",
        "phase": "destination-resolution",
        "status": "recorded",
        "sourceStatus": "observed",
        "automatic": false,
        "actor": "selected applier",
        "mechanism": "The target-owned admission certificate must exist and its CA must be patched into all webhook configurations before admission is ready. The retained manual lifecycle observation records creation, patching and readiness checks. The ordered stages are target-version, namespace, crds-apply, crds-established, admission-prepare, platform-apply, admission-finish, app-apply, app-ready, prometheus-ready, scrape-query, workloads.",
        "supportedRuntimes": [
          "Argo CD",
          "Flux",
          "cub-direct applier"
        ],
        "requirementRefs": [
          "webhook-ca"
        ],
        "checks": [
          "stop and report; never continue past a stage that did not pass"
        ],
        "evidence": [
          "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/webhook-ca.yaml"
        ]
      }
    ],
    "records": [
      {
        "name": "crd-ordering.yaml",
        "path": "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/crd-ordering.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/crd-ordering.yaml"
      },
      {
        "name": "lifecycle.yaml",
        "path": "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/lifecycle.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/lifecycle.yaml"
      },
      {
        "name": "webhook-ca.yaml",
        "path": "data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/webhook-ca.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/data/certified-bundles/routes/catalog/prometheus-community-kube-prometheus-stack-87.19.2-minimal/webhook-ca.yaml"
      },
      {
        "name": "catalog-profile.yaml",
        "path": "examples/prometheus-operator-minimal/catalog-profile.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml"
      }
    ]
  },
  "lifecycle": {
    "installTimeStatus": "partly-declared",
    "installTimeInputs": [
      {
        "name": "kube-prometheus-stack-admission",
        "kind": "admissionSecret",
        "status": "declared-not-checked"
      },
      {
        "name": "1.30.0",
        "kind": "kubernetesVersion",
        "status": "declared-not-checked"
      },
      {
        "name": "monitoring",
        "kind": "namespace",
        "status": "declared-not-checked"
      }
    ],
    "promotion": {
      "state": "not-recorded",
      "status": "missing-confighub-proof"
    },
    "coverage": {
      "render_parity": {
        "status": "checked",
        "declared": "yes"
      },
      "confighub_scan_ops": {
        "status": "not_checked",
        "declared": "todo"
      },
      "local_kubernetes": {
        "status": "not_checked",
        "declared": "todo"
      },
      "lifecycle_observation": {
        "status": "not_checked",
        "declared": "todo"
      },
      "gitops_oci_live": {
        "status": "not_checked",
        "declared": "todo"
      },
      "live_dual_parity": {
        "status": "not_checked",
        "declared": "todo"
      },
      "two_cluster_kind": {
        "status": "not_checked",
        "declared": "todo"
      },
      "variant_promotion": {
        "status": "not_checked",
        "declared": "missing-confighub-proof"
      }
    },
    "policy": {
      "profile": "catalog-standard",
      "productionAdds": [
        "workflow-approval"
      ]
    },
    "operations": {
      "resourceClass": "not-yet-classified",
      "ownerClass": "not-yet-classified",
      "changeCadence": "not-yet-classified"
    },
    "ownership": {
      "status": "partly-declared",
      "sourceControlled": [
        "Fields produced from the recorded chart values and render context"
      ],
      "variantControlled": [
        "Post-render object fields recorded in ConfigHub after upload"
      ],
      "targetSupplied": [
        "monitoring/kube-prometheus-stack-admission"
      ],
      "deliveryProtected": [],
      "rule": "Re-evaluate ownership when the source, variant, destination, or delivery behavior changes; overlapping source and variant edits require review."
    },
    "notes": []
  },
  "assessment": {
    "stages": [
      {
        "id": "inspection",
        "question": "What do I have?",
        "answer": "Inspect the helm source, choices, locks, and any existing output before selecting a destination.",
        "evidenceState": "completed",
        "resultState": "available",
        "nextAction": "Inspect or compare the source and exact files before choosing a destination.",
        "destinationAccessRequired": false,
        "deploymentRequired": false,
        "requiredInputs": [
          "The chart and values, a rendered object set, or a package that contains them"
        ],
        "records": [
          {
            "name": "catalog-profile.yaml",
            "path": "examples/prometheus-operator-minimal/catalog-profile.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml"
          },
          {
            "name": "release-objects.yaml",
            "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml"
          },
          {
            "name": "object-inventory.yaml",
            "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/object-inventory.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/object-inventory.yaml"
          }
        ]
      },
      {
        "id": "materialization",
        "question": "What will it produce?",
        "answer": "Run the recorded Helm render step to produce the exact Kubernetes objects for this configuration.",
        "evidenceState": "completed",
        "resultState": "pass",
        "nextAction": "Review the exact object set and its digest.",
        "destinationAccessRequired": false,
        "deploymentRequired": false,
        "requiredInputs": [
          "The pinned chart, version, values, namespace, release name, and render capabilities"
        ],
        "records": [
          {
            "name": "catalog-profile.yaml",
            "path": "examples/prometheus-operator-minimal/catalog-profile.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml"
          },
          {
            "name": "variant-revision.yaml",
            "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml"
          }
        ]
      },
      {
        "id": "destination",
        "question": "Can this destination accept it?",
        "answer": "The destination has not been checked for this exact configuration. A recorded source or render result is not a destination pass.",
        "evidenceState": "not-run",
        "resultState": "not-run",
        "nextAction": "Choose a destination and check its APIs, prerequisites, policies, credentials, controllers, and hardware before apply.",
        "destinationAccessRequired": true,
        "deploymentRequired": false,
        "requiredInputs": [
          "The exact candidate configuration",
          "The selected destination and its current APIs, prerequisites, policies, credentials, controllers, and hardware facts"
        ],
        "records": [
          {
            "name": "catalog-profile.yaml",
            "path": "examples/prometheus-operator-minimal/catalog-profile.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml"
          }
        ]
      },
      {
        "id": "post-deployment",
        "question": "Did it work?",
        "answer": "No post-deployment result is recorded for this exact configuration. Publication, upload, or rendering is not proof that it ran correctly.",
        "evidenceState": "not-run",
        "resultState": "not-run",
        "nextAction": "Deliver the exact revision, then record controller, resource, health, runtime, drift, and rollback results separately.",
        "destinationAccessRequired": true,
        "deploymentRequired": true,
        "requiredInputs": [
          "The exact delivered revision and destination",
          "Live controller, resource, health, runtime, drift, and rollback observations required by the claim"
        ],
        "records": []
      }
    ]
  },
  "evidence": {
    "links": [
      {
        "name": "catalog-profile.yaml",
        "path": "examples/prometheus-operator-minimal/catalog-profile.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/prometheus-operator-minimal/catalog-profile.yaml"
      },
      {
        "name": "flattening-safety-verdict-minimal.yaml",
        "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/publication/flattening-safety-verdict-minimal.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/publication/flattening-safety-verdict-minimal.yaml"
      },
      {
        "name": "object-inventory.yaml",
        "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/object-inventory.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/object-inventory.yaml"
      },
      {
        "name": "release-objects.yaml",
        "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml"
      },
      {
        "name": "variant-revision.yaml",
        "path": "runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/variant-revision.yaml"
      }
    ],
    "attributes": []
  },
  "nextSteps": [
    {
      "id": "get-objects",
      "label": "Get the exact objects",
      "state": "run-for-this-entry",
      "summary": "The Catalog rendered this entry and retains its 24 objects in one file.",
      "basis": [
        "flattened.materializationStatus",
        "flattened.retainedObjects",
        "flattened.inventory",
        "flattened.digest"
      ],
      "commands": [
        {
          "comment": "fetch the retained objects for this entry",
          "command": "curl -fsSL -o prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml https://raw.githubusercontent.com/confighub/helm-expt/main/runs/prometheus-operator-minimal-candidate/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/minimal/r001/rendered/release-objects.yaml"
        },
        {
          "comment": "check the bytes against the listing",
          "command": "shasum -a 256 prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml",
          "expect": "9947d9f86e3cabce7870b80560cda7ffd0381a909d253c43c6120f56c0b5a78c  prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml"
        }
      ]
    },
    {
      "id": "compare",
      "label": "Compare with another version or base",
      "state": "not-run-for-this-entry",
      "summary": "The listing records no comparison for this entry. The commands run on the retained files, with no account.",
      "basis": [
        "variants.known",
        "source.name",
        "flattened.format"
      ],
      "commands": [
        {
          "comment": "fetch the default base of the same version",
          "command": "curl -fsSL -o prometheus-community-kube-prometheus-stack-87-19-2-default.yaml https://raw.githubusercontent.com/confighub/helm-expt/main/recipes/prometheus-community/kube-prometheus-stack/87.19.2/revisions/default/r001/rendered/release-objects.yaml"
        },
        {
          "comment": "list what differs between the two bases",
          "command": "cub config diff prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml prometheus-community-kube-prometheus-stack-87-19-2-default.yaml --summary"
        },
        {
          "comment": "fetch the default base at version 87.15.1",
          "command": "curl -fsSL -o prometheus-community-kube-prometheus-stack-87-15-1-default.yaml https://raw.githubusercontent.com/confighub/helm-expt/main/recipes/prometheus-community/kube-prometheus-stack/87.15.1/revisions/default/r001/rendered/release-objects.yaml"
        },
        {
          "comment": "list what changed from 87.15.1 to 87.19.2",
          "command": "cub config diff prometheus-community-kube-prometheus-stack-87-15-1-default.yaml prometheus-community-kube-prometheus-stack-87-19-2-minimal.yaml --summary"
        }
      ],
      "siblings": [
        {
          "id": "prometheus-community-kube-prometheus-stack-84-4-0-aicr-eks-training-v0-20-0",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-84-4-0-aicr-eks-training-v0-20-0.json",
          "version": "84.4.0",
          "base": "aicr-eks-training-v0-20-0",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-84-4-0-aicr-eks-training-v1-0-0",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-84-4-0-aicr-eks-training-v1-0-0.json",
          "version": "84.4.0",
          "base": "aicr-eks-training-v1-0-0",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-84-4-0-default",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-84-4-0-default.json",
          "version": "84.4.0",
          "base": "default",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-85-3-3-default",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-85-3-3-default.json",
          "version": "85.3.3",
          "base": "default",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-85-3-3-no-crds",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-85-3-3-no-crds.json",
          "version": "85.3.3",
          "base": "no-crds",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-86-1-0-default",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-86-1-0-default.json",
          "version": "86.1.0",
          "base": "default",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-86-1-0-no-crds",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-86-1-0-no-crds.json",
          "version": "86.1.0",
          "base": "no-crds",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-87-15-1-default",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-15-1-default.json",
          "version": "87.15.1",
          "base": "default",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-87-15-1-existing-secret",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-15-1-existing-secret.json",
          "version": "87.15.1",
          "base": "existing-secret",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-87-15-1-no-crds",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-15-1-no-crds.json",
          "version": "87.15.1",
          "base": "no-crds",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-87-19-2-default",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-default.json",
          "version": "87.19.2",
          "base": "default",
          "relation": "other-base"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-87-19-2-existing-secret",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-existing-secret.json",
          "version": "87.19.2",
          "base": "existing-secret",
          "relation": "other-base"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-87-19-2-no-crds",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-87-19-2-no-crds.json",
          "version": "87.19.2",
          "base": "no-crds",
          "relation": "other-base"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-88-6-3-default",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-88-6-3-default.json",
          "version": "88.6.3",
          "base": "default",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-88-6-3-existing-secret",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-88-6-3-existing-secret.json",
          "version": "88.6.3",
          "base": "existing-secret",
          "relation": "other-version"
        },
        {
          "id": "prometheus-community-kube-prometheus-stack-88-6-3-no-crds",
          "url": "https://confighub.github.io/helm-expt/site/listings/prometheus-community-kube-prometheus-stack-88-6-3-no-crds.json",
          "version": "88.6.3",
          "base": "no-crds",
          "relation": "other-version"
        }
      ]
    },
    {
      "id": "upload",
      "label": "Upload it as a variant",
      "state": "not-run-for-this-entry",
      "summary": "The Catalog has not uploaded this entry. The commands use its published literal configuration bundle.",
      "basis": [
        "source.ociRef",
        "oci.bundles[literal-config]",
        "oci.bundles[confighub-upload]",
        "oci.bundles[confighub-release]",
        "lifecycle.coverage.confighub_scan_ops"
      ],
      "commands": [
        {
          "comment": "sign in; steps 3 to 5 write to your ConfigHub organization",
          "command": "cub auth login",
          "needsAccount": true
        },
        {
          "comment": "preview the upload of the published bundle; nothing is written",
          "command": "cub variant upload --dry-run --component prometheus-community-kube-prometheus-stack --variant minimal --space prometheus-community-kube-prometheus-stack-87-19-2-minimal oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/bundles/catalog-prometheus-community-kube-prometheus-stack-87-19-2-minimal:latest@sha256:194fa0207e199e7f5b834583ac06495d05cd3d84c1ed5dc0fc5936d854975bb1",
          "needsAccount": true
        },
        {
          "comment": "upload the bundle as a base Space of Units",
          "command": "cub variant upload --component prometheus-community-kube-prometheus-stack --variant minimal --space prometheus-community-kube-prometheus-stack-87-19-2-minimal oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/bundles/catalog-prometheus-community-kube-prometheus-stack-87-19-2-minimal:latest@sha256:194fa0207e199e7f5b834583ac06495d05cd3d84c1ed5dc0fc5936d854975bb1",
          "needsAccount": true,
          "writes": true
        }
      ]
    },
    {
      "id": "deploy",
      "label": "Deploy it",
      "state": "not-run-for-this-entry",
      "summary": "No delivery run is recorded for this entry. Argo CD has not run, Flux has not run, and kubectl has not run.",
      "basis": [
        "oci.runtimes",
        "lifecycle.installTimeInputs"
      ],
      "commands": [
        {
          "comment": "clone the base onto a Target as a dev variant",
          "command": "cub variant create dev prometheus-community-kube-prometheus-stack-87-19-2-minimal --target workshop/target --space-pattern \"template:prometheus-community-kube-prometheus-stack-87-19-2-minimal-dev\"",
          "needsAccount": true,
          "writes": true
        },
        {
          "comment": "publish the Release that Argo CD or Flux pulls",
          "command": "cub release publish prometheus-community-kube-prometheus-stack-87-19-2-minimal-dev",
          "needsAccount": true,
          "writes": true
        }
      ],
      "needs": [
        "kube-prometheus-stack-admission",
        "1.30.0",
        "monitoring"
      ]
    },
    {
      "id": "promote",
      "label": "Promote a change",
      "state": "not-run-for-this-entry",
      "summary": "No promotion is recorded for this entry.",
      "basis": [
        "lifecycle.promotion"
      ],
      "commands": [
        {
          "comment": "preview what the dev variant would take from the base",
          "command": "cub variant promote prometheus-community-kube-prometheus-stack-87-19-2-minimal-dev --dry-run -o mutations",
          "needsAccount": true
        },
        {
          "comment": "promote once you have read the preview",
          "command": "cub variant promote prometheus-community-kube-prometheus-stack-87-19-2-minimal-dev --change-desc \"Pull the reviewed base forward\"",
          "needsAccount": true,
          "writes": true
        }
      ]
    }
  ]
}
