{
  "apiVersion": "catalog.confighub.com/v1alpha1",
  "kind": "CatalogListing",
  "listingVersion": "1",
  "generatedFrom": {
    "catalog": {
      "path": "data/base-variant-records/records.json",
      "sha256": "sha256:33e9d603109b517560aaa5e244acc3a825977fd5e417b436da07b63930ac2a78",
      "url": "https://github.com/confighub/helm-expt/blob/main/data/base-variant-records/records.json"
    },
    "record": {
      "path": "data/base-variant-records/records/aicr-eks-h100-training-kubeflow-v1-0-0-argocd.yaml",
      "sha256": "sha256:434d1f951bd09ce5f16e7a2bbb52d77fb2d3783dbc5b5e2b46cff700bdaa5c1e",
      "url": "https://github.com/confighub/helm-expt/blob/main/data/base-variant-records/records/aicr-eks-h100-training-kubeflow-v1-0-0-argocd.yaml"
    },
    "recordKind": "BaseVariantRecord",
    "recordSchema": "schemas/base-variant-record.schema.json"
  },
  "identity": {
    "id": "aicr-eks-h100-training-kubeflow-v1-0-0-argocd",
    "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v1-0-0-argocd.json",
    "name": "aicr-eks-h100-training-kubeflow",
    "format": "aicr",
    "formatLabel": "AICR recipe",
    "version": "v1.0.0",
    "base": "argocd",
    "page": "https://confighub.github.io/helm-expt/site/d/docs/demo/aicr/eks-h100-training-kubeflow-v1-0-0.html"
  },
  "discovery": {
    "status": "not-classified",
    "roles": [],
    "boundary": "Discovery only: a role does not establish readiness, compatibility or support. An operator needs custom resources; an agent needs its destination. Read the listing prerequisites and coverage before composing."
  },
  "source": {
    "format": "aicr",
    "name": "eks-h100-training-kubeflow",
    "version": "v1.0.0",
    "reference": "eks-h100-training-kubeflow@v1.0.0",
    "ociRef": "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow/aicr-bundle:1.0.0",
    "record": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml",
    "recordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml",
    "selection": {
      "name": "h100-eks-ubuntu-training-kubeflow",
      "kind": "source-variant",
      "provider": "NVIDIA AICR",
      "record": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/source-catalog/source-catalog-record.yaml",
      "recordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/source-catalog/source-catalog-record.yaml"
    },
    "pin": {
      "digest": "sha256:b05bba571afb8d0aaf3fd4182f195569ff0dde97533bf3381627dd94f68727f8",
      "role": "aicr-platform-index",
      "revision": "generated-v1.0.0",
      "record": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/digest-index/platform-index.json",
      "recordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/digest-index/platform-index.json"
    },
    "fixedAtBuildTime": [
      "accelerator=h100",
      "intent=training",
      "os=ubuntu",
      "platform=kubeflow",
      "service=eks",
      "acceleratedNodeSelector=nvidia.com/gpu.present=true",
      "repoURL=oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow",
      "storageClass=gp3",
      "systemNodeSelector=nodeGroup=system-worker (placeholder, change it to match your cluster)",
      "workloadSelector=app.kubernetes.io/part-of=training",
      "deployer=argocd-helm"
    ]
  },
  "flattened": {
    "method": "aicr-compose-then-helm-render",
    "materializationStatus": "captured",
    "format": "argocd-application-yaml",
    "objectCount": 17,
    "digest": "sha256:45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e",
    "digestRole": "inventory-file",
    "verdict": "flatten-with-routes",
    "verdictStatus": "decided",
    "action": "retain-exact-objects-with-routes",
    "scope": "eks-h100-training-kubeflow@v1.0.0/argocd; recheck after source, lifecycle-sensitive variant, destination, or delivery-runtime changes",
    "boundaries": [
      "AICR composed the platform and generated an Argo CD app-of-apps chart; Helm rendered that wrapper into exact Application objects.",
      "The component Applications still reference their own sources, so those nested sources are processed later by Argo CD."
    ],
    "objects": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered",
    "objectsUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered",
    "inventory": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
    "inventoryUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
    "digestRecord": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
    "digestRecordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
    "verdictRecord": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/flattening-safety-verdict.yaml",
    "verdictRecordUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/flattening-safety-verdict.yaml"
  },
  "oci": {
    "sourcePackageRef": "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow/aicr-bundle:1.0.0",
    "bundles": [
      {
        "role": "source-package",
        "state": "published",
        "status": "public-anonymous-pull-proved",
        "reference": "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow/aicr-bundle:1.0.0",
        "referenceState": "published",
        "digests": [
          {
            "field": "localDigest",
            "value": "sha256:b187253b95bfe5a30d28128b94ed5edeb39f4e08ad8b409d25ebe3c9982eebb3"
          }
        ],
        "receipt": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/public-oci-receipt.yaml",
        "receiptUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/public-oci-receipt.yaml",
        "referenceField": "plannedRef"
      },
      {
        "role": "literal-config",
        "state": "published",
        "status": "public-anonymous-pull-proved",
        "reference": "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow-argocd-config:1.0.0",
        "referenceState": "published",
        "digests": [
          {
            "field": "localDigest",
            "value": "sha256:631dba7ef35a676eafa1590f11149c4bae02867af046dba36dc1dcfd5c9edc19"
          }
        ],
        "receipt": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/public-oci-receipt.yaml",
        "receiptUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/public-oci-receipt.yaml",
        "referenceField": "plannedRef"
      },
      {
        "role": "confighub-upload",
        "state": "published",
        "status": "pass",
        "reference": "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow-argocd-config:1.0.0",
        "referenceState": "published",
        "digests": [
          {
            "field": "sourceOciDigest",
            "value": "sha256:631dba7ef35a676eafa1590f11149c4bae02867af046dba36dc1dcfd5c9edc19"
          }
        ],
        "receipt": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/confighub-upload-receipt.yaml",
        "receiptUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/confighub-upload-receipt.yaml",
        "referenceField": "sourceRef"
      },
      {
        "role": "confighub-release",
        "state": "not-published",
        "status": "not-run",
        "reference": "",
        "referenceState": "none",
        "digests": []
      }
    ],
    "runtimes": [
      {
        "runtime": "argo-cd",
        "state": "partial",
        "status": "applications-retained-not-reconciled"
      },
      {
        "runtime": "flux",
        "state": "not-applicable",
        "status": "not-run-for-argo-application-wrapper"
      },
      {
        "runtime": "direct",
        "state": "not-recorded",
        "status": "not-recorded"
      }
    ]
  },
  "variants": {
    "base": "argocd",
    "known": [
      {
        "id": "aicr-eks-h100-training-kubeflow-v1-0-0-argocd",
        "base": "argocd",
        "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v1-0-0-argocd.json",
        "self": true,
        "digest": "sha256:45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e"
      }
    ],
    "howToMakeOne": {
      "model": "The catalog builds a base by pinning one source version, fixing one set of inputs, and retaining the exact objects that come out. A new variant starts from a retained base and changes only the fields it owns, so the base stays comparable and the change stays reviewable.",
      "steps": [
        "Materialize this base and confirm the object set hashes to sha256:45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e. The exact objects are recorded at examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered.",
        "Put those objects in a local directory called rendered, then preview the retention before writing anything.",
        "Retain the base in ConfigHub, carrying the object-set hash as an annotation so the accepted identity travels with it.",
        "Create the new variant from that base and change only the fields the variant owns.",
        "Preview the promotion and read the mutations before any write command runs."
      ],
      "commands": [
        {
          "step": "Preview the retention",
          "command": "cub variant upload --dry-run --component eks-h100-training-kubeflow --variant argocd --space aicr-eks-h100-training-kubeflow-v1-0-0-argocd --unit-annotation workshop.confighub.com/object-set-sha256=sha256:45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e ./rendered",
          "writes": false
        },
        {
          "step": "Retain this base",
          "command": "cub variant upload --component eks-h100-training-kubeflow --variant argocd --space aicr-eks-h100-training-kubeflow-v1-0-0-argocd --unit-annotation workshop.confighub.com/object-set-sha256=sha256:45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e ./rendered",
          "writes": true
        },
        {
          "step": "Create a staging variant",
          "command": "cub variant create staging aicr-eks-h100-training-kubeflow-v1-0-0-argocd --space-pattern template:aicr-eks-h100-training-kubeflow-v1-0-0-argocd-staging --environment Staging --unit-annotation workshop.confighub.com/object-set-sha256=sha256:45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e",
          "writes": true
        },
        {
          "step": "Preview the promotion",
          "command": "cub variant promote aicr-eks-h100-training-kubeflow-v1-0-0-argocd-staging --dry-run -o mutations",
          "writes": false
        }
      ],
      "reference": "https://github.com/confighub/helm-expt/blob/main/data/config-workshop-command-contract/summary.md"
    }
  },
  "routing": {
    "routeStatus": "recorded",
    "requirementsStatus": "recorded",
    "targetFactsStatus": "recorded",
    "resolutionStatus": "awaits-variant-and-target",
    "resolutionRule": "Re-resolve after a lifecycle-sensitive variant change, destination assignment, or delivery-runtime change; bind the result to the exact configuration digest.",
    "requirements": [
      {
        "id": "source-variant-target-match",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "compare observed destination facts with the intended NVIDIA source variant"
      },
      {
        "id": "argocd-prerequisite",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "make the Argo CD Application API and controller available"
      },
      {
        "id": "component-order",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "reconcile component Applications in AICR dependency order"
      },
      {
        "id": "downstream-chart-lifecycle",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "handle CRDs, hooks, certificates, operators, and setup Jobs for every nested source"
      },
      {
        "id": "upgrade-over-existing-installation",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "follow the manual steps AICR lists before applying this bundle over an earlier installation"
      },
      {
        "id": "system-node-selector-placeholder",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "replace the placeholder system node selector nodeGroup=system-worker with the label on the destination cluster's system node group"
      },
      {
        "id": "dra-plugin-eviction",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "decide whether the DRA kubelet plugin is evicted before a GPU driver container restarts"
      },
      {
        "id": "aicr-node-inspection",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "collect and compare node facts"
      },
      {
        "id": "aicr-configuration-validation",
        "type": "lifecycle-action",
        "origin": "base",
        "detail": "run checks whose prerequisites are satisfied by the selected source variant"
      },
      {
        "id": "aicr-target-fact-1",
        "type": "target-fact",
        "origin": "base",
        "detail": "Argo CD and its Application CRD must exist before the retained wrapper objects can be applied."
      },
      {
        "id": "aicr-target-fact-2",
        "type": "target-fact",
        "origin": "base",
        "detail": "The destination must match the selected EKS, H100, Ubuntu, and Kubeflow training source variant."
      },
      {
        "id": "aicr-target-fact-3",
        "type": "target-fact",
        "origin": "base",
        "detail": "A gp3 StorageClass must be available for the selected storage input."
      },
      {
        "id": "aicr-target-fact-4",
        "type": "target-fact",
        "origin": "base",
        "detail": "Nodes that run system components must carry the system node selector label. This bundle carries the placeholder nodeGroup=system-worker, and the destination's own label replaces it."
      },
      {
        "id": "aicr-target-fact-5",
        "type": "target-fact",
        "origin": "base",
        "detail": "GPU nodes must carry nvidia.com/gpu.present=true before the node-tuning object is applied."
      },
      {
        "id": "aicr-target-fact-6",
        "type": "target-fact",
        "origin": "base",
        "detail": "The GPU driver, EFA device plugin, and node tuning must suit the actual node and network role."
      }
    ],
    "routes": [
      {
        "id": "source-variant-target-match",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "compare observed destination facts with the intended NVIDIA source variant",
        "supportedRuntimes": [],
        "requirementRefs": [
          "source-variant-target-match"
        ],
        "checks": [
          "target snapshot, selected source-catalog digest, and an explained match or exception"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "argocd-prerequisite",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "make the Argo CD Application API and controller available",
        "supportedRuntimes": [
          "Argo CD"
        ],
        "requirementRefs": [
          "argocd-prerequisite"
        ],
        "checks": [
          "Argo CD CRD discovery and controller readiness"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "component-order",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "reconcile component Applications in AICR dependency order",
        "supportedRuntimes": [
          "Argo CD"
        ],
        "requirementRefs": [
          "component-order"
        ],
        "checks": [
          "observed sync operations and component health, not annotation survival alone"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "downstream-chart-lifecycle",
        "phase": "destination-resolution",
        "status": "recorded",
        "sourceStatus": "not-yet-materialized-for-v1.0.0",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "handle CRDs, hooks, certificates, operators, and setup Jobs for every nested source",
        "supportedRuntimes": [],
        "requirementRefs": [
          "downstream-chart-lifecycle"
        ],
        "checks": [
          "nested source render, flattening decision, route resolution, and execution receipt"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "upgrade-over-existing-installation",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "follow the manual steps AICR lists before applying this bundle over an earlier installation",
        "supportedRuntimes": [],
        "requirementRefs": [
          "upgrade-over-existing-installation"
        ],
        "checks": [
          "the completed steps for each listed component and an upgrade-check report for the exact move"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "system-node-selector-placeholder",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "replace the placeholder system node selector nodeGroup=system-worker with the label on the destination cluster's system node group",
        "supportedRuntimes": [],
        "requirementRefs": [
          "system-node-selector-placeholder"
        ],
        "checks": [
          "the label observed on the destination's system node group, and either a bundle regenerated with that value or a variant made from this entry, with its new digests"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "dra-plugin-eviction",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "recorded-not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "decide whether the DRA kubelet plugin is evicted before a GPU driver container restarts",
        "supportedRuntimes": [],
        "requirementRefs": [
          "dra-plugin-eviction"
        ],
        "checks": [
          "a chosen DRA eviction node label and a regenerated bundle, or a recorded decision to leave it off"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "aicr-node-inspection",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "available-not-run-for-this-entry",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "collect and compare node facts",
        "supportedRuntimes": [],
        "requirementRefs": [
          "aicr-node-inspection"
        ],
        "checks": [
          "snapshot digests and the exact diff"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      },
      {
        "id": "aicr-configuration-validation",
        "phase": "destination-resolution",
        "status": "requires-destination-resolution",
        "sourceStatus": "not-run",
        "automatic": false,
        "actor": "selected destination actor",
        "mechanism": "run checks whose prerequisites are satisfied by the selected source variant",
        "supportedRuntimes": [],
        "requirementRefs": [
          "aicr-configuration-validation"
        ],
        "checks": [
          "per-check prerequisite classification and target output"
        ],
        "evidence": [
          "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
        ]
      }
    ],
    "records": [
      {
        "name": "route-intent.yaml",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
      }
    ]
  },
  "lifecycle": {
    "installTimeStatus": "destination-facts-recorded-not-run-placeholder-input-recorded",
    "installTimeInputs": [
      {
        "name": "aicr-target-fact-1",
        "kind": "target-fact",
        "detail": "Argo CD and its Application CRD must exist before the retained wrapper objects can be applied.",
        "status": "declared-not-checked"
      },
      {
        "name": "aicr-target-fact-2",
        "kind": "target-fact",
        "detail": "The destination must match the selected EKS, H100, Ubuntu, and Kubeflow training source variant.",
        "status": "declared-not-checked"
      },
      {
        "name": "aicr-target-fact-3",
        "kind": "target-fact",
        "detail": "A gp3 StorageClass must be available for the selected storage input.",
        "status": "declared-not-checked"
      },
      {
        "name": "aicr-target-fact-4",
        "kind": "target-fact",
        "detail": "Nodes that run system components must carry the system node selector label. This bundle carries the placeholder nodeGroup=system-worker, and the destination's own label replaces it.",
        "status": "declared-not-checked"
      },
      {
        "name": "aicr-target-fact-5",
        "kind": "target-fact",
        "detail": "GPU nodes must carry nvidia.com/gpu.present=true before the node-tuning object is applied.",
        "status": "declared-not-checked"
      },
      {
        "name": "aicr-target-fact-6",
        "kind": "target-fact",
        "detail": "The GPU driver, EFA device plugin, and node tuning must suit the actual node and network role.",
        "status": "declared-not-checked"
      },
      {
        "name": "systemNodeSelector",
        "kind": "generation-input",
        "detail": "systemNodeSelector=nodeGroup=system-worker is a placeholder, confirmed as one on 2026-10-07. Change it to the label on your own cluster's system node group. It is written into spec.source.helm.values of 12 rendered Applications at 24 field paths, which are aws-ebs-csi-driver at controller.nodeSelector; cert-manager at cainjector.nodeSelector and nodeSelector and startupapicheck.nodeSelector and webhook.nodeSelector; gpu-operator at operator.nodeSelector; k8s-ephemeral-storage-metrics at nodeSelector; kai-scheduler at global.nodeSelector; kube-prometheus-stack at alertmanager.alertmanagerSpec.nodeSelector and grafana.nodeSelector and kube-state-metrics.nodeSelector and prometheus-node-exporter.nodeSelector and prometheus.prometheusSpec.nodeSelector and prometheusOperator.admissionWebhooks.patch.nodeSelector and prometheusOperator.nodeSelector and thanosRuler.thanosRulerSpec.nodeSelector; kubeflow-trainer at jobset.controller.nodeSelector and manager.nodeSelector; nfd at gc.nodeSelector and master.nodeSelector; nodewright-operator at controllerManager.selectors; nvidia-dra-driver-gpu at controller.nodeSelector; nvsentinel at global.systemNodeSelector; prometheus-adapter at nodeSelector. A different value changes the bundle bytes and every digest in this entry, so the entry must be regenerated with the new value or a variant must be made from it.",
        "status": "confirmed-placeholder"
      }
    ],
    "promotion": {
      "state": "not-recorded"
    },
    "coverage": {
      "render_parity": {
        "status": "not_declared",
        "declared": null
      },
      "confighub_scan_ops": {
        "status": "not_declared",
        "declared": null
      },
      "local_kubernetes": {
        "status": "not_declared",
        "declared": null
      },
      "lifecycle_observation": {
        "status": "not_declared",
        "declared": null
      },
      "gitops_oci_live": {
        "status": "not_declared",
        "declared": null
      },
      "live_dual_parity": {
        "status": "not_declared",
        "declared": null
      },
      "two_cluster_kind": {
        "status": "not_declared",
        "declared": null
      },
      "variant_promotion": {
        "status": "not_declared",
        "declared": null
      }
    },
    "policy": {
      "profile": "catalog-standard",
      "productionAdds": [
        "workflow-approval"
      ]
    },
    "operations": {
      "resourceClass": "system-configuration",
      "ownerClass": "platform-team",
      "changeCadence": "planned-platform-release"
    },
    "ownership": {
      "status": "declared",
      "sourceControlled": [
        "Fields classified as source-owned by the AICR v1.0.0 field-policy assessment"
      ],
      "variantControlled": [
        "Fields classified as safe reviewed ConfigHub changes by the AICR v1.0.0 field-policy assessment"
      ],
      "targetSupplied": [
        "aicr-target-fact-1",
        "aicr-target-fact-2",
        "aicr-target-fact-3",
        "aicr-target-fact-4",
        "aicr-target-fact-5",
        "aicr-target-fact-6"
      ],
      "deliveryProtected": [],
      "rule": "Re-evaluate ownership when the source, variant, destination, or delivery behavior changes; overlapping source and variant edits require review."
    },
    "notes": []
  },
  "assessment": {
    "stages": [
      {
        "id": "inspection",
        "question": "What do I have?",
        "answer": "Inspect or compare AICR snapshots without selecting a recipe. The diff reports observed differences; select the intended provider-curated source variant before deciding whether a difference is a fault.",
        "evidenceState": "completed",
        "resultState": "available",
        "nextAction": "Inspect or compare the source and exact files before choosing a destination.",
        "destinationAccessRequired": false,
        "deploymentRequired": false,
        "requiredInputs": [
          "An AICR snapshot, recipe, generated bundle, or exact generated output"
        ],
        "records": [
          {
            "name": "generation-receipt.yaml",
            "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml"
          },
          {
            "name": "argocd-rendered",
            "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered"
          },
          {
            "name": "checksums.txt",
            "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt"
          }
        ]
      },
      {
        "id": "materialization",
        "question": "What will it produce?",
        "answer": "Run the recorded AICR composition and wrapper render step to produce the exact Kubernetes objects for this configuration.",
        "evidenceState": "completed",
        "resultState": "pass",
        "nextAction": "Review the exact object set and its digest.",
        "destinationAccessRequired": false,
        "deploymentRequired": false,
        "requiredInputs": [
          "The selected provider-curated AICR leaf and its overlay choices; a recipe is needed for recipe-dependent generation or validation"
        ],
        "records": [
          {
            "name": "generation-receipt.yaml",
            "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml"
          },
          {
            "name": "checksums.txt",
            "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt"
          }
        ]
      },
      {
        "id": "destination",
        "question": "Can this destination accept it?",
        "answer": "The destination has not been checked for this exact configuration. A recorded source or render result is not a destination pass.",
        "evidenceState": "not-run",
        "resultState": "not-run",
        "nextAction": "Choose a destination and check its APIs, prerequisites, policies, credentials, controllers, and hardware before apply.",
        "destinationAccessRequired": true,
        "deploymentRequired": false,
        "requiredInputs": [
          "The exact candidate configuration",
          "The selected destination and its current APIs, prerequisites, policies, credentials, controllers, and hardware facts"
        ],
        "records": [
          {
            "name": "route-intent.yaml",
            "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml",
            "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
          }
        ]
      },
      {
        "id": "post-deployment",
        "question": "Did it work?",
        "answer": "No post-deployment result is recorded for this exact configuration. Publication, upload, or rendering is not proof that it ran correctly.",
        "evidenceState": "not-run",
        "resultState": "not-run",
        "nextAction": "Deliver the exact revision, then record controller, resource, health, runtime, drift, and rollback results separately.",
        "destinationAccessRequired": true,
        "deploymentRequired": true,
        "requiredInputs": [
          "The exact delivered revision and destination",
          "Live controller, resource, health, runtime, drift, and rollback observations required by the claim"
        ],
        "records": []
      }
    ]
  },
  "evidence": {
    "links": [
      {
        "name": "argocd-rendered",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered"
      },
      {
        "name": "checksums.txt",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt"
      },
      {
        "name": "configHubUploadReceipt",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/confighub-upload-receipt.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/confighub-upload-receipt.yaml"
      },
      {
        "name": "digestIndex",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/digest-index/platform-index.json",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/digest-index/platform-index.json"
      },
      {
        "name": "fieldPolicy",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/field-policy-assessment.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/field-policy-assessment.yaml"
      },
      {
        "name": "flatteningVerdict",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/flattening-safety-verdict.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/flattening-safety-verdict.yaml"
      },
      {
        "name": "sourceGenerationReceipt",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/generation-receipt.yaml"
      },
      {
        "name": "publicOciReceipt",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/public-oci-receipt.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/public-oci-receipt.yaml"
      },
      {
        "name": "routeIntent",
        "path": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/route-intent.yaml"
      },
      {
        "name": "sourceProvenance",
        "path": "runs/aicr-provenance-v1-0-0/receipt.yaml",
        "url": "https://github.com/confighub/helm-expt/blob/main/runs/aicr-provenance-v1-0-0/receipt.yaml"
      }
    ],
    "attributes": []
  },
  "nextSteps": [
    {
      "id": "get-objects",
      "label": "Get the exact objects",
      "state": "run-for-this-entry",
      "summary": "The Catalog rendered this entry and retains its 17 Argo CD Applications as files that one inventory lists.",
      "basis": [
        "flattened.materializationStatus",
        "flattened.retainedObjects",
        "flattened.inventory",
        "flattened.digest"
      ],
      "commands": [
        {
          "comment": "make the directories the inventory names",
          "command": "mkdir -p aicr-eks-h100-training-kubeflow-v1-0-0-argocd/templates"
        },
        {
          "comment": "fetch the inventory, then every file it lists",
          "command": "curl -fsSL -o aicr-eks-h100-training-kubeflow-v1-0-0-argocd/checksums.txt https://raw.githubusercontent.com/confighub/helm-expt/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/checksums.txt"
        },
        {
          "command": "cut -c67- aicr-eks-h100-training-kubeflow-v1-0-0-argocd/checksums.txt | xargs -I{} curl -fsSL -o aicr-eks-h100-training-kubeflow-v1-0-0-argocd/{} https://raw.githubusercontent.com/confighub/helm-expt/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/argocd-rendered/{}"
        },
        {
          "comment": "check every file against the inventory",
          "command": "(cd aicr-eks-h100-training-kubeflow-v1-0-0-argocd && shasum -a 256 -c checksums.txt)"
        },
        {
          "comment": "check the inventory against the listing digest",
          "command": "shasum -a 256 aicr-eks-h100-training-kubeflow-v1-0-0-argocd/checksums.txt",
          "expect": "45baec5d12b562cec93aa771d1f631f19e8b6c68ab79fd7a8f6314dedff9c47e  aicr-eks-h100-training-kubeflow-v1-0-0-argocd/checksums.txt"
        },
        {
          "comment": "join the files into one for step 2",
          "command": "cat aicr-eks-h100-training-kubeflow-v1-0-0-argocd/templates/*.yaml > aicr-eks-h100-training-kubeflow-v1-0-0-argocd.yaml"
        }
      ]
    },
    {
      "id": "compare",
      "label": "Compare with another version or base",
      "state": "not-run-for-this-entry",
      "summary": "The listing records no comparison for this entry. The commands run on the retained files, with no account.",
      "basis": [
        "variants.known",
        "source.name",
        "flattened.format"
      ],
      "commands": [
        {
          "comment": "fetch the argocd base at version v0.20.0",
          "command": "mkdir -p aicr-eks-h100-training-kubeflow-v0-20-0-argocd/templates"
        },
        {
          "command": "curl -fsSL -o aicr-eks-h100-training-kubeflow-v0-20-0-argocd/checksums.txt https://raw.githubusercontent.com/confighub/helm-expt/main/examples/aicr/eks-h100-training-kubeflow-v0-20-0/argocd-rendered/checksums.txt"
        },
        {
          "command": "cut -c67- aicr-eks-h100-training-kubeflow-v0-20-0-argocd/checksums.txt | xargs -I{} curl -fsSL -o aicr-eks-h100-training-kubeflow-v0-20-0-argocd/{} https://raw.githubusercontent.com/confighub/helm-expt/main/examples/aicr/eks-h100-training-kubeflow-v0-20-0/argocd-rendered/{}"
        },
        {
          "comment": "join them into one file",
          "command": "cat aicr-eks-h100-training-kubeflow-v0-20-0-argocd/templates/*.yaml > aicr-eks-h100-training-kubeflow-v0-20-0-argocd.yaml"
        },
        {
          "comment": "list what changed from v0.20.0 to v1.0.0",
          "command": "cub config diff aicr-eks-h100-training-kubeflow-v0-20-0-argocd.yaml aicr-eks-h100-training-kubeflow-v1-0-0-argocd.yaml --summary"
        }
      ],
      "siblings": [
        {
          "id": "aicr-eks-h100-training-kubeflow-v0-14-0-argocd",
          "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v0-14-0-argocd.json",
          "version": "v0.14.0",
          "base": "argocd",
          "relation": "other-version"
        },
        {
          "id": "aicr-eks-h100-training-kubeflow-v0-14-0-base",
          "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v0-14-0-base.json",
          "version": "v0.14.0",
          "base": "base",
          "relation": "other-version"
        },
        {
          "id": "aicr-eks-h100-training-kubeflow-v0-18-0-argocd",
          "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v0-18-0-argocd.json",
          "version": "v0.18.0",
          "base": "argocd",
          "relation": "other-version"
        },
        {
          "id": "aicr-eks-h100-training-kubeflow-v0-19-0-argocd",
          "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v0-19-0-argocd.json",
          "version": "v0.19.0",
          "base": "argocd",
          "relation": "other-version"
        },
        {
          "id": "aicr-eks-h100-training-kubeflow-v0-20-0-argocd",
          "url": "https://confighub.github.io/helm-expt/site/listings/aicr-eks-h100-training-kubeflow-v0-20-0-argocd.json",
          "version": "v0.20.0",
          "base": "argocd",
          "relation": "other-version"
        }
      ]
    },
    {
      "id": "upload",
      "label": "Upload it as a variant",
      "state": "run-for-this-entry",
      "summary": "The Catalog saved this entry in ConfigHub. The commands use its published literal configuration bundle.",
      "basis": [
        "source.ociRef",
        "oci.bundles[literal-config]",
        "oci.bundles[confighub-upload]",
        "oci.bundles[confighub-release]",
        "lifecycle.coverage.confighub_scan_ops"
      ],
      "commands": [
        {
          "comment": "sign in; steps 3 to 5 write to your ConfigHub organization",
          "command": "cub auth login",
          "needsAccount": true
        },
        {
          "comment": "preview the upload of the published bundle; nothing is written",
          "command": "cub variant upload --dry-run --component eks-h100-training-kubeflow --variant argocd --space aicr-eks-h100-training-kubeflow-v1-0-0-argocd oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow-argocd-config:1.0.0",
          "needsAccount": true
        },
        {
          "comment": "upload the bundle as a base Space of Units",
          "command": "cub variant upload --component eks-h100-training-kubeflow --variant argocd --space aicr-eks-h100-training-kubeflow-v1-0-0-argocd oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/aicr-eks-h100-training-kubeflow-argocd-config:1.0.0",
          "needsAccount": true,
          "writes": true
        }
      ],
      "receipt": "examples/aicr/eks-h100-training-kubeflow-v1-0-0/confighub-upload-receipt.yaml",
      "receiptUrl": "https://github.com/confighub/helm-expt/blob/main/examples/aicr/eks-h100-training-kubeflow-v1-0-0/confighub-upload-receipt.yaml"
    },
    {
      "id": "deploy",
      "label": "Deploy it",
      "state": "partly-run-for-this-entry",
      "summary": "A delivery is partly recorded for this entry, and no run has passed. Argo CD is partly recorded, Flux does not apply, and kubectl has no record.",
      "basis": [
        "oci.runtimes",
        "lifecycle.installTimeInputs"
      ],
      "commands": [
        {
          "comment": "clone the base onto a Target as a dev variant",
          "command": "cub variant create dev aicr-eks-h100-training-kubeflow-v1-0-0-argocd --target workshop/target --space-pattern \"template:aicr-eks-h100-training-kubeflow-v1-0-0-argocd-dev\"",
          "needsAccount": true,
          "writes": true
        },
        {
          "comment": "publish the Release that Argo CD or Flux pulls",
          "command": "cub release publish aicr-eks-h100-training-kubeflow-v1-0-0-argocd-dev",
          "needsAccount": true,
          "writes": true
        }
      ],
      "needs": [
        "aicr-target-fact-1",
        "aicr-target-fact-2",
        "aicr-target-fact-3",
        "aicr-target-fact-4",
        "aicr-target-fact-5",
        "aicr-target-fact-6",
        "systemNodeSelector"
      ]
    },
    {
      "id": "promote",
      "label": "Promote a change",
      "state": "not-run-for-this-entry",
      "summary": "No promotion is recorded for this entry.",
      "basis": [
        "lifecycle.promotion"
      ],
      "commands": [
        {
          "comment": "preview what the dev variant would take from the base",
          "command": "cub variant promote aicr-eks-h100-training-kubeflow-v1-0-0-argocd-dev --dry-run -o mutations",
          "needsAccount": true
        },
        {
          "comment": "promote once you have read the preview",
          "command": "cub variant promote aicr-eks-h100-training-kubeflow-v1-0-0-argocd-dev --change-desc \"Pull the reviewed base forward\"",
          "needsAccount": true,
          "writes": true
        }
      ]
    }
  ]
}
