{
  "kind": "ModelGapWorkdown",
  "unofficial": true,
  "description": "Catalog-owned model gaps: non-pass rows that need a recipe/base model change (not a re-run and not a target prerequisite) before they can pass. Per row: model-gap kind, failure signature, a sibling base that already passes, the recommended product action, the owner class, the rerun command after the fix, and the evidence path. Read-only; marks no row fixed. Generated by scripts/generate-model-gap-workdown.mjs; do not hand-edit.",
  "sources": [
    "data/kind-parity-decisions/decisions.csv",
    "data/live-parity-decisions/decisions.csv",
    "data/master-catalog-matrix/matrix.csv",
    "data/live-parity-rerun-plan/rerun-plan.csv"
  ],
  "rowCount": 23,
  "byKind": {
    "object-set-shape": 7,
    "crd-lifecycle": 5,
    "semantic-normalization": 5,
    "base-design": 3,
    "generated-fact": 1,
    "missing-crd": 1,
    "unknown": 1
  },
  "byOwner": {
    "catalog-modeling": 21,
    "operator-review": 1,
    "recipe-generator": 1
  },
  "rows": [
    {
      "chart": "autoscaler/cluster-autoscaler",
      "version": "9.57.0",
      "base": "controller-default-reviewed",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "generated-fact",
      "failure_signature": "no target fact value generator for autoDiscovery.clusterName",
      "sibling_base_passes": "none",
      "recommended_action": "add-target-fact-generator",
      "owner_class": "recipe-generator",
      "rerun_command": "npm run kind-parity:run -- --chart autoscaler/cluster-autoscaler --version 9.57.0 --base controller-default-reviewed",
      "evidence_path": "runs/live-kind-parity/autoscaler-cluster-autoscaler-controller-default-reviewed/receipt.yaml"
    },
    {
      "chart": "aws-ebs-csi-driver/aws-ebs-csi-driver",
      "version": "2.60.1",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "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|C",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart aws-ebs-csi-driver/aws-ebs-csi-driver --version 2.60.1 --base default",
      "evidence_path": "runs/live-kind-parity/aws-ebs-csi-driver-aws-ebs-csi-driver-default/receipt.yaml"
    },
    {
      "chart": "bitnami/apache",
      "version": "11.4.29",
      "base": "legacy",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "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 dock",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/apache --version 11.4.29 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-apache-legacy/receipt.yaml"
    },
    {
      "chart": "bitnami/contour",
      "version": "21.1.4",
      "base": "no-crds",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "missing-crd",
      "failure_signature": "semantic object parity issue: missing=5 extra=1 diffs=0; missing=apiextensions.k8s.io/v1|CustomResourceDefinition||contourconfigurations.projectcontour.io; apie",
      "sibling_base_passes": "legacy (K pass)",
      "recommended_action": "design-new-base",
      "owner_class": "catalog-modeling",
      "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",
      "evidence_path": "runs/live-kind-parity/bitnami-contour-no-crds/receipt.yaml"
    },
    {
      "chart": "bitnami/elasticsearch",
      "version": "22.1.6",
      "base": "legacy",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "semantic object parity issue: missing=0 extra=1 diffs=4; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|elasticsearch-coordinating; apps/v1|St",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/elasticsearch --version 22.1.6 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-elasticsearch-legacy/receipt.yaml"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "semantic-normalization",
      "failure_signature": "semantic object parity issue: missing=0 extra=1 diffs=4; extra=v1|Namespace||default; objects=v1|Service|default|opensearch-coordinating-hl; v1|Service|default|",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/opensearch --version 2.0.10 --base default --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-opensearch-default/receipt.yaml"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "base": "ha",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "semantic-normalization",
      "failure_signature": "semantic object parity issue: missing=0 extra=1 diffs=8; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|opensearch-coordinating; apps/v1|State",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/opensearch --version 2.0.10 --base ha --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-opensearch-ha/receipt.yaml"
    },
    {
      "chart": "bitnami/opensearch",
      "version": "2.0.10",
      "base": "legacy",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "semantic-normalization",
      "failure_signature": "semantic object parity issue: missing=0 extra=1 diffs=8; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|opensearch-coordinating; apps/v1|State",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/opensearch --version 2.0.10 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-opensearch-legacy/receipt.yaml"
    },
    {
      "chart": "bitnami/phpmyadmin",
      "version": "20.0.0",
      "base": "legacy",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "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 ",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/phpmyadmin --version 20.0.0 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-phpmyadmin-legacy/receipt.yaml"
    },
    {
      "chart": "bitnami/spark",
      "version": "10.0.3",
      "base": "legacy",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "semantic object parity issue: missing=0 extra=1 diffs=2; extra=v1|Namespace||default; objects=apps/v1|StatefulSet|default|spark-master; apps/v1|StatefulSet|defa",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/spark --version 10.0.3 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-spark-legacy/receipt.yaml"
    },
    {
      "chart": "bitnami/zookeeper",
      "version": "13.8.7",
      "base": "legacy",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "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 ",
      "sibling_base_passes": "none",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart bitnami/zookeeper --version 13.8.7 --base legacy --repo-url oci://registry-1.docker.io/bitnamicharts",
      "evidence_path": "runs/live-kind-parity/bitnami-zookeeper-legacy/receipt.yaml"
    },
    {
      "chart": "grafana/pyroscope",
      "version": "2.0.2",
      "base": "ha",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "crd-lifecycle",
      "failure_signature": "semantic object parity issue: missing=0 extra=2 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||podlogs.monitoring.grafana.com; v1|Namespace||d",
      "sibling_base_passes": "default (K pass); no-crds (K pass)",
      "recommended_action": "split-lifecycle-objects",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart grafana/pyroscope --version 2.0.2 --base ha",
      "evidence_path": "runs/live-kind-parity/grafana-pyroscope-ha/receipt.yaml"
    },
    {
      "chart": "hashicorp/terraform",
      "version": "1.1.2",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "crd-lifecycle",
      "failure_signature": "semantic object parity issue: missing=0 extra=2 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||workspaces.app.terraform.io; v1|Namespace||defa",
      "sibling_base_passes": "none",
      "recommended_action": "split-lifecycle-objects",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart hashicorp/terraform --version 1.1.2 --base default",
      "evidence_path": "runs/live-kind-parity/hashicorp-terraform-default/receipt.yaml"
    },
    {
      "chart": "nats/nack",
      "version": "0.34.0",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "crd-lifecycle",
      "failure_signature": "semantic object parity issue: missing=0 extra=7 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||accounts.jetstream.nats.io; apiextensions.k8s.i",
      "sibling_base_passes": "no-crds (K pass)",
      "recommended_action": "split-lifecycle-objects",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart nats/nack --version 0.34.0 --base default",
      "evidence_path": "runs/live-kind-parity/nats-nack-default/receipt.yaml"
    },
    {
      "chart": "nats/nats",
      "version": "2.14.0",
      "base": "ha",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "object-set-shape",
      "failure_signature": "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||",
      "sibling_base_passes": "default (K pass)",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart nats/nats --version 2.14.0 --base ha",
      "evidence_path": "runs/live-kind-parity/nats-nats-ha/receipt.yaml"
    },
    {
      "chart": "nfs-subdir-external-provisioner/nfs-subdir-external-provisioner",
      "version": "4.0.18",
      "base": "default",
      "lane": "G/P",
      "result": "blocked",
      "model_gap_kind": "unknown",
      "failure_signature": "helm-runtime: upstream leg blocked",
      "sibling_base_passes": "none",
      "recommended_action": "operator-review",
      "owner_class": "operator-review",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner/4.0.18 --base default",
      "evidence_path": "runs/live-helm-confighub-compare/nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-default/receipt.yaml"
    },
    {
      "chart": "prometheus-community/kube-prometheus-stack",
      "version": "86.1.0",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "crd-lifecycle",
      "failure_signature": "semantic object parity issue: missing=0 extra=11 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||alertmanagerconfigs.monitoring.coreos.com; api",
      "sibling_base_passes": "no-crds (K pass)",
      "recommended_action": "split-lifecycle-objects",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart prometheus-community/kube-prometheus-stack --version 86.1.0 --base default",
      "evidence_path": "runs/live-kind-parity/prometheus-community-kube-prometheus-stack-default/receipt.yaml"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "base": "cluster-metrics-readonly",
      "lane": "G/P",
      "result": "blocked",
      "model_gap_kind": "semantic-normalization",
      "failure_signature": "capability-profile: rendered APIService version is not served by target Kubernetes",
      "sibling_base_passes": "apiservice-v1-capability (G/P pass)",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base cluster-metrics-readonly",
      "evidence_path": "runs/live-helm-confighub-compare/prometheus-community-prometheus-adapter-cluster-metrics-readonly/receipt.yaml"
    },
    {
      "chart": "prometheus-community/prometheus-adapter",
      "version": "5.3.0",
      "base": "default",
      "lane": "G/P",
      "result": "blocked",
      "model_gap_kind": "semantic-normalization",
      "failure_signature": "capability-profile: rendered APIService version is not served by target Kubernetes",
      "sibling_base_passes": "apiservice-v1-capability (G/P pass)",
      "recommended_action": "add-semantic-normalization",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/prometheus-community/prometheus-adapter/5.3.0 --base default",
      "evidence_path": "runs/live-helm-confighub-compare/prometheus-community-prometheus-adapter-default/receipt.yaml"
    },
    {
      "chart": "traefik/traefik",
      "version": "40.2.0",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "crd-lifecycle",
      "failure_signature": "semantic object parity issue: missing=0 extra=26 diffs=0; extra=apiextensions.k8s.io/v1|CustomResourceDefinition||accesscontrolpolicies.hub.traefik.io; apiexten",
      "sibling_base_passes": "no-crds (K pass)",
      "recommended_action": "split-lifecycle-objects",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart traefik/traefik --version 40.2.0 --base default",
      "evidence_path": "runs/live-kind-parity/traefik-traefik-default/receipt.yaml"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "default",
      "lane": "G/P",
      "result": "blocked",
      "model_gap_kind": "base-design",
      "failure_signature": "render-input: required Velero provider values missing",
      "sibling_base_passes": "none",
      "recommended_action": "design-new-base",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base default",
      "evidence_path": "runs/live-helm-confighub-compare/velero-velero-default/receipt.yaml"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "default",
      "lane": "K",
      "result": "blocked",
      "model_gap_kind": "base-design",
      "failure_signature": "manifest apply failed: Error from server (Invalid): BackupStorageLocation.velero.io \"default\" is invalid: [spec.credential: Invalid value: \"null\": spec.credenti",
      "sibling_base_passes": "none",
      "recommended_action": "design-new-base",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run kind-parity:run -- --chart velero/velero --version 12.0.1 --base default",
      "evidence_path": "runs/live-kind-parity/velero-velero-default/receipt.yaml"
    },
    {
      "chart": "velero/velero",
      "version": "12.0.1",
      "base": "no-crds",
      "lane": "G/P",
      "result": "blocked",
      "model_gap_kind": "base-design",
      "failure_signature": "render-input: required Velero provider values missing",
      "sibling_base_passes": "none",
      "recommended_action": "design-new-base",
      "owner_class": "catalog-modeling",
      "rerun_command": "npm run live-parity:run -- --recipe recipes/velero/velero/12.0.1 --base no-crds",
      "evidence_path": "runs/live-helm-confighub-compare/velero-velero-no-crds/receipt.yaml"
    }
  ]
}
