{
  "kind": "MatrixCompletionAudit",
  "unofficial": true,
  "description": "Read-only audit of every non-green / not-yet-run master-matrix cell: lane, state, product-readable reason, next action, support artifact, and a completion class (needs-run / needs-target-or-prereq-fix / needs-modeling / already-decided). A projection over committed surfaces; it changes no status. Generated by scripts/generate-matrix-completion-audit.mjs; do not hand-edit.",
  "sources": [
    "data/disposition-frontier/cells.csv",
    "data/master-catalog-matrix/matrix.csv",
    "data/live-parity-decisions/decisions.csv",
    "data/kind-parity-decisions/decisions.csv",
    "data/outcome-coverage/base-outcomes.csv",
    "data/local-live-triage/triage.csv",
    "data/live-matrix-burndown/work-items.csv",
    "data/live-run-blocks/run-blocks.csv",
    "data/lifecycle-route-actions/actions.csv"
  ],
  "cellCount": 657,
  "byCompletionClass": {
    "needs-target-or-prereq-fix": 429,
    "already-decided": 136,
    "needs-run": 47,
    "needs-modeling": 45
  },
  "byLane": {
    "promotion": 389,
    "G": 60,
    "P": 60,
    "L": 51,
    "K": 50,
    "lifecycle": 47
  },
  "cells": [
    {
      "chart": "aqua/trivy-operator",
      "version": "0.32.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "aqua/trivy-operator",
      "version": "0.32.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/trivy-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "aqua/trivy-operator",
      "version": "0.32.1",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/trivy-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.15",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.15",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/argo-cd-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.15",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: webhook-cert-lifecycle: deployment/argo-cd-argocd-applicationset-controller: prerequisite-blocked (stuck creating: missing mount/secret/config) (argo-cd-argocd-application-controller-0[CreateContainerConfigError ready=false restarts=0;] argo-cd-argocd-applicationset-controller-d7b845",
      "next_action": "Model the serving certificate as a generated fact, target fact, cert-manager dependency, preflight, or explicit lifecycle action, then rerun.",
      "support_artifact": "runs/next80-local-kind/argo-cd-argo-cd-9.5.15-no-crds/observation-receipt.yaml",
      "owner": "webhook-cert-lifecycle",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/argo-cd/argo-cd/9.5.15 --base no-crds"
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.15",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-cd-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.17",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.17",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: child Argo Application not materialized (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/argo-cd/argo-cd/9.5.17/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/argo-cd/argo-cd/9.5.17 --base default"
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.17",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: child Argo Application not materialized (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/argo-cd/argo-cd/9.5.17/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/argo-cd/argo-cd/9.5.17 --base default"
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.17",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-cd-9517-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-cd",
      "version": "9.5.17",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (missing-confighub-proof)",
      "state": "blocked",
      "reason": "promotion depends on upstream and downstream ConfigHub Spaces; the ConfigHub proof lane is missing",
      "next_action": "run the ConfigHub proof lane first",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-events",
      "version": "2.4.21",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-events",
      "version": "2.4.21",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-events-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-events",
      "version": "2.4.21",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-events-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-rollouts",
      "version": "2.40.9",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-rollouts",
      "version": "2.40.9",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-rollouts-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-rollouts",
      "version": "2.40.9",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-rollouts-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "controller-default-reviewed",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: target fact: required CRD clusterworkflowtemplates.argoproj.io missing",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/argo-cd-argo-workflows-1.0.14-controller-default-reviewed/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "controller-default-reviewed",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "lifecycle route(s) defined (todo:1) but not yet observed live",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-routes/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "controller-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-workflows-controller-default-reviewed-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: target fact: required CRD clusterworkflowtemplates.argoproj.io missing",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/argo-cd-argo-workflows-1.0.14-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "lifecycle route(s) defined (todo:1) but not yet observed live",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-routes/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-workflows-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argo-workflows",
      "version": "1.0.14",
      "variant": "minimal-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argo-workflows-minimal-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argocd-image-updater",
      "version": "1.2.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "argo-cd/argocd-image-updater",
      "version": "1.2.2",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "argo-cd/argocd-image-updater",
      "version": "1.2.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/argocd-image-updater-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "variant": "controller-default-reviewed",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "no target fact value generator for autoDiscovery.clusterName",
      "next_action": "Catalog work: add the missing target-fact value generator, then rerun.",
      "support_artifact": "runs/live-kind-parity/autoscaler-cluster-autoscaler-controller-default-reviewed/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "variant": "controller-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cluster-autoscaler-controller-default-reviewed-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "watch",
      "reason": "render-input: required Helm values missing (parity passed)",
      "next_action": "Provide the required values in the base/variant, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/autoscaler-cluster-autoscaler-default/receipt.yaml",
      "owner": "user",
      "completion_class": "already-decided",
      "command": "npm run kind-parity:run -- --recipe recipes/autoscaler/cluster-autoscaler/9.57.0 --base default"
    },
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cluster-autoscaler-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/vertical-pod-autoscaler",
      "version": "0.9.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/vertical-pod-autoscaler",
      "version": "0.9.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/vertical-pod-autoscaler-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "autoscaler/vertical-pod-autoscaler",
      "version": "0.9.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/vertical-pod-autoscaler-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "default + topology",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-fit: AWS/EKS metadata or provider identity missing on vanilla kind (parity passed)",
      "next_action": "Review the target-topology support artifact, choose a target with the required platform behavior, or create a target-scoped base before rerunning.",
      "support_artifact": "recipes/aws-ebs-csi-driver/aws-ebs-csi-driver/2.60.1/target-topology.yaml",
      "owner": "user or catalog",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/aws-ebs-csi-driver/aws-ebs-csi-driver/2.60.1 --base default"
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=2; extra=v1|Namespace||default; objects=apps/v1|Deployment|default|ebs-csi-controller; storage.k8s.io/v1|CSIDriver||ebs.csi.aws.com",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/aws-ebs-csi-driver-aws-ebs-csi-driver-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: cloud-or-provider-prerequisite: daemonset/ebs-csi-node: not-ready (ebs-csi-controller-8d8878fb7-24jf4[ ready=true restarts=3;Error ready=false restarts=3; ready=true restarts=3;CrashLoopBackOff ready=false restarts=4; ready=tru)",
      "next_action": "Model the provider dependency as target facts or an external managed prerequisite before rerun.",
      "support_artifact": "runs/next80-local-kind/aws-ebs-csi-driver-aws-ebs-csi-driver-2.60.1-default/observation-receipt.yaml",
      "owner": "cloud-or-provider-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/aws-ebs-csi-driver/aws-ebs-csi-driver/2.60.1 --base default"
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-fit: AWS/EKS metadata or provider identity missing on vanilla kind (parity passed)",
      "next_action": "Review the target-topology support artifact, choose a target with the required platform behavior, or create a target-scoped base before rerunning.",
      "support_artifact": "recipes/aws-ebs-csi-driver/aws-ebs-csi-driver/2.60.1/target-topology.yaml",
      "owner": "user or catalog",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/aws-ebs-csi-driver/aws-ebs-csi-driver/2.60.1 --base default"
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/aws-ebs-csi-driver-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/apache/11.4.29 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-apache-default/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: deployment/apache: prerequisite-blocked (stuck creating: missing mount/secret/config) (apache-5fdf47cb6-f4p8z[PodInitializing ready=false restarts=0;] node-collector-66b46f8d9-qnkc6[Completed ready=false restarts=0;] scan-vulnerabilityreport-56d95)",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/bitnami-apache-11.4.29-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/apache/11.4.29 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/apache/11.4.29 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-apache-11-4-29-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/apache/11.4.29 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "legacy",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=1; extra=v1|Namespace||default; objects=apps/v1|Deployment|default|apache; runtime also fails to pull docker.io/bitnami/apache:2.4.65-debian-12-r2",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-apache-legacy/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/apache/11.4.29 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-apache-11-4-29-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "helm-hook: pre-install certificate generation failed (parity passed)",
      "next_action": "Catalog work: add a lifecycle route for the hook action or provide the hook-produced object as a target prerequisite, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-contour-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: daemonset/contour-envoy: prerequisite-blocked (stuck creating: missing mount/secret/config) (contour-contour-6f88fd5fc6-67kb6[ContainerCreating ready=false restarts=0;] contour-envoy-jtk4r[PodInitializing ready=false restarts=0;PodInitializing ready=fal)",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/bitnami-contour-21.1.4-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-route-actions/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-contour-21-1-4-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "legacy + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "watch: inspect receipt",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "legacy",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: daemonset/contour-envoy: prerequisite-blocked (stuck creating: missing mount/secret/config) (contour-contour-9c9cb9d47-rxs4w[ContainerCreating ready=false restarts=0;] contour-envoy-9sfdn[PodInitializing ready=false restarts=0;PodInitializing ready=fals)",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/bitnami-contour-21.1.4-legacy/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "watch: inspect receipt",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-contour-21-1-4-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "no-crds",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base no-crds --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "no-crds",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=5 extra=1 diffs=0; missing=apiextensions.k8s.io/v1|CustomResourceDefinition||contourconfigurations.projectcontour.io; apiextensions.k8s.io/v1|CustomResourceDefinition||contourdeployments.projectcontour.io; apiextensions.k8s.io/v1|CustomResourceDefinition||extensionservices.projectcontour.io; apiextensions.k8s.io/v1|CustomResourceDefinition||httpproxies.projectcontour.io; apiextensions.k8s.io/v1|CustomResourceDefinition||tlscertificatedelegations.projectcontour.io; extra=v1|Namespace||default; runtime also fails to pull docker.io/bitnami/contour:1.32.1-debian-12-r0; lifecycle also hits pre-install certificate-generation hook failure; runtime also requires hook/target Secret(s): envoycert",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-contour-no-crds/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: daemonset/contour-envoy: prerequisite-blocked (stuck creating: missing mount/secret/config) (contour-contour-6f88fd5fc6-2bhll[ContainerCreating ready=false restarts=0;] contour-envoy-tgr65[PodInitializing ready=false restarts=0;PodInitializing ready=fal)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/bitnami-contour-21.1.4-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base no-crds --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-route-actions/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "no-crds",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base no-crds --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-contour-21-1-4-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-elasticsearch-default/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: statefulset/elasticsearch-coordinating: not-ready (elasticsearch-coordinating-0[PodInitializing ready=false restarts=0;] elasticsearch-coordinating-1[PodInitializing ready=false restarts=0;] elasticsearch-data-0)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/bitnami-elasticsearch-22.1.6-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-elasticsearch-22-1-6-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "ha",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "ha",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-elasticsearch-ha/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "ha",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: statefulset/elasticsearch-coordinating: not-ready (elasticsearch-coordinating-0[PodInitializing ready=false restarts=0;] elasticsearch-coordinating-1[PodInitializing ready=false restarts=0;] elasticsearch-data-0)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/bitnami-elasticsearch-22.1.6-ha/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "ha",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-elasticsearch-22-1-6-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "legacy",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=4; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|elasticsearch-coordinating; apps/v1|StatefulSet|default|elasticsearch-data; apps/v1|StatefulSet|default|elasticsearch-ingest; apps/v1|StatefulSet|default|elasticsearch-master; runtime also fails to pull docker.io/bitnami/os-shell:12-debian-12-r50",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-elasticsearch-legacy/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/elasticsearch/22.1.6 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-elasticsearch-22-1-6-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/memcached",
      "version": "8.5.5",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/memcached",
      "version": "8.5.5",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-memcached-8-5-5-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/memcached",
      "version": "8.5.5",
      "variant": "storage-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.7",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.7",
      "variant": "existing-secret-replicaset",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/mongodb-existing-secret-replicaset-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.7",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/mongodb-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.9",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.9",
      "variant": "existing-secret-replicaset",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: StatefulSet OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/mongodb/19.0.9/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/mongodb/19.0.9 --base existing-secret-replicaset --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.9",
      "variant": "existing-secret-replicaset",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: StatefulSet OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/mongodb/19.0.9/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/mongodb/19.0.9 --base existing-secret-replicaset --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.9",
      "variant": "existing-secret-replicaset",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-mongodb-19-0-9-existing-secret-replicaset-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.0.9",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-mongodb-19-0-9-static-passwords-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.1.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.1.0",
      "variant": "existing-secret-replicaset",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: StatefulSet OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/mongodb/19.1.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/mongodb/19.1.0 --base existing-secret-replicaset --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.1.0",
      "variant": "existing-secret-replicaset",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: StatefulSet OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/mongodb/19.1.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/mongodb/19.1.0 --base existing-secret-replicaset --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.1.0",
      "variant": "existing-secret-replicaset",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-mongodb-19-1-0-existing-secret-replicaset-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/mongodb",
      "version": "19.1.0",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-mongodb-19-1-0-static-passwords-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/mysql",
      "version": "14.0.3",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mysql",
      "version": "14.0.3",
      "variant": "existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/mysql-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/mysql",
      "version": "14.0.3",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/mysql-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.2",
      "variant": "customer-acme-prod",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/nginx-customer-acme-prod/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.2",
      "variant": "existing-tls-ingress",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nginx-existing-tls-ingress-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.2",
      "variant": "http-clusterip",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nginx-http-clusterip-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.2",
      "variant": "prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/nginx-prod-us-east/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.4",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.4",
      "variant": "existing-tls-ingress",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/nginx/24.0.4/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/nginx/24.0.4 --base existing-tls-ingress --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.4",
      "variant": "existing-tls-ingress",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/nginx/24.0.4/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/nginx/24.0.4 --base existing-tls-ingress --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.4",
      "variant": "existing-tls-ingress",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-nginx-24-0-4-existing-tls-ingress-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "24.0.4",
      "variant": "http-clusterip",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-nginx-24-0-4-http-clusterip-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "25.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "25.0.0",
      "variant": "existing-tls-ingress",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/nginx/25.0.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/nginx/25.0.0 --base existing-tls-ingress --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/nginx",
      "version": "25.0.0",
      "variant": "existing-tls-ingress",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/bitnami/nginx/25.0.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/nginx/25.0.0 --base existing-tls-ingress --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/nginx",
      "version": "25.0.0",
      "variant": "existing-tls-ingress",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-nginx-25-0-0-existing-tls-ingress-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/nginx",
      "version": "25.0.0",
      "variant": "http-clusterip",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-nginx-25-0-0-http-clusterip-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=4; extra=v1|Namespace||default; objects=v1|Service|default|opensearch-coordinating-hl; v1|Service|default|opensearch-data-hl; v1|Service|default|opensearch-ingest-hl; v1|Service|default|opensearch-master-hl; live Helm includes Service spec.trafficDistribution=PreferClose for this cluster capability profile; runtime also fails to pull docker.io/bitnami/os-shell:12-debian-12-r51",
      "next_action": "Catalog work: model the required Kubernetes capability/profile field, update the base or semantic contract, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-opensearch-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: statefulset/opensearch-coordinating: not-ready (opensearch-coordinating-0[PodInitializing ready=false restarts=0;] opensearch-coordinating-1[PodInitializing ready=false restarts=0;] opensearch-data-0[PodIniti)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/bitnami-opensearch-2.0.10-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/opensearch-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "ha",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "ha",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=8; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|opensearch-coordinating; apps/v1|StatefulSet|default|opensearch-data; apps/v1|StatefulSet|default|opensearch-ingest; apps/v1|StatefulSet|default|opensearch-master; v1|Service|default|opensearch-coordinating-hl; v1|Service|default|opensearch-data-hl; live Helm includes Service spec.trafficDistribution=PreferClose for this cluster capability profile; runtime also fails to pull docker.io/bitnami/os-shell:12-debian-12-r51",
      "next_action": "Catalog work: model the required Kubernetes capability/profile field, update the base or semantic contract, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-opensearch-ha/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "ha",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: statefulset/opensearch-coordinating: not-ready (opensearch-coordinating-0[PodInitializing ready=false restarts=0;] opensearch-coordinating-1[PodInitializing ready=false restarts=0;] opensearch-data-0[PodIniti)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/bitnami-opensearch-2.0.10-ha/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "ha",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/opensearch-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "legacy",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=8; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|opensearch-coordinating; apps/v1|StatefulSet|default|opensearch-data; apps/v1|StatefulSet|default|opensearch-ingest; apps/v1|StatefulSet|default|opensearch-master; v1|Service|default|opensearch-coordinating-hl; v1|Service|default|opensearch-data-hl; live Helm includes Service spec.trafficDistribution=PreferClose for this cluster capability profile; runtime also fails to pull docker.io/bitnami/os-shell:12-debian-12-r51",
      "next_action": "Catalog work: model the required Kubernetes capability/profile field, update the base or semantic contract, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-opensearch-legacy/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/opensearch/2.0.10 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/opensearch-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/phpmyadmin/20.0.0 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-phpmyadmin-default/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: deployment/phpmyadmin: prerequisite-blocked (stuck creating: missing mount/secret/config) (node-collector-66b46f8d9-qnkc6[Completed ready=false restarts=0;] phpmyadmin-f67d9cfd6-8hv8z[PodInitializing ready=false restarts=0;] scan-vulnerabilityreport-5)",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/bitnami-phpmyadmin-20.0.0-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/phpmyadmin/20.0.0 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/phpmyadmin/20.0.0 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-phpmyadmin-20-0-0-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/phpmyadmin/20.0.0 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "legacy",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=1; extra=v1|Namespace||default; objects=apps/v1|Deployment|default|phpmyadmin; runtime also fails to pull docker.io/bitnami/phpmyadmin:5.2.2-debian-12-r22",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-phpmyadmin-legacy/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/phpmyadmin/20.0.0 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-phpmyadmin-20-0-0-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "variant": "web-ui-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.6.10",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.6.10",
      "variant": "existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-postgresql-18-6-10-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.6.10",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-postgresql-18-6-10-static-passwords-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.6.7",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.6.7",
      "variant": "existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/postgresql-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.6.7",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/postgresql-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.7.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.7.0",
      "variant": "existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-postgresql-18-7-0-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/postgresql",
      "version": "18.7.0",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-postgresql-18-7-0-static-passwords-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/rabbitmq",
      "version": "16.0.14",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/rabbitmq",
      "version": "16.0.14",
      "variant": "existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/rabbitmq-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/rabbitmq",
      "version": "16.0.14",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/rabbitmq-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "25.5.3",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "25.5.3",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/redis-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "25.5.3",
      "variant": "prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/redis-prod-us-east/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "25.5.3",
      "variant": "reuse-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/redis-reuse-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "25.5.3",
      "variant": "staging-eu-west",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/redis-staging-eu-west/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "27.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "27.0.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-redis-27-0-0-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/redis",
      "version": "27.0.0",
      "variant": "reuse-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cl-redis-27-0-0-reuse-existing-secret-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-spark-default/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: image-dependency: statefulset/spark-master: image-pull-blocked (spark-master-0[ImagePullBackOff ready=false restarts=0;] spark-worker-0[ImagePullBackOff ready=false restarts=0;])",
      "next_action": "Pin, mirror, override, or document the image dependency, then rerun against a target that can pull it.",
      "support_artifact": "runs/next80-local-kind/bitnami-spark-10.0.3-default/observation-receipt.yaml",
      "owner": "image-dependency",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-spark-10-0-3-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "ha",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "ha",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-spark-ha/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "ha",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: image-dependency: statefulset/spark-master: image-pull-blocked (rollout-operator-5f688cdb68-pc7sz[ ready=false restarts=0;] spark-master-0[ImagePullBackOff ready=false restarts=0;] spark-worker-0[ImagePullBackOff ready=false)",
      "next_action": "Pin, mirror, override, or document the image dependency, then rerun against a target that can pull it.",
      "support_artifact": "runs/next80-local-kind/bitnami-spark-10.0.3-ha/observation-receipt.yaml",
      "owner": "image-dependency",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "ha",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-spark-10-0-3-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "legacy",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=2; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|spark-master; apps/v1|StatefulSet|default|spark-worker; runtime also fails to pull docker.io/bitnami/spark:4.0.0-debian-12-r20",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-spark-legacy/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/spark/10.0.3 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-spark-10-0-3-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-zookeeper-default/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: image-dependency: statefulset/zookeeper: image-pull-blocked (zookeeper-0[ImagePullBackOff ready=false restarts=0;])",
      "next_action": "Pin, mirror, override, or document the image dependency, then rerun against a target that can pull it.",
      "support_artifact": "runs/next80-local-kind/bitnami-zookeeper-13.8.7-default/observation-receipt.yaml",
      "owner": "image-dependency",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base default --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-zookeeper-13-8-7-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "ha",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "ha",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-zookeeper-ha/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "ha",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: image-dependency: statefulset/zookeeper: image-pull-blocked (zookeeper-0[ImagePullBackOff ready=false restarts=0;] zookeeper-1[ImagePullBackOff ready=false restarts=0;] zookeeper-2[ImagePullBackOff ready=false restarts=0;)",
      "next_action": "Pin, mirror, override, or document the image dependency, then rerun against a target that can pull it.",
      "support_artifact": "runs/next80-local-kind/bitnami-zookeeper-13.8.7-ha/observation-receipt.yaml",
      "owner": "image-dependency",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "ha",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-zookeeper-13-8-7-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "legacy",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "legacy",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=1; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|zookeeper; runtime also fails to pull docker.io/bitnami/zookeeper:3.9.3-debian-12-r21",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/bitnami-zookeeper-legacy/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "legacy",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/bitnami/zookeeper/13.8.7 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "variant": "legacy",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-zookeeper-13-8-7-legacy-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "cloudnative-pg/cloudnative-pg",
      "version": "0.28.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "cloudnative-pg/cloudnative-pg",
      "version": "0.28.2",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "cloudnative-pg/cloudnative-pg",
      "version": "0.28.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cloudnative-pg-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "cloudnative-pg/cloudnative-pg",
      "version": "0.28.2",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/cloudnative-pg: not-ready (cloudnative-pg-d8f4779dd-wjsfg[CrashLoopBackOff ready=false restarts=5;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/cloudnative-pg-cloudnative-pg-0.28.2-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "cloudnative-pg/cloudnative-pg",
      "version": "0.28.2",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "cloudnative-pg/cloudnative-pg",
      "version": "0.28.2",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cloudnative-pg-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "coredns/coredns",
      "version": "1.45.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "coredns/coredns",
      "version": "1.45.2",
      "variant": "controller-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "coredns/coredns",
      "version": "1.45.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/coredns-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "crossplane-stable/crossplane",
      "version": "2.3.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "crossplane-stable/crossplane",
      "version": "2.3.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/crossplane-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "descheduler/descheduler",
      "version": "0.36.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "descheduler/descheduler",
      "version": "0.36.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "descheduler/descheduler",
      "version": "0.36.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/descheduler-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/dex/dex/0.24.0 --base default"
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-runtime: pod crash loop (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/dex-dex-default/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/dex: not-ready (dex-854b786b7-w67bg[CrashLoopBackOff ready=false restarts=4;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/dex-dex-0.24.0-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/dex/dex/0.24.0 --base default"
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/dex/dex/0.24.0 --base default"
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/dex-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "dex/dex",
      "version": "0.24.0",
      "variant": "web-ui-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/eck-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "ha",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/eck-operator-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "elastic/eck-operator",
      "version": "3.4.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/eck-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default + secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/elastic/filebeat/8.5.1/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base default"
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: required Secret missing (parity passed)",
      "next_action": "Stage the named Secret as a target fact, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/elastic-filebeat-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: daemonset/filebeat-filebeat: prerequisite-blocked (stuck creating: missing mount/secret/config) (filebeat-filebeat-z6hc6[ContainerCreating ready=false restarts=0;])",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/elastic-filebeat-8.5.1-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base default"
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/elastic/filebeat/8.5.1/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base default"
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/filebeat-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector + external-api",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/elastic/filebeat/8.5.1/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base node-or-cluster-collector"
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "helm-runtime: upstream not ready (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/elastic-filebeat-node-or-cluster-collector/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: daemonset/filebeat-filebeat: prerequisite-blocked (stuck creating: missing mount/secret/config) (filebeat-filebeat-s9zzq[ContainerCreating ready=false restarts=0;])",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/elastic-filebeat-8.5.1-node-or-cluster-collector/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base node-or-cluster-collector"
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/elastic/filebeat/8.5.1/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base node-or-cluster-collector"
    },
    {
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "variant": "node-or-cluster-collector",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/filebeat-node-or-cluster-collector-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default + external-api",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/kibana/8.5.1 --base default"
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "helm-runtime: upstream not ready (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/elastic-kibana-default/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: deployment/kibana-kibana: prerequisite-blocked (stuck creating: missing mount/secret/config) (kibana-kibana-9bf64bc55-8fpng[ContainerCreating ready=false restarts=0;])",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/elastic-kibana-8.5.1-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/kibana/8.5.1 --base default"
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/kibana/8.5.1 --base default"
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-kibana-8-5-1-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "variant": "web-ui-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/logstash",
      "version": "8.5.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/logstash",
      "version": "8.5.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/logstash-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/logstash",
      "version": "8.5.1",
      "variant": "ha",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: statefulset/logstash-logstash: not-ready (logstash-logstash-0[ ready=true restarts=0;] logstash-logstash-1[] logstash-logstash-2[])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/elastic-logstash-8.5.1-ha/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/logstash",
      "version": "8.5.1",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/logstash-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default + secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/metricbeat/8.5.1 --base default"
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: required Secret missing (parity passed)",
      "next_action": "Stage the named Secret as a target fact, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/elastic-metricbeat-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: daemonset/metricbeat-metricbeat: prerequisite-blocked (stuck creating: missing mount/secret/config) (metricbeat-kube-state-metrics-658dd9bbbc-ngcqr[ ready=true restarts=0;] metricbeat-metricbeat-68rfr[ContainerCreating ready=false restarts=0;] metricbeat-metri",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/elastic-metricbeat-8.5.1-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/metricbeat/8.5.1 --base default"
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/elastic/metricbeat/8.5.1 --base default"
    },
    {
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-metricbeat-8-5-1-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "cloudflare-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/external-dns-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "dry-run-txt-registry",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "dry-run-txt-registry",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/external-dns-dry-run-txt-registry-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/external-dns-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-dns/external-dns",
      "version": "1.21.1",
      "variant": "route53-irsa",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-secrets/external-secrets",
      "version": "2.5.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "external-secrets/external-secrets",
      "version": "2.5.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/external-secrets-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "external-secrets/external-secrets",
      "version": "2.5.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/external-secrets-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/goldilocks",
      "version": "10.3.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/goldilocks",
      "version": "10.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/goldilocks",
      "version": "10.3.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/goldilocks",
      "version": "10.3.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/goldilocks-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/vpa",
      "version": "4.11.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/vpa",
      "version": "4.11.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/vpa-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fairwinds-stable/vpa",
      "version": "4.11.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/vpa-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "falcosecurity/falco",
      "version": "9.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "falcosecurity/falco",
      "version": "9.0.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/falco-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "falcosecurity/falco",
      "version": "9.0.0",
      "variant": "node-or-cluster-collector",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "falcosecurity/falcosidekick",
      "version": "0.13.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "falcosecurity/falcosidekick",
      "version": "0.13.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/falcosidekick-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluent-bit",
      "version": "0.57.6",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluent-bit",
      "version": "0.57.6",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/fluent-bit-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluent-bit",
      "version": "0.57.6",
      "variant": "node-or-cluster-collector",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/fluent/fluentd/0.5.3/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/fluent/fluentd/0.5.3 --base default"
    },
    {
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/fluent/fluentd/0.5.3/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/fluent/fluentd/0.5.3 --base default"
    },
    {
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/fluentd-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "variant": "node-or-cluster-collector",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gatekeeper/gatekeeper",
      "version": "3.22.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gatekeeper/gatekeeper",
      "version": "3.22.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/gatekeeper-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gatekeeper/gatekeeper",
      "version": "3.22.2",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-route-actions/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "gatekeeper/gatekeeper",
      "version": "3.22.2",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/gatekeeper-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default + external-api",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/gitlab/gitlab-runner/0.89.0 --base default"
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "watch",
      "reason": "helm-runtime: upstream not ready (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/gitlab-gitlab-runner-default/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run kind-parity:run -- --recipe recipes/gitlab/gitlab-runner/0.89.0 --base default"
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/gitlab-runner: not-ready (gitlab-runner-844d54c8cc-x6rtt[ ready=false restarts=1;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/gitlab-gitlab-runner-0.89.0-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/gitlab/gitlab-runner/0.89.0 --base default"
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/gitlab/gitlab-runner/0.89.0 --base default"
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/gitlab-runner-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "variant": "runner-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/alloy",
      "version": "1.8.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/alloy",
      "version": "1.8.2",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/alloy",
      "version": "1.8.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (blocked)",
      "state": "blocked",
      "reason": "server-side promotion did not prove changed-unit catch-up and added-unit cloning",
      "next_action": "inspect the promotion receipt and resolve the recorded blocker",
      "support_artifact": "runs/grafana-alloy-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/alloy",
      "version": "1.8.2",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/alloy",
      "version": "1.8.2",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (blocked)",
      "state": "blocked",
      "reason": "server-side promotion did not prove changed-unit catch-up and added-unit cloning",
      "next_action": "inspect the promotion receipt and resolve the recorded blocker",
      "support_artifact": "runs/grafana-alloy-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/grafana",
      "version": "10.5.15",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/grafana",
      "version": "10.5.15",
      "variant": "customer-acme-prod",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/grafana-customer-acme-prod/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/grafana",
      "version": "10.5.15",
      "variant": "existing-secret-ingress",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/grafana-existing-secret-ingress-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/grafana",
      "version": "10.5.15",
      "variant": "prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/grafana-prod-us-east/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/grafana",
      "version": "10.5.15",
      "variant": "static-passwords",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/grafana-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "grafana/loki",
      "version": "7.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/loki",
      "version": "7.0.0",
      "variant": "simple-scalable-minio",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/loki",
      "version": "7.0.0",
      "variant": "simple-scalable-minio",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/loki-simple-scalable-minio-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/loki",
      "version": "7.0.0",
      "variant": "single-binary-filesystem",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/loki",
      "version": "7.0.0",
      "variant": "single-binary-filesystem",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/loki-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "grafana/promtail",
      "version": "6.17.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/promtail",
      "version": "6.17.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/promtail-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/grafana/pyroscope/2.0.2/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base default"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/grafana/pyroscope/2.0.2/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base default"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pyroscope-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/grafana/pyroscope/2.0.2/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base ha"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=2 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||podlogs.monitoring.grafana.com; v1|Namespace||default",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/grafana-pyroscope-ha/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: statefulset/pyroscope: not-ready (pyroscope-0[ ready=false restarts=1;] pyroscope-1[ ready=false restarts=1;] pyroscope-alloy-0[ ready=true restarts=0; ready=true restarts=0;] surveyor-c4759d87-)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/grafana-pyroscope-2.0.2-ha/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base ha"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/grafana/pyroscope/2.0.2/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base ha"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pyroscope-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "no-crds + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "no-crds",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/grafana/pyroscope/2.0.2/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base no-crds"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "no-crds",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: ConfigHub workload not ready (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/grafana/pyroscope/2.0.2/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base no-crds"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pyroscope-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/rollout-operator",
      "version": "0.49.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/rollout-operator",
      "version": "0.49.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/rollout-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/rollout-operator",
      "version": "0.49.0",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/rollout-operator: not-ready (rollout-operator-5f688cdb68-psdjv[ ready=false restarts=0;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/grafana-rollout-operator-0.49.0-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/rollout-operator",
      "version": "0.49.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/rollout-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/tempo",
      "version": "1.24.4",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "grafana/tempo",
      "version": "1.24.4",
      "variant": "local-persistent",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/tempo-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "grafana/tempo",
      "version": "1.24.4",
      "variant": "s3-query-observability",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/grafana/tempo/1.24.4/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/tempo/1.24.4 --base s3-query-observability"
    },
    {
      "chart": "grafana/tempo",
      "version": "1.24.4",
      "variant": "s3-query-observability",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: cloud-or-provider-prerequisite: statefulset/tempo: prerequisite-blocked (stuck creating: missing mount/secret/config) (tempo-0[CreateContainerConfigError ready=false restarts=0; ready=true restarts=0;])",
      "next_action": "Model the provider dependency as target facts or an external managed prerequisite before rerun.",
      "support_artifact": "runs/next80-local-kind/grafana-tempo-1.24.4-s3-query-observability/observation-receipt.yaml",
      "owner": "cloud-or-provider-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/tempo/1.24.4 --base s3-query-observability"
    },
    {
      "chart": "grafana/tempo",
      "version": "1.24.4",
      "variant": "s3-query-observability",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/grafana/tempo/1.24.4/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/grafana/tempo/1.24.4 --base s3-query-observability"
    },
    {
      "chart": "grafana/tempo",
      "version": "1.24.4",
      "variant": "s3-query-observability",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/tempo-s3-query-observability-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "haproxytech/kubernetes-ingress",
      "version": "1.52.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "haproxytech/kubernetes-ingress",
      "version": "1.52.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/haproxy-ingress-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "default-control-plane",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "default-control-plane",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/consul-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "secure-mesh-existing-secrets",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/hashicorp/consul/2.0.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/consul/2.0.0 --base secure-mesh-existing-secrets --target-profile kind-three-node"
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "secure-mesh-existing-secrets",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: webhook-cert-lifecycle: deployment/consul-consul-connect-injector: not-ready (consul-consul-connect-injector-5f47dfbd9-knxmc[CrashLoopBackOff ready=false restarts=6;] consul-consul-ingress-gateway-7c9f6b86f8-v484m[PodInitializing ready=fa)",
      "next_action": "Model the serving certificate as a generated fact, target fact, cert-manager dependency, preflight, or explicit lifecycle action, then rerun.",
      "support_artifact": "runs/next80-local-kind/hashicorp-consul-2.0.0-secure-mesh-existing-secrets/observation-receipt.yaml",
      "owner": "webhook-cert-lifecycle",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/consul/2.0.0 --base secure-mesh-existing-secrets --target-profile kind-three-node"
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "secure-mesh-existing-secrets",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "secure-mesh-existing-secrets",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/hashicorp/consul/2.0.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/consul/2.0.0 --base secure-mesh-existing-secrets --target-profile kind-three-node"
    },
    {
      "chart": "hashicorp/consul",
      "version": "2.0.0",
      "variant": "secure-mesh-existing-secrets",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/consul-secure-mesh-existing-secrets-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/hashicorp/terraform/1.1.2/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base default"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=2 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||workspaces.app.terraform.io; v1|Namespace||default; runtime also requires hook/target Secret(s): terraformrc, workspacesecrets",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/hashicorp-terraform-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: deployment/terraform-terraform-sync-workspace: prerequisite-blocked (stuck creating: missing mount/secret/config) (terraform-terraform-sync-workspace-67688dd4fd-tk52q[ContainerCreating ready=false restarts=0;])",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/hashicorp-terraform-1.1.2-default/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base default"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/hashicorp/terraform/1.1.2/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base default"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/terraform-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds + secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/hashicorp/terraform/1.1.2/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base no-crds"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: required Secret missing (parity passed)",
      "next_action": "Stage the named Secret as a target fact, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/hashicorp-terraform-no-crds/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: deployment/terraform-terraform-sync-workspace: prerequisite-blocked (stuck creating: missing mount/secret/config) (kibana-kibana-9bf64bc55-qm87r[ContainerCreating ready=false restarts=0;] rollout-operator-5f688cdb68-pc7sz[ ready=false restarts=0;] surveyor-c47",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/hashicorp-terraform-1.1.2-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base no-crds"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod ContainerCreating (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/hashicorp/terraform/1.1.2/target-prerequisite-plan.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base no-crds"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/terraform-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/vault-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "dev-mode",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "dev-mode",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/vault-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "ha-raft-ui + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "ha-raft-ui",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "operate-policy: Vault init/unseal readiness (parity passed)",
      "next_action": "Perform and record the operational step (e.g. Vault init/unseal) for the target scope; see the operating-policy artifact.",
      "support_artifact": "recipes/hashicorp/vault/0.32.0/operating-policy.yaml",
      "owner": "needs operate review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/vault/0.32.0 --base ha-raft-ui"
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "ha-raft-ui",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: target-prerequisite: statefulset/vault: prerequisite-blocked (stuck creating: missing mount/secret/config) (vault-0[ContainerCreating ready=false restarts=0;] vault-1[] vault-2[] vault-agent-injector-8c76487db-r7vcn[ ready=true restarts=0;])",
      "next_action": "Turn the missing target condition into a target fact, preflight, lifecycle route, or better base variant.",
      "support_artifact": "runs/next80-local-kind/hashicorp-vault-0.32.0-ha-raft-ui/observation-receipt.yaml",
      "owner": "target-prerequisite",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/vault/0.32.0 --base ha-raft-ui"
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "ha-raft-ui",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "ha-raft-ui",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "operate-policy: Vault init/unseal readiness (parity passed)",
      "next_action": "Perform and record the operational step (e.g. Vault init/unseal) for the target scope; see the operating-policy artifact.",
      "support_artifact": "recipes/hashicorp/vault/0.32.0/operating-policy.yaml",
      "owner": "needs operate review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/hashicorp/vault/0.32.0 --base ha-raft-ui"
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "ha-raft-ui",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/vault-ha-raft-ui-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "regulated-prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/vault-regulated-prod-us-east/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "variant": "staging-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/vault-staging-us-east/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "ingress-nginx/ingress-nginx",
      "version": "4.15.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "ingress-nginx/ingress-nginx",
      "version": "4.15.1",
      "variant": "admission-disabled",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "ingress-nginx/ingress-nginx",
      "version": "4.15.1",
      "variant": "admission-disabled",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/ingress-nginx-admission-disabled-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "ingress-nginx/ingress-nginx",
      "version": "4.15.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/ingress-nginx-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "ingress-nginx/ingress-nginx",
      "version": "4.15.1",
      "variant": "internal-clusterip",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "ingress-nginx/ingress-nginx",
      "version": "4.15.1",
      "variant": "internal-clusterip",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/ingress-nginx-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "controller-default-reviewed",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/istio/gateway/1.30.0 --base controller-default-reviewed"
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "controller-default-reviewed",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/istio-gateway-controller-default-reviewed/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "controller-default-reviewed",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: image-dependency: deployment/gateway: image-pull-blocked (gateway-7c598dffd4-w4m4g[ImagePullBackOff ready=false restarts=0;] kibana-kibana-9bf64bc55-qm87r[ContainerCreating ready=false restarts=0;] rollout-operator-5f6)",
      "next_action": "Pin, mirror, override, or document the image dependency, then rerun against a target that can pull it.",
      "support_artifact": "runs/next80-local-kind/istio-gateway-1.30.0-controller-default-reviewed/observation-receipt.yaml",
      "owner": "image-dependency",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/istio/gateway/1.30.0 --base controller-default-reviewed"
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "controller-default-reviewed",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/istio/gateway/1.30.0 --base controller-default-reviewed"
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "controller-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/istio-gateway-controller-default-reviewed-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/istio/gateway/1.30.0 --base default"
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun.",
      "support_artifact": "runs/live-kind-parity/istio-gateway-default/receipt.yaml",
      "owner": "catalog or image publisher",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: image-dependency: deployment/gateway: image-pull-blocked (gateway-7c598dffd4-jlxxc[ImagePullBackOff ready=false restarts=0;])",
      "next_action": "Pin, mirror, override, or document the image dependency, then rerun against a target that can pull it.",
      "support_artifact": "runs/next80-local-kind/istio-gateway-1.30.0-default/observation-receipt.yaml",
      "owner": "image-dependency",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/istio/gateway/1.30.0 --base default"
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "remote-image: image pull failed or pinned image is unavailable (parity passed)",
      "next_action": "Resolve the image by digest, override to a maintained image, or refresh the catalog base with a pullable image, then rerun the live lane.",
      "support_artifact": "data/image-digest-workdown/summary.md",
      "owner": "catalog or image publisher",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/istio/gateway/1.30.0 --base default"
    },
    {
      "chart": "istio/gateway",
      "version": "1.30.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/istio-gateway-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "default + namespace",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "target-prerequisite: namespace missing (parity passed)",
      "next_action": "Stage the named prerequisite as a target fact (see the target-prerequisite-plan), then the row can move to pass.",
      "support_artifact": "recipes/istio/istiod/1.30.0/target-prerequisite-plan.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/istio/istiod/1.30.0 --base default"
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: required Namespace missing (parity passed)",
      "next_action": "Declare and stage the required Namespace as a target fact, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/istio-istiod-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/istiod: not-ready ()",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/istio-istiod-1.30.0-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/istio/istiod/1.30.0 --base default"
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "target-prerequisite: namespace missing (parity passed)",
      "next_action": "Stage the named prerequisite as a target fact (see the target-prerequisite-plan), then the row can move to pass.",
      "support_artifact": "recipes/istio/istiod/1.30.0/target-prerequisite-plan.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/istio/istiod/1.30.0 --base default"
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/istiod-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "external-ca",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "minimal-profile",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "istio/istiod",
      "version": "1.30.0",
      "variant": "revisioned-control-plane",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "default + crd",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "target-prerequisite: cert-manager CRDs missing",
      "next_action": "Stage the named prerequisite as a target fact (see the target-prerequisite-plan), then the row can move to pass.",
      "support_artifact": "recipes/jaegertracing/jaeger-operator/2.57.0/target-prerequisite-plan.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/jaegertracing/jaeger-operator/2.57.0 --base default"
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: cert-manager CRDs missing",
      "next_action": "Stage the chart's CRDs as target facts (or pick a CRD-rendering base), then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/jaegertracing-jaeger-operator-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "target-prerequisite: cert-manager CRDs missing",
      "next_action": "Stage the named prerequisite as a target fact (see the target-prerequisite-plan), then the row can move to pass.",
      "support_artifact": "recipes/jaegertracing/jaeger-operator/2.57.0/target-prerequisite-plan.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/jaegertracing/jaeger-operator/2.57.0 --base default"
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/jaeger-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "no-crds + crd",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "no-crds",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: cert-manager CRDs missing",
      "next_action": "Stage the chart's CRDs as target facts (or pick a CRD-rendering base), then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/jaegertracing-jaeger-operator-no-crds/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: webhook-cert-lifecycle: deployment/jaeger-operator: prerequisite-blocked (stuck creating: missing mount/secret/config) (jaeger-operator-b44465548-7jfbn[ContainerCreating ready=false restarts=0;] node-collector-df9b9bcd9-nnjs4[Completed ready=false restarts=0;] scan-vulnerabilityr)",
      "next_action": "Model the serving certificate as a generated fact, target fact, cert-manager dependency, preflight, or explicit lifecycle action, then rerun.",
      "support_artifact": "runs/next80-local-kind/jaegertracing-jaeger-operator-2.57.0-no-crds/observation-receipt.yaml",
      "owner": "webhook-cert-lifecycle",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/jaeger-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger",
      "version": "4.8.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger",
      "version": "4.8.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/jaeger-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jaegertracing/jaeger",
      "version": "4.8.0",
      "variant": "node-or-cluster-collector",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/cert-manager-csi-driver",
      "version": "v0.14.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/cert-manager-csi-driver",
      "version": "v0.14.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cert-manager-csi-driver-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/cert-manager",
      "version": "v1.20.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/cert-manager",
      "version": "v1.20.2",
      "variant": "crds-enabled",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/cert-manager-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "jetstack/cert-manager",
      "version": "v1.20.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cert-manager-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/jetstack/trust-manager/v0.22.1/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/jetstack/trust-manager/v0.22.1 --base default"
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/trust-manager: not-ready (node-collector-df9b9bcd9-nnjs4[Completed ready=false restarts=0;] scan-vulnerabilityreport-578fc5b667-79lfn[Completed ready=false restarts=0;] scan-vulnerabilit)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/jetstack-trust-manager-v0.22.1-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/jetstack/trust-manager/v0.22.1 --base default"
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/jetstack/trust-manager/v0.22.1/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/jetstack/trust-manager/v0.22.1 --base default"
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/trust-manager-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/trust-manager: not-ready (trust-manager-6db9f66446-c44df[PodInitializing ready=false restarts=0;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/jetstack-trust-manager-v0.22.1-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "jetstack/trust-manager",
      "version": "v0.22.1",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/trust-manager-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kedacore/keda",
      "version": "2.19.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kedacore/keda",
      "version": "2.19.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-route-actions/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "kedacore/keda",
      "version": "2.19.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/keda-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kedacore/keda",
      "version": "2.19.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/keda-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno-policies",
      "version": "3.8.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno-policies",
      "version": "3.8.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: ClusterPolicy OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/kyverno/kyverno-policies/3.8.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/kyverno/kyverno-policies/3.8.0 --base default"
    },
    {
      "chart": "kyverno/kyverno-policies",
      "version": "3.8.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "watch",
      "reason": "watch: object parity passed; readiness needs review",
      "next_action": "Confirm workload readiness on the target and record the result.",
      "support_artifact": "runs/live-kind-parity/kyverno-kyverno-policies-default/receipt.yaml",
      "owner": "needs readiness review",
      "completion_class": "already-decided",
      "command": "npm run kind-parity:run -- --recipe recipes/kyverno/kyverno-policies/3.8.0 --base default"
    },
    {
      "chart": "kyverno/kyverno-policies",
      "version": "3.8.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: ClusterPolicy OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/kyverno/kyverno-policies/3.8.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/kyverno/kyverno-policies/3.8.0 --base default"
    },
    {
      "chart": "kyverno/kyverno-policies",
      "version": "3.8.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kyverno-policies-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "default-admission",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kyverno-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "external-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "ha-admission-reports",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "lifecycle route(s) defined (observed:6) but not yet observed live",
      "next_action": "observe the routed lifecycle action and record a receipt (see lifecycle-route-actions)",
      "support_artifact": "data/lifecycle-routes/summary.md",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "kyverno/kyverno",
      "version": "3.8.1",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kyverno-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "linkerd/linkerd-crds",
      "version": "1.8.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "linkerd/linkerd-crds",
      "version": "1.8.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: CustomResourceDefinition OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/linkerd/linkerd-crds/1.8.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/linkerd/linkerd-crds/1.8.0 --base default"
    },
    {
      "chart": "linkerd/linkerd-crds",
      "version": "1.8.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: CustomResourceDefinition OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/linkerd/linkerd-crds/1.8.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/linkerd/linkerd-crds/1.8.0 --base default"
    },
    {
      "chart": "linkerd/linkerd-crds",
      "version": "1.8.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/linkerd-crds-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "longhorn/longhorn",
      "version": "1.11.2",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "longhorn/longhorn",
      "version": "1.11.2",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/longhorn-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "longhorn/longhorn",
      "version": "1.11.2",
      "variant": "ui-ingress",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/longhorn-ui-ingress-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "metrics-server/metrics-server",
      "version": "3.13.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "metrics-server/metrics-server",
      "version": "3.13.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/metrics-server-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "metrics-server/metrics-server",
      "version": "3.13.0",
      "variant": "external-tls-ca",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/metrics-server-external-tls-ca-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "metrics-server/metrics-server",
      "version": "3.13.0",
      "variant": "prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-target-bound/metrics-server-prod-us-east/receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "minio-operator/operator",
      "version": "7.1.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "minio-operator/operator",
      "version": "7.1.1",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "minio-operator/operator",
      "version": "7.1.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/minio-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "minio-operator/operator",
      "version": "7.1.1",
      "variant": "storage-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "minio-operator/tenant",
      "version": "7.1.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "minio-operator/tenant",
      "version": "7.1.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/minio-operator/tenant/7.1.1/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/minio-operator/tenant/7.1.1 --base default"
    },
    {
      "chart": "minio-operator/tenant",
      "version": "7.1.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/minio-operator/tenant/7.1.1/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/minio-operator/tenant/7.1.1 --base default"
    },
    {
      "chart": "minio-operator/tenant",
      "version": "7.1.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/minio-tenant-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/nack",
      "version": "0.34.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/nack",
      "version": "0.34.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=7 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||accounts.jetstream.nats.io; apiextensions.k8s.io/v1|CustomResourceDefinition||consumers.jetstream.nats.io; apiextensions.k8s.io/v1|CustomResourceDefinition||keyvalues.jetstream.nats.io; apiextensions.k8s.io/v1|CustomResourceDefinition||objectstores.jetstream.nats.io; apiextensions.k8s.io/v1|CustomResourceDefinition||streams.jetstream.nats.io; apiextensions.k8s.io/v1|CustomResourceDefinition||streamtemplates.jetstream.nats.io",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/nats-nack-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "nats/nack",
      "version": "0.34.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nack-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/nack",
      "version": "0.34.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nack-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/nats",
      "version": "2.14.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/nats",
      "version": "2.14.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nats-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/nats",
      "version": "2.14.0",
      "variant": "ha",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=1 diffs=3; extra=v1|Namespace||default; objects=apps/v1|StatefulSet||nats; v1|ConfigMap||nats-config; v1|Service||nats-headless",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/nats-nats-ha/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "nats/nats",
      "version": "2.14.0",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nats-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed + external-api",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/nats/surveyor/0.20.9/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default-reviewed"
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "helm-runtime: upstream not ready (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/nats-surveyor-default-reviewed/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: deployment/surveyor: prerequisite-blocked (stuck creating: missing mount/secret/config) (kibana-kibana-9bf64bc55-qm87r[ContainerCreating ready=false restarts=0;] nats-0[ ready=true restarts=0; ready=true restarts=0;] nats-1[ ready=true restarts=0; r)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/nats-surveyor-0.20.9-default-reviewed/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default-reviewed"
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/nats/surveyor/0.20.9/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default-reviewed"
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/surveyor-default-reviewed-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/nats/surveyor/0.20.9/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default"
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-runtime: pod crash loop (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/nats-surveyor-default/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/surveyor: not-ready (surveyor-c4759d87-fx675[CrashLoopBackOff ready=false restarts=5;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/nats-surveyor-0.20.9-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default"
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "recipes/nats/surveyor/0.20.9/runtime-review.yaml",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default"
    },
    {
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/surveyor-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "helm-runtime: upstream leg blocked",
      "next_action": "Catalog work: reconcile the base, render context, target facts, or semantic contract with the live Helm result, then rerun.",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner/4.0.18 --base default"
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "render-input: required Helm values missing",
      "next_action": "Provide the required values in the base/variant, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: admission-or-rbac: apply: The Deployment \"nfs-subdir-external-provisioner\" is invalid: * spec.template.spec.volumes[0].nfs.server: Required value * spec.template.spec.containers[0].volumeMounts[0].name: Not found: \"nfs-subdir",
      "next_action": "Decide whether the base needs a permission/admission preflight, a different target scope, or a rejected support boundary.",
      "support_artifact": "runs/next80-local-kind/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18-default/observation-receipt.yaml",
      "owner": "admission-or-rbac",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner/4.0.18 --base default"
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "helm-runtime: upstream leg blocked",
      "next_action": "Catalog work: reconcile the base, render context, target facts, or semantic contract with the live Helm result, then rerun.",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner/4.0.18 --base default"
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/nfs-provisioner-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "variant": "storage-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/open-telemetry/opentelemetry-operator/0.114.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/open-telemetry/opentelemetry-operator/0.114.0 --base default"
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: inspect-receipt: target fact CRDs: source variant jetstack/cert-manager@v1.20.2/crds-enabled render missing",
      "next_action": "Read the receipt and add a classifier rule only after the product route is clear.",
      "support_artifact": "runs/next80-local-kind/open-telemetry-opentelemetry-operator-0.114.0-default/observation-receipt.yaml",
      "owner": "inspect-receipt",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/open-telemetry/opentelemetry-operator/0.114.0 --base default"
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/open-telemetry/opentelemetry-operator/0.114.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/open-telemetry/opentelemetry-operator/0.114.0 --base default"
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/opentelemetry-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: webhook-cert-lifecycle: deployment/opentelemetry-operator: prerequisite-blocked (stuck creating: missing mount/secret/config) (node-collector-df9b9bcd9-nnjs4[Completed ready=false restarts=0;] opentelemetry-operator-7b79f764b-kfcxt[ContainerCreating ready=false restarts=0;] scan-vuln",
      "next_action": "Model the serving certificate as a generated fact, target fact, cert-manager dependency, preflight, or explicit lifecycle action, then rerun.",
      "support_artifact": "runs/next80-local-kind/open-telemetry-opentelemetry-operator-0.114.0-no-crds/observation-receipt.yaml",
      "owner": "webhook-cert-lifecycle",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "open-telemetry/opentelemetry-operator",
      "version": "0.114.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/opentelemetry-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "default + review",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/opencost/opencost/2.5.21 --base default"
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-runtime: pod crash loop (parity passed)",
      "next_action": "Review the runtime residue (crash loop / readiness) on the target and record a runtime-review support artifact.",
      "support_artifact": "runs/live-kind-parity/opencost-opencost-default/receipt.yaml",
      "owner": "needs runtime review",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "fail",
      "reason": "local-live fail: runtime-readiness: deployment/opencost: not-ready (opencost-6545848947-wcs2m[CrashLoopBackOff ready=false restarts=4; ready=true restarts=0;])",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/opencost-opencost-2.5.21-default/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/opencost/opencost/2.5.21 --base default"
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "target-runtime: pod config/runtime errors (parity passed)",
      "next_action": "Review the runtime residue (pod errors / not ready) on the target and record a runtime-review support artifact.",
      "support_artifact": "",
      "owner": "needs runtime review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/opencost/opencost/2.5.21 --base default"
    },
    {
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/opencost-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pg-operator",
      "version": "3.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pg-operator",
      "version": "3.0.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pg-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pg-operator",
      "version": "3.0.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pg-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/psmdb-operator",
      "version": "1.22.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/psmdb-operator",
      "version": "1.22.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/psmdb-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/psmdb-operator",
      "version": "1.22.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/psmdb-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pxc-operator",
      "version": "1.19.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pxc-operator",
      "version": "1.19.1",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "percona/pxc-operator",
      "version": "1.19.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pxc-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pxc-operator",
      "version": "1.19.1",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: deployment/pxc-operator: prerequisite-blocked (stuck creating: missing mount/secret/config) (kibana-kibana-9bf64bc55-qm87r[ContainerCreating ready=false restarts=0;] pxc-operator-5f59645bd-ctt85[CrashLoopBackOff ready=false restarts=4;] rollout-operator)",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/percona-pxc-operator-1.19.1-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "percona/pxc-operator",
      "version": "1.19.1",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "percona/pxc-operator",
      "version": "1.19.1",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pxc-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "projectcalico/tigera-operator",
      "version": "v3.32.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "projectcalico/tigera-operator",
      "version": "v3.32.0",
      "variant": "controller-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "projectcalico/tigera-operator",
      "version": "v3.32.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: lifecycle-ordering: apply: resource mapping not found for name: \"default\" namespace: \"\" from \"STDIN\": no matches for kind \"APIServer\" in version \"operator.tigera.io/v1\" ensure CRDs are installed first resource mapping not found",
      "next_action": "Use the lifecycle route for this chart, then observe the staged apply or cleanup sequence with a receipt.",
      "support_artifact": "runs/next80-local-kind/projectcalico-tigera-operator-v3.32.0-default/observation-receipt.yaml",
      "owner": "lifecycle-ordering",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "projectcalico/tigera-operator",
      "version": "v3.32.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/tigera-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/alertmanager",
      "version": "1.37.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/alertmanager",
      "version": "1.37.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/alertmanager-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/alertmanager",
      "version": "1.37.0",
      "variant": "ha",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/alertmanager-ha-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "85.3.3",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "85.3.3",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "variant-keyed K rig: the chart-variant's only two-cluster kind parity receipt is on 86.1.0 and is blocked (parity: semantic object diff), so no version has a passing K proof — runs/live-kind-parity/prometheus-community-kube-prometheus-stack-default/receipt.yaml",
      "next_action": "resolve the variant's K blocker on 86.1.0; the K rig keys receipts by chart-variant, so re-running this version would overwrite that receipt",
      "support_artifact": "runs/live-kind-parity/prometheus-community-kube-prometheus-stack-default/receipt.yaml",
      "owner": "kind-parity",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "85.3.3",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kube-prometheus-stack-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "85.3.3",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kube-prometheus-stack-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "86.1.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "86.1.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=11 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||alertmanagerconfigs.monitoring.coreos.com; apiextensions.k8s.io/v1|CustomResourceDefinition||alertmanagers.monitoring.coreos.com; apiextensions.k8s.io/v1|CustomResourceDefinition||podmonitors.monitoring.coreos.com; apiextensions.k8s.io/v1|CustomResourceDefinition||probes.monitoring.coreos.com; apiextensions.k8s.io/v1|CustomResourceDefinition||prometheusagents.monitoring.coreos.com; apiextensions.k8s.io/v1|CustomResourceDefinition||prometheuses.monitoring.coreos.com",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/prometheus-community-kube-prometheus-stack-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "86.1.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-kube-prometheus-stack-86-1-0-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "86.1.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-kube-prometheus-stack-86-1-0-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-state-metrics",
      "version": "7.4.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-state-metrics",
      "version": "7.4.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kube-state-metrics-cluster-metrics-readonly-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/kube-state-metrics",
      "version": "7.4.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/kube-state-metrics-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "apiservice-v1-capability",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "apiservice-v1-capability",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-adapter-apiservice-v1-capability-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly + crd",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "capability-profile: rendered APIService version is not served by target Kubernetes",
      "next_action": "Use or promote the base rendered for the target API set, then rerun live parity. For prometheus-adapter on modern Kubernetes, use the apiservice-v1-capability base.",
      "support_artifact": "recipes/prometheus-community/prometheus-adapter/5.3.0/CATALOG.md",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base cluster-metrics-readonly"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: CRDs missing",
      "next_action": "Stage the chart's CRDs as target facts (or pick a CRD-rendering base), then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/prometheus-community-prometheus-adapter-cluster-metrics-readonly/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: api-version-unsupported: apply: error: resource mapping not found for name: \"v1beta1.custom.metrics.k8s.io\" namespace: \"\" from \"STDIN\": no matches for kind \"APIService\" in version \"apiregistration.k8s.io/v1beta1\" ensure CRDs are ins",
      "next_action": "Use a supported chart version, compatibility base, or target Kubernetes profile before rerun.",
      "support_artifact": "runs/next80-local-kind/prometheus-community-prometheus-adapter-5.3.0-cluster-metrics-readonly/observation-receipt.yaml",
      "owner": "api-version-unsupported",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base cluster-metrics-readonly"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "capability-profile: rendered APIService version is not served by target Kubernetes",
      "next_action": "Use or promote the base rendered for the target API set, then rerun live parity. For prometheus-adapter on modern Kubernetes, use the apiservice-v1-capability base.",
      "support_artifact": "recipes/prometheus-community/prometheus-adapter/5.3.0/CATALOG.md",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base cluster-metrics-readonly"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-adapter-cluster-metrics-readonly-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default + crd",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "capability-profile: rendered APIService version is not served by target Kubernetes",
      "next_action": "Use or promote the base rendered for the target API set, then rerun live parity. For prometheus-adapter on modern Kubernetes, use the apiservice-v1-capability base.",
      "support_artifact": "recipes/prometheus-community/prometheus-adapter/5.3.0/CATALOG.md",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base default"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: CRDs missing",
      "next_action": "Stage the chart's CRDs as target facts (or pick a CRD-rendering base), then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/prometheus-community-prometheus-adapter-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: api-version-unsupported: apply: error: resource mapping not found for name: \"v1beta1.custom.metrics.k8s.io\" namespace: \"\" from \"STDIN\": no matches for kind \"APIService\" in version \"apiregistration.k8s.io/v1beta1\" ensure CRDs are ins",
      "next_action": "Use a supported chart version, compatibility base, or target Kubernetes profile before rerun.",
      "support_artifact": "runs/next80-local-kind/prometheus-community-prometheus-adapter-5.3.0-default/observation-receipt.yaml",
      "owner": "api-version-unsupported",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base default"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "capability-profile: rendered APIService version is not served by target Kubernetes",
      "next_action": "Use or promote the base rendered for the target API set, then rerun live parity. For prometheus-adapter on modern Kubernetes, use the apiservice-v1-capability base.",
      "support_artifact": "recipes/prometheus-community/prometheus-adapter/5.3.0/CATALOG.md",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base default"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-adapter-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-blackbox-exporter",
      "version": "11.10.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-blackbox-exporter",
      "version": "11.10.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-blackbox-exporter-cluster-metrics-readonly-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-blackbox-exporter",
      "version": "11.10.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-blackbox-exporter-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-node-exporter",
      "version": "4.55.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-node-exporter",
      "version": "4.55.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-node-exporter-cluster-metrics-readonly-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-node-exporter",
      "version": "4.55.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-node-exporter-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-operator-crds",
      "version": "29.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-operator-crds",
      "version": "29.0.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-operator-crds",
      "version": "29.0.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-operator-crds",
      "version": "29.0.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-prometheus-operator-crds-29-0-0-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-pushgateway",
      "version": "3.6.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-pushgateway",
      "version": "3.6.0",
      "variant": "cluster-metrics-readonly",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus-pushgateway",
      "version": "3.6.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-prometheus-pushgateway-3-6-0-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/prometheus-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/prometheus-prod-us-east/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "prod-us-east",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-target-bound/prometheus-server-only-prod-us-east/receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "server-only-ephemeral",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/prometheus-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "staging-eu-west",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-execution/prometheus-staging-eu-west/variant-create-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.8.0",
      "variant": "staging-eu-west",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-derived-variant)",
      "state": "not-applicable-derived-variant",
      "reason": "derived ConfigHub variant creation is not the base-variant promotion lane",
      "next_action": "use the derived variant receipts and target-bound lane for this downstream variant",
      "support_artifact": "runs/derived-variant-target-bound/prometheus-server-only-staging-eu-west/receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.9.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.9.0",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: StatefulSet OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/prometheus-community/prometheus/29.9.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus/29.9.0 --base default"
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.9.0",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: StatefulSet OutOfSync health Healthy (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/prometheus-community/prometheus/29.9.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus/29.9.0 --base default"
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.9.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-prometheus-29-9-0-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "prometheus-community/prometheus",
      "version": "29.9.0",
      "variant": "server-only-ephemeral",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/cl-prometheus-29-9-0-server-only-ephemeral-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "variant": "default + namespace",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "target-prerequisite: namespace missing (parity passed)",
      "next_action": "Stage the named prerequisite as a target fact (see the target-prerequisite-plan), then the row can move to pass.",
      "support_artifact": "recipes/rook-release/rook-ceph-cluster/v1.19.5/target-prerequisite-plan.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/rook-release/rook-ceph-cluster/v1.19.5 --base default"
    },
    {
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: required Namespace missing (parity passed)",
      "next_action": "Declare and stage the required Namespace as a target fact, then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/rook-release-rook-ceph-cluster-default/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "target-prerequisite: namespace missing (parity passed)",
      "next_action": "Stage the named prerequisite as a target fact (see the target-prerequisite-plan), then the row can move to pass.",
      "support_artifact": "recipes/rook-release/rook-ceph-cluster/v1.19.5/target-prerequisite-plan.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/rook-release/rook-ceph-cluster/v1.19.5 --base default"
    },
    {
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/rook-ceph-cluster-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph",
      "version": "v1.19.5",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph",
      "version": "v1.19.5",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "rook-release/rook-ceph",
      "version": "v1.19.5",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/rook-ceph-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "runix/pgadmin4",
      "version": "1.62.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "runix/pgadmin4",
      "version": "1.62.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/pgadmin4-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "runix/pgadmin4",
      "version": "1.62.0",
      "variant": "web-ui-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "sealed-secrets/sealed-secrets",
      "version": "2.18.6",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "sealed-secrets/sealed-secrets",
      "version": "2.18.6",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/sealed-secrets-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "sealed-secrets/sealed-secrets",
      "version": "2.18.6",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/sealed-secrets-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "secrets-store-csi-driver/secrets-store-csi-driver",
      "version": "1.6.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "secrets-store-csi-driver/secrets-store-csi-driver",
      "version": "1.6.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven-with-watch)",
      "state": "watch",
      "reason": "server-side promotion mechanics passed, but changeset-bound promote failed and required the no-changeset fallback",
      "next_action": "ConfigHub v0.1.80 includes the changeset-bound add-new-units fix; rerun this promotion proof to replace the old fallback receipt with a full pass",
      "support_artifact": "runs/secrets-store-csi-driver-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "already-decided",
      "command": ""
    },
    {
      "chart": "secrets-store-csi-driver/secrets-store-csi-driver",
      "version": "1.6.0",
      "variant": "sync-secret-rotation",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/secrets-store-csi-driver-sync-secret-rotation-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "stakater/reloader",
      "version": "2.2.12",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "stakater/reloader",
      "version": "2.2.12",
      "variant": "controller-default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/reloader-controller-default-reviewed-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "stakater/reloader",
      "version": "2.2.12",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/reloader-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "strimzi/strimzi-kafka-operator",
      "version": "1.0.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "strimzi/strimzi-kafka-operator",
      "version": "1.0.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "strimzi/strimzi-kafka-operator",
      "version": "1.0.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/strimzi-kafka-operator-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "strimzi/strimzi-kafka-operator",
      "version": "1.0.0",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: runtime-readiness: deployment/strimzi-cluster-operator: prerequisite-blocked (stuck creating: missing mount/secret/config) (kibana-kibana-9bf64bc55-qm87r[ContainerCreating ready=false restarts=0;] rollout-operator-5f688cdb68-pc7sz[ ready=false restarts=0;] strimzi-cluster-operat",
      "next_action": "Inspect pod logs/events, decide whether the issue is target policy, lifecycle, chart configuration, or a better base, then rerun.",
      "support_artifact": "runs/next80-local-kind/strimzi-strimzi-kafka-operator-1.0.0-no-crds/observation-receipt.yaml",
      "owner": "runtime-readiness",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "strimzi/strimzi-kafka-operator",
      "version": "1.0.0",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "strimzi/strimzi-kafka-operator",
      "version": "1.0.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/strimzi-kafka-operator-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "cloud-loadbalancer",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "semantic object parity issue: missing=0 extra=26 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||accesscontrolpolicies.hub.traefik.io; apiextensions.k8s.io/v1|CustomResourceDefinition||aiservices.hub.traefik.io; apiextensions.k8s.io/v1|CustomResourceDefinition||apiauths.hub.traefik.io; apiextensions.k8s.io/v1|CustomResourceDefinition||apibundles.hub.traefik.io; apiextensions.k8s.io/v1|CustomResourceDefinition||apicatalogitems.hub.traefik.io; apiextensions.k8s.io/v1|CustomResourceDefinition||apiplans.hub.traefik.io",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/traefik-traefik-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "default",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/traefik-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "external-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "internal-clusterip-dashboard-off",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "no-crds",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/traefik/traefik/40.2.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/traefik/traefik/40.2.0 --base no-crds"
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "no-crds",
      "lane": "lifecycle",
      "lane_label": "lifecycle-observed",
      "state": "todo",
      "reason": "chart has hook/lifecycle behavior with no live observation yet",
      "next_action": "decide and record the lifecycle route, then observe it live",
      "support_artifact": "",
      "owner": "catalog",
      "completion_class": "needs-run",
      "command": ""
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "no-crds",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "watch",
      "reason": "gitops-runtime: Argo health Progressing (parity passed)",
      "next_action": "Review the controller-health residue (aggregate vs per-resource health, sync state) and refresh the gitops-runtime-review support artifact.",
      "support_artifact": "recipes/traefik/traefik/40.2.0/gitops-runtime-review.yaml",
      "owner": "needs GitOps controller-health review",
      "completion_class": "already-decided",
      "command": "npm run live-parity:run -- --recipe recipes/traefik/traefik/40.2.0 --base no-crds"
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/traefik-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "aws-s3-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "azure-blob-existing-secret",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "default",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "render-input: required Velero provider values missing",
      "next_action": "Create a non-alias base with the required Helm values, value schema, target facts, and receipts, then rerun the live lane.",
      "support_artifact": "recipes/velero/velero/12.0.1/value-model.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base default"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "default",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "manifest apply failed: Error from server (Invalid): BackupStorageLocation.velero.io \"default\" is invalid: [spec.credential: Invalid value: \"null\": spec.credential in body must be of type object: \"null\", spec.provider: Invalid value: \"null\": spec.provider in body must be of type string: \"null\"] Error from server (Invalid): VolumeSnapshotLocation.velero.io \"default\" is invalid: [spec.credential: Invalid value: \"null\": spec.credential in body must be of type object: \"null\", spec.provider: Invalid value: \"null\": spec.provider in body must be of type string: \"null\"]",
      "next_action": "Catalog work: update the base, render context, target facts, or semantic contract so the installer package matches the live Helm result, then rerun.",
      "support_artifact": "runs/live-kind-parity/velero-velero-default/receipt.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "default",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: admission-or-rbac: apply: Error from server (Invalid): error when creating \"STDIN\": BackupStorageLocation.velero.io \"default\" is invalid: spec.provider: Required value Error from server (Invalid): error when creating \"STDIN\":",
      "next_action": "Decide whether the base needs a permission/admission preflight, a different target scope, or a rejected support boundary.",
      "support_artifact": "runs/next80-local-kind/velero-velero-12.0.1-default/observation-receipt.yaml",
      "owner": "admission-or-rbac",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base default"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "default",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "render-input: required Velero provider values missing",
      "next_action": "Create a non-alias base with the required Helm values, value schema, target facts, and receipts, then rerun the live lane.",
      "support_artifact": "recipes/velero/velero/12.0.1/value-model.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base default"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/velero-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "filesystem-backup-node-agent",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "no-crds + crd",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-candidate)",
      "state": "not-applicable-candidate",
      "reason": "candidate rows are planning rows, not server-side promotion evidence",
      "next_action": "turn this candidate into a real base or derived variant before server-side promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "no-crds",
      "lane": "G",
      "lane_label": "gitops-oci-live",
      "state": "blocked",
      "reason": "render-input: required Velero provider values missing",
      "next_action": "Create a non-alias base with the required Helm values, value schema, target facts, and receipts, then rerun the live lane.",
      "support_artifact": "recipes/velero/velero/12.0.1/value-model.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base no-crds"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "no-crds",
      "lane": "K",
      "lane_label": "two-cluster-kind",
      "state": "blocked",
      "reason": "target-prerequisite: CRDs missing",
      "next_action": "Stage the chart's CRDs as target facts (or pick a CRD-rendering base), then the row can move to pass.",
      "support_artifact": "runs/live-kind-parity/velero-velero-no-crds/receipt.yaml",
      "owner": "user",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "no-crds",
      "lane": "L",
      "lane_label": "local-live",
      "state": "blocked",
      "reason": "local-live blocked: admission-or-rbac: apply: Error from server (Invalid): error when creating \"STDIN\": BackupStorageLocation.velero.io \"default\" is invalid: spec.provider: Required value Error from server (Invalid): error when creating \"STDIN\":",
      "next_action": "Decide whether the base needs a permission/admission preflight, a different target scope, or a rejected support boundary.",
      "support_artifact": "runs/next80-local-kind/velero-velero-12.0.1-no-crds/observation-receipt.yaml",
      "owner": "admission-or-rbac",
      "completion_class": "needs-target-or-prereq-fix",
      "command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base no-crds"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "no-crds",
      "lane": "P",
      "lane_label": "live-helm-vs-confighub-parity",
      "state": "blocked",
      "reason": "render-input: required Velero provider values missing",
      "next_action": "Create a non-alias base with the required Helm values, value schema, target facts, and receipts, then rerun the live lane.",
      "support_artifact": "recipes/velero/velero/12.0.1/value-model.yaml",
      "owner": "catalog",
      "completion_class": "needs-modeling",
      "command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base no-crds"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "variant": "no-crds",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/velero-no-crds-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "vm/victoria-logs-single",
      "version": "0.12.5",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "vm/victoria-logs-single",
      "version": "0.12.5",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/victoria-logs-single-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "vm/victoria-metrics-single",
      "version": "0.39.0",
      "variant": "(source)",
      "lane": "promotion",
      "lane_label": "variant-promotion (not-applicable-source)",
      "state": "not-applicable-source",
      "reason": "source rows are upstream chart inputs, not server-side promotion evidence",
      "next_action": "choose or create an F2 base before server-side variant promotion applies",
      "support_artifact": "",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "vm/victoria-metrics-single",
      "version": "0.39.0",
      "variant": "default-reviewed",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/victoria-metrics-single-default-reviewed-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    },
    {
      "chart": "vm/victoria-metrics-single",
      "version": "0.39.0",
      "variant": "default",
      "lane": "promotion",
      "lane_label": "variant-promotion (proven)",
      "state": "proven",
      "reason": "server-side promotion receipt passed",
      "next_action": "keep receipt fresh when the upstream base changes",
      "support_artifact": "runs/victoria-metrics-single-default-confighub-proof/latest/variant-promotion-receipt.yaml",
      "owner": "catalog/promotion",
      "completion_class": "needs-target-or-prereq-fix",
      "command": ""
    }
  ]
}
