{
  "generatedBy": "scripts/generate-model-prereq-resolution.mjs",
  "rows": [
    {
      "source_queue": "model-gap",
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "base": "controller-default-reviewed",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "generated-fact",
      "resolution_path": "target-fact-generator-on-existing-base",
      "variant_role": "existing values-profile base",
      "recommended_variant_or_action": "keep controller-default-reviewed; add a generator or explicit target-fact binding for autoDiscovery.clusterName and awsRegion",
      "existing_off_ramp": "",
      "first_step": "teach the recipe how the cluster name and AWS region are supplied for this target profile",
      "evidence_needed": "fresh K receipt showing the rendered controller base reaches semantic parity after target facts are generated or bound",
      "rerun_command": "npm run kind-parity:run -- --chart autoscaler/cluster-autoscaler --version 9.57.0 --base controller-default-reviewed",
      "source_evidence": "runs/live-kind-parity/autoscaler-cluster-autoscaler-controller-default-reviewed/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "target-scoped-base-or-normalization",
      "variant_role": "target-scoped platform base",
      "recommended_variant_or_action": "add an eks-managed target scope or semantic normalization for the installer Namespace support object",
      "existing_off_ramp": "",
      "first_step": "separate vanilla-kind parity from the AWS/EKS topology claim recorded in target-topology.yaml",
      "evidence_needed": "fresh K or target-profile receipt that names the AWS/EKS topology and explains any support object normalization",
      "rerun_command": "npm run kind-parity:run -- --chart aws-ebs-csi-driver/aws-ebs-csi-driver --version 2.60.1 --base default",
      "source_evidence": "runs/live-kind-parity/aws-ebs-csi-driver-aws-ebs-csi-driver-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "base": "legacy",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "semantic-normalization",
      "variant_role": "legacy image-retention base",
      "recommended_variant_or_action": "keep apache legacy as the retained-image base; normalize the installer Namespace support object before treating K parity as green",
      "existing_off_ramp": "",
      "first_step": "record the Namespace support object as expected installer scaffolding rather than a Helm semantic difference",
      "evidence_needed": "fresh K receipt with the Namespace support object normalized, or an explicit watch disposition if that normalization is not accepted",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/apache --version 11.4.29 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-apache-legacy/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "base": "no-crds",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "missing-crd",
      "resolution_path": "external-crds-base",
      "variant_role": "CRD ownership base",
      "recommended_variant_or_action": "treat no-crds as an external-crds base, or add an explicit external-crds alias with CRD target prerequisites",
      "existing_off_ramp": "legacy (K pass)",
      "first_step": "make the CRD ownership choice visible in the base name and target-prerequisite action packet",
      "evidence_needed": "fresh K receipt after CRDs are staged, or a CRD-rendering sibling selected as the supported base",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/contour --version 21.1.4 --base no-crds --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-contour-no-crds/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "base": "legacy",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "semantic-normalization",
      "variant_role": "legacy image-retention base",
      "recommended_variant_or_action": "keep elasticsearch legacy as the retained-image base; normalize the installer Namespace support object before treating K parity as green",
      "existing_off_ramp": "",
      "first_step": "record the Namespace support object as expected installer scaffolding rather than a Helm semantic difference",
      "evidence_needed": "fresh K receipt with the Namespace support object normalized, or an explicit watch disposition if that normalization is not accepted",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/elasticsearch --version 22.1.6 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-elasticsearch-legacy/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "semantic-normalization",
      "resolution_path": "semantic-normalization",
      "variant_role": "existing base with normalization",
      "recommended_variant_or_action": "normalize installer support objects and target-served defaulted fields before deciding whether a smaller single-node base is needed",
      "existing_off_ramp": "",
      "first_step": "inspect the K receipt diffs and add only justified semantic normalization, not a blind variant",
      "evidence_needed": "fresh K receipt with zero unexplained semantic diffs, or a new single-node base with its own render receipt",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/opensearch --version 2.0.10 --base default --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-opensearch-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "base": "ha",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "semantic-normalization",
      "resolution_path": "semantic-normalization-or-smaller-base",
      "variant_role": "HA base after normalization",
      "recommended_variant_or_action": "keep ha as the topology base, but normalize support objects and decide whether a single-node-local base is needed",
      "existing_off_ramp": "",
      "first_step": "inspect the HA K receipt diffs and split target topology from semantic noise",
      "evidence_needed": "fresh K receipt for ha, or a new single-node-local base plus receipts if HA is too target-specific",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/opensearch --version 2.0.10 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-opensearch-ha/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "base": "legacy",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "semantic-normalization",
      "resolution_path": "semantic-normalization",
      "variant_role": "legacy image-retention base",
      "recommended_variant_or_action": "keep opensearch legacy as the retained-image base; normalize the installer Namespace support object before treating K parity as green",
      "existing_off_ramp": "",
      "first_step": "record the Namespace support object as expected installer scaffolding rather than a Helm semantic difference",
      "evidence_needed": "fresh K receipt with the Namespace support object normalized, or an explicit watch disposition if that normalization is not accepted",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/opensearch --version 2.0.10 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-opensearch-legacy/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "base": "legacy",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "semantic-normalization",
      "variant_role": "legacy image-retention base",
      "recommended_variant_or_action": "keep phpmyadmin legacy as the retained-image base; normalize the installer Namespace support object before treating K parity as green",
      "existing_off_ramp": "",
      "first_step": "record the Namespace support object as expected installer scaffolding rather than a Helm semantic difference",
      "evidence_needed": "fresh K receipt with the Namespace support object normalized, or an explicit watch disposition if that normalization is not accepted",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/phpmyadmin --version 20.0.0 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-phpmyadmin-legacy/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "base": "legacy",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "semantic-normalization",
      "variant_role": "legacy image-retention base",
      "recommended_variant_or_action": "keep spark legacy as the retained-image base; normalize the installer Namespace support object before treating K parity as green",
      "existing_off_ramp": "",
      "first_step": "record the Namespace support object as expected installer scaffolding rather than a Helm semantic difference",
      "evidence_needed": "fresh K receipt with the Namespace support object normalized, or an explicit watch disposition if that normalization is not accepted",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/spark --version 10.0.3 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-spark-legacy/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "base": "legacy",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "semantic-normalization",
      "variant_role": "legacy image-retention base",
      "recommended_variant_or_action": "keep zookeeper legacy as the retained-image base; normalize the installer Namespace support object before treating K parity as green",
      "existing_off_ramp": "",
      "first_step": "record the Namespace support object as expected installer scaffolding rather than a Helm semantic difference",
      "evidence_needed": "fresh K receipt with the Namespace support object normalized, or an explicit watch disposition if that normalization is not accepted",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/zookeeper --version 13.8.7 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-kind-parity/bitnami-zookeeper-legacy/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "base": "ha",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd-lifecycle",
      "resolution_path": "use-existing-sibling-or-split-crds",
      "variant_role": "HA base with CRD ownership boundary",
      "recommended_variant_or_action": "prefer default or no-crds where HA is not required; keep ha only after CRD lifecycle is split or staged",
      "existing_off_ramp": "default (K pass); no-crds (K pass)",
      "first_step": "route HA users to the existing K-pass siblings unless the HA topology itself is needed",
      "evidence_needed": "existing default/no-crds K pass receipt, or fresh ha K receipt after CRD lifecycle handling",
      "rerun_command": "npm run kind-parity:run -- --chart grafana/pyroscope --version 2.0.2 --base ha",
      "source_evidence": "runs/live-kind-parity/grafana-pyroscope-ha/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd-lifecycle",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "prefer no-crds with required Secrets staged, or keep default as the CRD-rendering base with lifecycle review",
      "existing_off_ramp": "",
      "first_step": "separate Terraform Workspace CRD ownership from the Secret prerequisites needed by the controller",
      "evidence_needed": "fresh K receipt for no-crds after Secrets are staged, or a CRD lifecycle receipt for default",
      "rerun_command": "npm run kind-parity:run -- --chart hashicorp/terraform --version 1.1.2 --base default",
      "source_evidence": "runs/live-kind-parity/hashicorp-terraform-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "nats/nack",
      "version": "0.34.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd-lifecycle",
      "resolution_path": "use-existing-sibling-base",
      "variant_role": "CRD ownership off-ramp",
      "recommended_variant_or_action": "prefer no-crds for K parity; keep default as the CRD-rendering base with lifecycle review",
      "existing_off_ramp": "no-crds (K pass)",
      "first_step": "mark no-crds as the first K-safe base and keep default scoped to CRD-owning targets",
      "evidence_needed": "existing no-crds K pass receipt plus any future default CRD lifecycle receipt",
      "rerun_command": "npm run kind-parity:run -- --chart nats/nack --version 0.34.0 --base default",
      "source_evidence": "runs/live-kind-parity/nats-nack-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "nats/nats",
      "version": "2.14.0",
      "base": "ha",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "object-set-shape",
      "resolution_path": "use-existing-sibling-or-normalize-ha",
      "variant_role": "HA topology base",
      "recommended_variant_or_action": "prefer default where HA is not required; normalize ha only if HA remains a supported user choice",
      "existing_off_ramp": "default (K pass)",
      "first_step": "decide whether HA is a supported public base for this chart or a target-scoped advanced base",
      "evidence_needed": "existing default K pass receipt, or fresh ha K receipt after normalization",
      "rerun_command": "npm run kind-parity:run -- --chart nats/nats --version 2.14.0 --base ha",
      "source_evidence": "runs/live-kind-parity/nats-nats-ha/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "base": "default",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "unknown",
      "resolution_path": "new-storage-base-variant",
      "variant_role": "storage target base",
      "recommended_variant_or_action": "add storage-default-reviewed with nfs.server and nfs.path modeled as render-time inputs or target facts",
      "existing_off_ramp": "",
      "first_step": "replace the implicit default with a base that names the NFS server contract before render and before delivery",
      "evidence_needed": "Helm equivalence, scan/gate, target-prerequisite action, and fresh G/P receipt for the storage-default-reviewed base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner/4.0.18 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "86.1.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd-lifecycle",
      "resolution_path": "use-existing-sibling-base",
      "variant_role": "CRD ownership off-ramp",
      "recommended_variant_or_action": "prefer no-crds for K parity; keep default as the CRD-rendering base with CRD lifecycle review",
      "existing_off_ramp": "no-crds (K pass)",
      "first_step": "make no-crds the first K-safe base for 86.1.0 and leave default scoped to CRD-owning targets",
      "evidence_needed": "existing no-crds K pass receipt plus CRD lifecycle receipts for default",
      "rerun_command": "npm run kind-parity:run -- --chart prometheus-community/kube-prometheus-stack --version 86.1.0 --base default",
      "source_evidence": "runs/live-kind-parity/prometheus-community-kube-prometheus-stack-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "base": "cluster-metrics-readonly",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "semantic-normalization",
      "resolution_path": "use-existing-capability-base",
      "variant_role": "capability-profile base",
      "recommended_variant_or_action": "prefer apiservice-v1-capability on targets that serve apiregistration.k8s.io/v1",
      "existing_off_ramp": "apiservice-v1-capability (G/P pass)",
      "first_step": "route users from cluster-metrics-readonly to apiservice-v1-capability when APIService v1 is required",
      "evidence_needed": "existing apiservice-v1-capability G/P pass receipt and a catalog note that explains the off-ramp",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base cluster-metrics-readonly",
      "source_evidence": "runs/live-helm-confighub-compare/prometheus-community-prometheus-adapter-cluster-metrics-readonly/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "base": "default",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "semantic-normalization",
      "resolution_path": "use-existing-capability-base",
      "variant_role": "capability-profile base",
      "recommended_variant_or_action": "prefer apiservice-v1-capability on targets that serve apiregistration.k8s.io/v1",
      "existing_off_ramp": "apiservice-v1-capability (G/P pass)",
      "first_step": "route users from default to apiservice-v1-capability when APIService v1 is required",
      "evidence_needed": "existing apiservice-v1-capability G/P pass receipt and a catalog note that explains the off-ramp",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/prometheus-community-prometheus-adapter-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd-lifecycle",
      "resolution_path": "use-existing-sibling-base",
      "variant_role": "CRD ownership off-ramp",
      "recommended_variant_or_action": "prefer no-crds for K parity; add external-crds as the user-facing name if the current no-crds label is too implementation-shaped",
      "existing_off_ramp": "no-crds (K pass)",
      "first_step": "align the Traefik CRD ownership vocabulary with the wave-2 real variant work order",
      "evidence_needed": "existing no-crds K pass receipt, plus a renamed or aliased external-crds base if chosen",
      "rerun_command": "npm run kind-parity:run -- --chart traefik/traefik --version 40.2.0 --base default",
      "source_evidence": "runs/live-kind-parity/traefik-traefik-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "default",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "base-design",
      "resolution_path": "new-provider-base-variant",
      "variant_role": "provider and credential base",
      "recommended_variant_or_action": "add aws-s3-existing-secret, azure-blob-existing-secret, or filesystem-backup-node-agent as real rendered bases",
      "existing_off_ramp": "",
      "first_step": "implement the first Velero provider base from catalog-promotion-wave2 and bind backup credentials as target facts",
      "evidence_needed": "Helm equivalence, scan/gate, ConfigHub proof, and fresh G/P receipt for the chosen provider base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/velero-velero-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "base-design",
      "resolution_path": "new-provider-base-variant",
      "variant_role": "provider and credential base",
      "recommended_variant_or_action": "add aws-s3-existing-secret, azure-blob-existing-secret, or filesystem-backup-node-agent as real rendered bases",
      "existing_off_ramp": "",
      "first_step": "implement the first Velero provider base from catalog-promotion-wave2 and bind backup credentials as target facts",
      "evidence_needed": "Helm equivalence, scan/gate, ConfigHub proof, and fresh K receipt for the chosen provider base",
      "rerun_command": "npm run kind-parity:run -- --chart velero/velero --version 12.0.1 --base default",
      "source_evidence": "runs/live-kind-parity/velero-velero-default/receipt.yaml"
    },
    {
      "source_queue": "model-gap",
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "no-crds",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "base-design",
      "resolution_path": "new-provider-base-variant",
      "variant_role": "provider and credential base with external CRDs",
      "recommended_variant_or_action": "add a provider-specific no-crds base only after the provider base is rendered and proved",
      "existing_off_ramp": "",
      "first_step": "start with a provider base, then split CRD ownership if the target supplies Velero CRDs",
      "evidence_needed": "provider base proof first, then fresh no-crds G/P receipt with CRDs staged",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base no-crds",
      "source_evidence": "runs/live-helm-confighub-compare/velero-velero-no-crds/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "base": "default",
      "lane": "K",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "new-base-variant-after-input-identification",
      "variant_role": "base variant if rendered objects change",
      "recommended_variant_or_action": "identify the missing input, then decide whether it belongs in a base variant or a target fact",
      "existing_off_ramp": "",
      "first_step": "replace the unknown prerequisite with a named chart value, Secret, namespace, CRD, or external dependency",
      "evidence_needed": "the missing input(s) supplied and the re-render matching regular Helm; then a fresh K parity receipt for this base",
      "rerun_command": "",
      "source_evidence": "runs/live-kind-parity/autoscaler-cluster-autoscaler-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "topology",
      "resolution_path": "target-scoped-base",
      "variant_role": "platform topology base",
      "recommended_variant_or_action": "scope this base to targets that provide AWS/EKS metadata + node providerID",
      "existing_off_ramp": "",
      "first_step": "record the platform target shape and do not treat vanilla kind as the authoritative target for this base",
      "evidence_needed": "a bound PVC / a target with the required topology; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/aws-ebs-csi-driver/aws-ebs-csi-driver/2.60.1 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/aws-ebs-csi-driver-aws-ebs-csi-driver-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "base": "legacy",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/bitnami/contour/21.1.4 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "source_evidence": "runs/live-helm-confighub-compare/bitnami-contour-legacy/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "dex/dex",
      "version": "0.24.0",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/dex/dex/0.24.0 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/dex-dex-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "dex/dex",
      "version": "0.24.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart dex/dex --version 0.24.0 --base default",
      "source_evidence": "runs/live-kind-parity/dex-dex-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/elastic-filebeat-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "secret",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "bind Secret elasticsearch-master-certs as a target fact on a derived ConfigHub variant",
      "existing_off_ramp": "",
      "first_step": "create or reference the Secret in the target, then bind it through the target-prerequisite action packet",
      "evidence_needed": "the named Secret(s) present in the target namespace before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart elastic/filebeat --version 8.5.1 --base default",
      "source_evidence": "runs/live-kind-parity/elastic-filebeat-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "base": "node-or-cluster-collector",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/elastic/filebeat/8.5.1 --base node-or-cluster-collector",
      "source_evidence": "runs/live-helm-confighub-compare/elastic-filebeat-node-or-cluster-collector/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/filebeat",
      "version": "8.5.1",
      "base": "node-or-cluster-collector",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "external-api",
      "resolution_path": "stack-or-target-fact-variant",
      "variant_role": "stack-derived variant",
      "recommended_variant_or_action": "bind the upstream endpoint as a target fact, or create a stack variant that includes the dependency",
      "existing_off_ramp": "",
      "first_step": "identify the upstream service or API the workload expects, then encode it as a target fact or stack dependency",
      "evidence_needed": "the upstream service/endpoint reachable from the workload; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart elastic/filebeat --version 8.5.1 --base node-or-cluster-collector",
      "source_evidence": "runs/live-kind-parity/elastic-filebeat-node-or-cluster-collector/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/elastic/kibana/8.5.1 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/elastic-kibana-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/kibana",
      "version": "8.5.1",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "external-api",
      "resolution_path": "stack-or-target-fact-variant",
      "variant_role": "stack-derived variant",
      "recommended_variant_or_action": "bind the upstream endpoint as a target fact, or create a stack variant that includes the dependency",
      "existing_off_ramp": "",
      "first_step": "identify the upstream service or API the workload expects, then encode it as a target fact or stack dependency",
      "evidence_needed": "the upstream service/endpoint reachable from the workload; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart elastic/kibana --version 8.5.1 --base default",
      "source_evidence": "runs/live-kind-parity/elastic-kibana-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/elastic/metricbeat/8.5.1 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/elastic-metricbeat-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "elastic/metricbeat",
      "version": "8.5.1",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "secret",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "bind Secret elasticsearch-master-certs as a target fact on a derived ConfigHub variant",
      "existing_off_ramp": "",
      "first_step": "create or reference the Secret in the target, then bind it through the target-prerequisite action packet",
      "evidence_needed": "the named Secret(s) present in the target namespace before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart elastic/metricbeat --version 8.5.1 --base default",
      "source_evidence": "runs/live-kind-parity/elastic-metricbeat-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "fluent/fluentd",
      "version": "0.5.3",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/fluent/fluentd/0.5.3 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/fluent-fluentd-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/gitlab/gitlab-runner/0.89.0 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/gitlab-gitlab-runner-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "gitlab/gitlab-runner",
      "version": "0.89.0",
      "base": "default",
      "lane": "K",
      "current_result": "watch",
      "gap_kind": "external-api",
      "resolution_path": "stack-or-target-fact-variant",
      "variant_role": "stack-derived variant",
      "recommended_variant_or_action": "bind the upstream endpoint as a target fact, or create a stack variant that includes the dependency",
      "existing_off_ramp": "",
      "first_step": "identify the upstream service or API the workload expects, then encode it as a target fact or stack dependency",
      "evidence_needed": "the upstream service/endpoint reachable from the workload; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart gitlab/gitlab-runner --version 0.89.0 --base default",
      "source_evidence": "runs/live-kind-parity/gitlab-gitlab-runner-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/grafana-pyroscope-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "base": "ha",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base ha",
      "source_evidence": "runs/live-helm-confighub-compare/grafana-pyroscope-ha/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "base": "no-crds",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/grafana/pyroscope/2.0.2 --base no-crds",
      "source_evidence": "runs/live-helm-confighub-compare/grafana-pyroscope-no-crds/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/hashicorp-terraform-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "base": "no-crds",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/hashicorp/terraform/1.1.2 --base no-crds",
      "source_evidence": "runs/live-helm-confighub-compare/hashicorp-terraform-no-crds/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "base": "no-crds",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "secret",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "bind Secret workspacesecrets; Secret terraformrc as a target fact on a derived ConfigHub variant",
      "existing_off_ramp": "",
      "first_step": "create or reference the Secret in the target, then bind it through the target-prerequisite action packet",
      "evidence_needed": "the named Secret(s) present in the target namespace before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart hashicorp/terraform --version 1.1.2 --base no-crds",
      "source_evidence": "runs/live-kind-parity/hashicorp-terraform-no-crds/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "hashicorp/vault",
      "version": "0.32.0",
      "base": "ha-raft-ui",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/hashicorp/vault/0.32.0 --base ha-raft-ui",
      "source_evidence": "runs/live-helm-confighub-compare/hashicorp-vault-ha-raft-ui/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "istio/istiod",
      "version": "1.30.0",
      "base": "default",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "namespace",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "stage the namespace prerequisite before delivery and attach the namespace choice to the target variant",
      "existing_off_ramp": "",
      "first_step": "create the Namespace or make namespace creation an explicit preflight step for this target",
      "evidence_needed": "the named Namespace exists on the target before apply; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/istio/istiod/1.30.0 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/istio-istiod-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "istio/istiod",
      "version": "1.30.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "namespace",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "stage Namespace istio-system before delivery and attach the namespace choice to the target variant",
      "existing_off_ramp": "",
      "first_step": "create the Namespace or make namespace creation an explicit preflight step for this target",
      "evidence_needed": "the named Namespace exists on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart istio/istiod --version 1.30.0 --base default",
      "source_evidence": "runs/live-kind-parity/istio-istiod-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "base": "default",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "crd",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "use a CRD-rendering base, or keep default as external-crds with the CRDs staged first",
      "existing_off_ramp": "",
      "first_step": "choose whether this target owns CRDs through the base or through an external prerequisite",
      "evidence_needed": "the required CRDs Established on the target before apply; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/jaegertracing/jaeger-operator/2.57.0 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/jaegertracing-jaeger-operator-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "use a CRD-rendering base, or keep default as external-crds with the CRDs staged first",
      "existing_off_ramp": "",
      "first_step": "choose whether this target owns CRDs through the base or through an external prerequisite",
      "evidence_needed": "the required CRDs Established on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart jaegertracing/jaeger-operator --version 2.57.0 --base default",
      "source_evidence": "runs/live-kind-parity/jaegertracing-jaeger-operator-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "jaegertracing/jaeger-operator",
      "version": "2.57.0",
      "base": "no-crds",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "use a CRD-rendering base, or keep no-crds as external-crds with the CRDs staged first",
      "existing_off_ramp": "",
      "first_step": "choose whether this target owns CRDs through the base or through an external prerequisite",
      "evidence_needed": "the required CRDs Established on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart jaegertracing/jaeger-operator --version 2.57.0 --base no-crds",
      "source_evidence": "runs/live-kind-parity/jaegertracing-jaeger-operator-no-crds/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "base": "default-reviewed",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default-reviewed",
      "source_evidence": "runs/live-helm-confighub-compare/nats-surveyor-default-reviewed/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "base": "default-reviewed",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "external-api",
      "resolution_path": "stack-or-target-fact-variant",
      "variant_role": "stack-derived variant",
      "recommended_variant_or_action": "bind the upstream endpoint as a target fact, or create a stack variant that includes the dependency",
      "existing_off_ramp": "",
      "first_step": "identify the upstream service or API the workload expects, then encode it as a target fact or stack dependency",
      "evidence_needed": "the upstream service/endpoint reachable from the workload; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart nats/surveyor --version 0.20.9 --base default-reviewed",
      "source_evidence": "runs/live-kind-parity/nats-surveyor-default-reviewed/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/nats/surveyor/0.20.9 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/nats-surveyor-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "nats/surveyor",
      "version": "0.20.9",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart nats/surveyor --version 0.20.9 --base default",
      "source_evidence": "runs/live-kind-parity/nats-surveyor-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "unknown",
      "resolution_path": "new-base-variant-after-input-identification",
      "variant_role": "base variant if rendered objects change",
      "recommended_variant_or_action": "identify the missing input, then decide whether it belongs in a base variant or a target fact",
      "existing_off_ramp": "",
      "first_step": "replace the unknown prerequisite with a named chart value, Secret, namespace, CRD, or external dependency",
      "evidence_needed": "the missing input(s) supplied and the re-render matching regular Helm; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --version 4.0.18 --base default",
      "source_evidence": "runs/live-kind-parity/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "base": "default",
      "lane": "G/P",
      "current_result": "watch",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/opencost/opencost/2.5.21 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/opencost-opencost-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "opencost/opencost",
      "version": "2.5.21",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "unknown",
      "resolution_path": "operator-review-first",
      "variant_role": "no variant until cause is known",
      "recommended_variant_or_action": "review the runtime residue before creating a variant",
      "existing_off_ramp": "",
      "first_step": "inspect pod events/logs and classify the missing condition before modeling a base or target fact",
      "evidence_needed": "an operator decision recorded for this base/target; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart opencost/opencost --version 2.5.21 --base default",
      "source_evidence": "runs/live-kind-parity/opencost-opencost-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "base": "cluster-metrics-readonly",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "use a CRD-rendering base, or keep cluster-metrics-readonly as external-crds with the CRDs staged first",
      "existing_off_ramp": "",
      "first_step": "choose whether this target owns CRDs through the base or through an external prerequisite",
      "evidence_needed": "the required CRDs Established on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart prometheus-community/prometheus-adapter --version 5.3.0 --base cluster-metrics-readonly",
      "source_evidence": "runs/live-kind-parity/prometheus-community-prometheus-adapter-cluster-metrics-readonly/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "use a CRD-rendering base, or keep default as external-crds with the CRDs staged first",
      "existing_off_ramp": "",
      "first_step": "choose whether this target owns CRDs through the base or through an external prerequisite",
      "evidence_needed": "the required CRDs Established on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart prometheus-community/prometheus-adapter --version 5.3.0 --base default",
      "source_evidence": "runs/live-kind-parity/prometheus-community-prometheus-adapter-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "base": "default",
      "lane": "G/P",
      "current_result": "blocked",
      "gap_kind": "namespace",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "stage Namespace rook-ceph before delivery and attach the namespace choice to the target variant",
      "existing_off_ramp": "",
      "first_step": "create the Namespace or make namespace creation an explicit preflight step for this target",
      "evidence_needed": "the named Namespace exists on the target before apply; then a fresh G/P parity receipt for this base",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/rook-release/rook-ceph-cluster/v1.19.5 --base default",
      "source_evidence": "runs/live-helm-confighub-compare/rook-release-rook-ceph-cluster-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "rook-release/rook-ceph-cluster",
      "version": "v1.19.5",
      "base": "default",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "namespace",
      "resolution_path": "derived-target-variant",
      "variant_role": "target-bound derived variant",
      "recommended_variant_or_action": "stage Namespace rook-ceph before delivery and attach the namespace choice to the target variant",
      "existing_off_ramp": "",
      "first_step": "create the Namespace or make namespace creation an explicit preflight step for this target",
      "evidence_needed": "the named Namespace exists on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart rook-release/rook-ceph-cluster --version v1.19.5 --base default",
      "source_evidence": "runs/live-kind-parity/rook-release-rook-ceph-cluster-default/receipt.yaml"
    },
    {
      "source_queue": "target-prerequisite",
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "no-crds",
      "lane": "K",
      "current_result": "blocked",
      "gap_kind": "crd",
      "resolution_path": "crd-ownership-base-or-target-action",
      "variant_role": "CRD ownership base plus target prerequisite",
      "recommended_variant_or_action": "use a CRD-rendering base, or keep no-crds as external-crds with the CRDs staged first",
      "existing_off_ramp": "",
      "first_step": "choose whether this target owns CRDs through the base or through an external prerequisite",
      "evidence_needed": "the required CRDs Established on the target before apply; then a fresh K parity receipt for this base",
      "rerun_command": "npm run kind-parity:run -- --chart velero/velero --version 12.0.1 --base no-crds",
      "source_evidence": "runs/live-kind-parity/velero-velero-no-crds/receipt.yaml"
    }
  ]
}
