apiVersion: "catalog.confighub.com/v1alpha1"
kind: "BaseVariantRecord"
metadata:
  name: "nvidia-gpu-operator-v26-7-1-external-nfd"
  labels:
    sourceType: "helm"
    component: "nvidia/gpu-operator"
    sourceVersion: "v26.7.1"
    base: "external-nfd"
spec:
  source:
    type: "helm"
    name: "nvidia/gpu-operator"
    version: "v26.7.1"
    record: "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
    packageOciRef: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/nvidia-gpu-operator:v26.7.1@sha256:03fa8aec9221b64cc5c25f3334775338a9f98c0529bad66f12340d124c238b71"
    selection:
      name: "external-nfd"
      kind: "catalog-preset"
      provider: "Config Workshop"
      record: "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
  baseVariant:
    name: "external-nfd"
    revision: "r001"
    digest: "9ff222d4ef6ae4132cf8c258b5a46953aeecf4b67ae4dfca0d2d72938509ff7c"
    digestRole: "helm-variant-revision"
    digestRecord: "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/variant-revision.yaml"
  configuration:
    format: "kubernetes-yaml"
    objects: "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/rendered/release-objects.yaml"
    inventory: "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/rendered/object-inventory.yaml"
    objectCount: 12
    digest: "a6331c4c2f27f1b5124c97a8e5074375ff58e0dbfcb48c0a12104dba2617b489"
    digestRole: "canonical-object-set"
    digestRecord: "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/variant-revision.yaml"
  processing:
    sourceIntent:
      status: "recorded"
      record: "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
    materialization:
      method: "helm-render"
      status: "captured"
      outputDigest: "a6331c4c2f27f1b5124c97a8e5074375ff58e0dbfcb48c0a12104dba2617b489"
      record: "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/variant-revision.yaml"
    flattening:
      status: "decided"
      verdict: "flatten-with-routes"
      action: "retain-exact-objects-with-routes"
      scope: "nvidia/gpu-operator@v26.7.1/external-nfd; recheck after source, lifecycle-sensitive variant, destination, or delivery-runtime changes"
      record: "recipes/nvidia/gpu-operator/v26.7.1/publication/flattening-safety-verdict-external-nfd.yaml"
    boundaries:
      - "Helm rendered the pinned chart and values into the exact objects retained by this base."
  assessment:
    stages:
      -
        id: "inspection"
        question: "What do I have?"
        answer: "Inspect the helm source, choices, locks, and any existing output before selecting a destination."
        requiredInputs:
          - "The chart and values, a rendered object set, or a package that contains them"
        catalogMatchRequired: false
        sourceIntentRequired: false
        destinationAccessRequired: false
        deploymentRequired: false
        evidenceState: "completed"
        resultState: "available"
        records:
          - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
          - "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/rendered/release-objects.yaml"
          - "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/rendered/object-inventory.yaml"
        nextAction: "Inspect or compare the source and exact files before choosing a destination."
      -
        id: "materialization"
        question: "What will it produce?"
        answer: "Run the recorded Helm render step to produce the exact Kubernetes objects for this configuration."
        requiredInputs:
          - "The pinned chart, version, values, namespace, release name, and render capabilities"
        catalogMatchRequired: false
        sourceIntentRequired: true
        destinationAccessRequired: false
        deploymentRequired: false
        evidenceState: "completed"
        resultState: "pass"
        records:
          - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
          - "recipes/nvidia/gpu-operator/v26.7.1/revisions/external-nfd/r001/variant-revision.yaml"
        nextAction: "Review the exact object set and its digest."
      -
        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."
        requiredInputs:
          - "The exact candidate configuration"
          - "The selected destination and its current APIs, prerequisites, policies, credentials, controllers, and hardware facts"
        catalogMatchRequired: false
        sourceIntentRequired: true
        destinationAccessRequired: true
        deploymentRequired: false
        evidenceState: "not-run"
        resultState: "not-run"
        records:
          - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
        nextAction: "Choose a destination and check its APIs, prerequisites, policies, credentials, controllers, and hardware before apply."
      -
        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."
        requiredInputs:
          - "The exact delivered revision and destination"
          - "Live controller, resource, health, runtime, drift, and rollback observations required by the claim"
        catalogMatchRequired: false
        sourceIntentRequired: true
        destinationAccessRequired: true
        deploymentRequired: true
        evidenceState: "not-run"
        resultState: "not-run"
        records:
          []
        nextAction: "Deliver the exact revision, then record controller, resource, health, runtime, drift, and rollback results separately."
  inputs:
    fixedAtBuildTime:
      - "chart=nvidia/gpu-operator"
      - "version=v26.7.1"
      - "base=external-nfd"
      - "valuesProfile=recipes/nvidia/gpu-operator/v26.7.1/effective-values-external-nfd.yaml"
      - "namespace=gpu-operator"
      - "releaseName=gpu-operator"
      - "capabilityProfile={\"apiVersions\":[],\"kubeVersion\":\"1.31.0\"}"
    installTime:
      -
        name: "clusterpolicies.nvidia.com"
        type: "requiredCRDs"
        required: true
        details:
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "clusterpolicies.nvidia.com"
          purpose: "gpu-operator CRD included in this base; it must be established before Kubernetes accepts the rendered ClusterPolicy object"
          sourceVariant: "external-nfd"
          packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
          packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
      -
        name: "computedomaincliques.resource.nvidia.com"
        type: "requiredCRDs"
        required: true
        details:
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "computedomaincliques.resource.nvidia.com"
          purpose: "CRD included in this base and applied before the workloads that use it"
          sourceVariant: "external-nfd"
          packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
          packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
      -
        name: "computedomains.resource.nvidia.com"
        type: "requiredCRDs"
        required: true
        details:
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "computedomains.resource.nvidia.com"
          purpose: "CRD included in this base and applied before the workloads that use it"
          sourceVariant: "external-nfd"
          packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
          packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
      -
        name: "gpuclusters.nvidia.com"
        type: "requiredCRDs"
        required: true
        details:
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "gpuclusters.nvidia.com"
          purpose: "CRD included in this base and applied before the workloads that use it"
          sourceVariant: "external-nfd"
          packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
          packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
      -
        name: "nvidiadrivers.nvidia.com"
        type: "requiredCRDs"
        required: true
        details:
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "nvidiadrivers.nvidia.com"
          purpose: "CRD included in this base and applied before the workloads that use it"
          sourceVariant: "external-nfd"
          packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
          packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
    installTimeStatus: "partly-declared"
  lifecycle:
    requirements:
      status: "recorded"
      items:
        -
          id: "lifecycle-action-pre-upgrade"
          origin: "base"
          type: "lifecycle-action"
          detail: "Before an upgrade, move the CRDs to the new version. Helm does not upgrade CRDs from a chart's crds directory, so the chart ships this Job: it applies the CRD files inside the new operator image, with its own ServiceAccount, ClusterRole and ClusterRoleBinding. A workflow that applies this base's CRD bundle before the other objects does the same work and should skip the Job. A workflow that leaves CRDs alone must run these four objects first, wait for the Job to complete, then delete them."
        -
          id: "lifecycle-action-pre-delete"
          origin: "base"
          type: "lifecycle-action"
          detail: "Before deleting, remove a chart-managed GPUCluster and wait for it to go. The Job deletes the chart-managed GPUCluster object and waits until it is gone, so the operator can drain workloads under its finalizer while it is still running. It uses the base's own gpu-operator ServiceAccount, so run it and wait for it before deleting the base objects. It does nothing when no GPUCluster exists, which is the case for this base as rendered."
        -
          id: "clusterpolicies.nvidia.com"
          origin: "base"
          type: "target-fact"
          detail: "gpu-operator CRD included in this base; it must be established before Kubernetes accepts the rendered ClusterPolicy object"
        -
          id: "computedomaincliques.resource.nvidia.com"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the workloads that use it"
        -
          id: "computedomains.resource.nvidia.com"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the workloads that use it"
        -
          id: "gpuclusters.nvidia.com"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the workloads that use it"
        -
          id: "nvidiadrivers.nvidia.com"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the workloads that use it"
      records:
        - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
        - "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/lifecycle-actions.yaml"
        - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/gpu-operator-lifecycle/external-nfd/pre-delete.yaml"
        - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/gpu-operator-lifecycle/external-nfd/pre-upgrade.yaml"
    routeIntent:
      status: "recorded"
      routes:
        -
          id: "crd-ordering"
          requirementRefs:
            - "clusterpolicies.nvidia.com"
            - "computedomaincliques.resource.nvidia.com"
            - "computedomains.resource.nvidia.com"
            - "gpuclusters.nvidia.com"
            - "nvidiadrivers.nvidia.com"
          phase: "apply"
          proposedActor: "selected applier"
          proposedMechanism: "Without an ordering declaration, per-file Units apply in no guaranteed order, so a custom resource can reach the cluster before the definition that gives it meaning. Apply the 5 CustomResourceDefinition objects first. Wait until every named definition reports the Established condition. Then apply the other 7 objects."
          automatic: false
          status: "requires-destination-resolution"
          sourceStatus: "recorded-not-run"
          supportedRuntimes:
            - "Argo CD"
            - "Flux"
            - "cub-direct applier"
          checks:
            - "every named definition reports the Established condition"
          evidence:
            - "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/crd-ordering.yaml"
            - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
        -
          id: "lifecycle-action-pre-upgrade"
          requirementRefs:
            - "lifecycle-action-pre-upgrade"
          phase: "destination-resolution"
          proposedActor: "delivery workflow"
          proposedMechanism: "Before an upgrade, move the CRDs to the new version. Helm does not upgrade CRDs from a chart's crds directory, so the chart ships this Job: it applies the CRD files inside the new operator image, with its own ServiceAccount, ClusterRole and ClusterRoleBinding. A workflow that applies this base's CRD bundle before the other objects does the same work and should skip the Job. A workflow that leaves CRDs alone must run these four objects first, wait for the Job to complete, then delete them."
          automatic: false
          status: "requires-destination-resolution"
          sourceStatus: "recorded-not-run"
          supportedRuntimes:
            []
          checks:
            - "stop and report; never continue past an action that did not complete"
          evidence:
            - "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/lifecycle-actions.yaml"
            - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/gpu-operator-lifecycle/external-nfd/pre-upgrade.yaml"
        -
          id: "lifecycle-action-pre-delete"
          requirementRefs:
            - "lifecycle-action-pre-delete"
          phase: "destination-resolution"
          proposedActor: "delivery workflow"
          proposedMechanism: "Before deleting, remove a chart-managed GPUCluster and wait for it to go. The Job deletes the chart-managed GPUCluster object and waits until it is gone, so the operator can drain workloads under its finalizer while it is still running. It uses the base's own gpu-operator ServiceAccount, so run it and wait for it before deleting the base objects. It does nothing when no GPUCluster exists, which is the case for this base as rendered."
          automatic: false
          status: "requires-destination-resolution"
          sourceStatus: "recorded-not-run"
          supportedRuntimes:
            []
          checks:
            - "stop and report; never continue past an action that did not complete"
          evidence:
            - "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/lifecycle-actions.yaml"
            - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/gpu-operator-lifecycle/external-nfd/pre-delete.yaml"
      records:
        - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
        - "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/crd-ordering.yaml"
        - "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/lifecycle-actions.yaml"
        - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/gpu-operator-lifecycle/external-nfd/pre-delete.yaml"
        - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/gpu-operator-lifecycle/external-nfd/pre-upgrade.yaml"
        - "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
    targetFacts:
      status: "recorded"
      declared:
        requiredCRDs:
          -
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "clusterpolicies.nvidia.com"
            purpose: "gpu-operator CRD included in this base; it must be established before Kubernetes accepts the rendered ClusterPolicy object"
            sourceVariant: "external-nfd"
            packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
            packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
          -
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "computedomaincliques.resource.nvidia.com"
            purpose: "CRD included in this base and applied before the workloads that use it"
            sourceVariant: "external-nfd"
            packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
            packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
          -
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "computedomains.resource.nvidia.com"
            purpose: "CRD included in this base and applied before the workloads that use it"
            sourceVariant: "external-nfd"
            packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
            packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
          -
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "gpuclusters.nvidia.com"
            purpose: "CRD included in this base and applied before the workloads that use it"
            sourceVariant: "external-nfd"
            packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
            packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
          -
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "nvidiadrivers.nvidia.com"
            purpose: "CRD included in this base and applied before the workloads that use it"
            sourceVariant: "external-nfd"
            packageSource: "package://prerequisites/target-facts/external-nfd-crds.yaml"
            packagePath: "packages/nvidia/gpu-operator/v26.7.1/prerequisites/target-facts/external-nfd-crds.yaml"
      requirementRefs:
        - "clusterpolicies.nvidia.com"
        - "computedomaincliques.resource.nvidia.com"
        - "computedomains.resource.nvidia.com"
        - "gpuclusters.nvidia.com"
        - "nvidiadrivers.nvidia.com"
      records:
        - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
    resolution:
      status: "awaits-variant-and-target"
      rule: "Re-resolve after a lifecycle-sensitive variant change, destination assignment, or delivery-runtime change; bind the result to the exact configuration digest."
      records:
        []
  ownership:
    status: "partly-declared"
    sourceControlled:
      - "Fields produced from the recorded chart values and render context"
    variantControlled:
      - "Post-render object fields recorded in ConfigHub after upload"
    targetSupplied:
      - "clusterpolicies.nvidia.com"
      - "computedomaincliques.resource.nvidia.com"
      - "computedomains.resource.nvidia.com"
      - "gpuclusters.nvidia.com"
      - "nvidiadrivers.nvidia.com"
    deliveryProtected:
      []
    records:
      - "data/helm-render-intents/intents/nvidia-gpu-operator-v26-7-1-external-nfd.yaml"
    rule: "Re-evaluate ownership when the source, variant, destination, or delivery behavior changes; overlapping source and variant edits require review."
  delivery:
    literalConfigOci:
      status: "published-with-receipt"
      observedReference: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/bundles/catalog-nvidia-gpu-operator-v26-7-1-external-nfd:r001@sha256:0f8043da91b1e4b5921e5034a8d531fb071f068460d0fddc47cd39d396551b36"
      manifestDigest: "sha256:0f8043da91b1e4b5921e5034a8d531fb071f068460d0fddc47cd39d396551b36"
      layerDigest: "sha256:a8de1c5ccf95f66188b1bddc261e15ea30f7a255066c16331cf147c9dad7cc22"
      objectSetSha256: "sha256:a6331c4c2f27f1b5124c97a8e5074375ff58e0dbfcb48c0a12104dba2617b489"
      receipt: "runs/catalog-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/publication-receipt.yaml"
      receiptSha256: "sha256:9b1838aee03cb672ddafae510b14f219758a2dff3a3dcaadef05c415bdc6e29b"
      plan: "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/literal-config-oci.yaml"
      routes:
        -
          path: "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/crd-ordering.yaml"
          sha256: "sha256:8072b3a171fea6b618880673a5018690ba84c402abc069268cde84398c5db534"
          role: "route: crd-ordering"
        -
          path: "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/routes/lifecycle-actions.yaml"
          sha256: "sha256:1654994e1f6e71dcddc9cb894f1cde09c18f551379233ac43615208469e09402"
          role: "route: lifecycle-actions"
      requirements:
        -
          path: "data/nvidia-literal-bundles/nvidia-gpu-operator-v26-7-1-external-nfd/requirements/target-requirements.yaml"
          sha256: "sha256:b80ebb1a2eced3a6b8a5ee7447870c7f35f31a2f1ac6172ef14f063938f40111"
          role: "requirement: target"
      note: "An anonymous pull returned the exact objects and their companion files. No route has been run, nothing was uploaded to ConfigHub, and this bundle is not a row in the certified-bundle table."
    configHubReleaseOci:
      status: "not-recorded-for-this-base"
      note: "No current ConfigHub Space release OCI receipt is recorded for this exact base."
    argoCd: "not-recorded-for-this-base"
    flux: "not-recorded-for-this-base"
    direct: "not-recorded-for-this-base"
    historicalGitopsOciStatus: "todo"
  policy:
    profile: "catalog-standard"
    productionAdds:
      - "workflow-approval"
  evidence:
    renderParity: "yes"
    confighubScanOps: "todo"
    localKind: "todo"
    lifecycleObserved: "n/a"
    gitopsOciLive: "todo"
    liveDualParity: "todo"
    twoClusterKind: "todo"
    variantPromotion: "missing-confighub-proof"
  operations:
    resourceClass: "not-yet-classified"
    ownerClass: "not-yet-classified"
    changeCadence: "not-yet-classified"
status:
  level: "available"
  claim: "The Helm source record, committed rendered objects, revision digest, routes, target facts, and proof-lane statuses are indexed here."
  limits:
    - "This record does not claim that the base has been uploaded to a live ConfigHub Space."
    - "The inputs still required at installation are not yet fully recorded for every Helm configuration."
    - "A multi-preset installer package OCI is not the same as a single literal configuration OCI."
