apiVersion: "catalog.confighub.com/v1alpha1"
kind: "BaseVariantRecord"
metadata:
  name: "node-feature-discovery-node-feature-discovery-0-19-0-default"
  labels:
    sourceType: "helm"
    component: "node-feature-discovery/node-feature-discovery"
    sourceVersion: "0.19.0"
    base: "default"
spec:
  source:
    type: "helm"
    name: "node-feature-discovery/node-feature-discovery"
    version: "0.19.0"
    record: "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
    packageOciRef: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/node-feature-discovery-node-feature-discovery:0.19.0@sha256:44e9888786f6d0c52a1351f8dcae597b1c91d68ddaf135049e9637fdbd76ea63"
    selection:
      name: "default"
      kind: "catalog-preset"
      provider: "Config Workshop"
      record: "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
  baseVariant:
    name: "default"
    revision: "r001"
    digest: "0274ad3e9970d030864cdc1945d06769f2d161afd26d6d3c7aa2ccc53fd273a9"
    digestRole: "helm-variant-revision"
    digestRecord: "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/r001/variant-revision.yaml"
  configuration:
    format: "kubernetes-yaml"
    objects: "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/r001/rendered/release-objects.yaml"
    inventory: "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/r001/rendered/object-inventory.yaml"
    objectCount: 17
    digest: "cd6276f43fedbf192ec8a7e9e35906a2a07dedfed5eed00286e34fa5cbb8e995"
    digestRole: "canonical-object-set"
    digestRecord: "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/r001/variant-revision.yaml"
  processing:
    sourceIntent:
      status: "recorded"
      record: "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
    materialization:
      method: "helm-render"
      status: "captured"
      outputDigest: "cd6276f43fedbf192ec8a7e9e35906a2a07dedfed5eed00286e34fa5cbb8e995"
      record: "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/r001/variant-revision.yaml"
    flattening:
      status: "decided"
      verdict: "flatten-with-routes"
      action: "retain-exact-objects-with-routes"
      scope: "node-feature-discovery/node-feature-discovery@0.19.0/default; recheck after source, lifecycle-sensitive variant, destination, or delivery-runtime changes"
      record: "recipes/node-feature-discovery/node-feature-discovery/0.19.0/publication/flattening-safety-verdict.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/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
          - "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/r001/rendered/release-objects.yaml"
          - "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/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/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
          - "recipes/node-feature-discovery/node-feature-discovery/0.19.0/revisions/default/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/node-feature-discovery-node-feature-discovery-0-19-0-default.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=node-feature-discovery/node-feature-discovery"
      - "version=0.19.0"
      - "base=default"
      - "valuesProfile=recipes/node-feature-discovery/node-feature-discovery/0.19.0/effective-values.yaml"
      - "namespace=node-feature-discovery"
      - "releaseName=nfd"
      - "capabilityProfile={\"apiVersions\":[],\"kubeVersion\":\"1.31.0\"}"
    installTime:
      -
        name: "nodefeaturegroups.nfd.k8s-sigs.io"
        type: "requiredCRDs"
        required: true
        details:
          applyMode: "server-side"
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "nodefeaturegroups.nfd.k8s-sigs.io"
          purpose: "CRD included in this base and applied before the components that use it"
          sourceVariant: "default"
          packageSource: "package://prerequisites/target-facts/default-crds.yaml"
          packagePath: "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
      -
        name: "nodefeaturerules.nfd.k8s-sigs.io"
        type: "requiredCRDs"
        required: true
        details:
          applyMode: "server-side"
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "nodefeaturerules.nfd.k8s-sigs.io"
          purpose: "CRD included in this base and applied before the components that use it"
          sourceVariant: "default"
          packageSource: "package://prerequisites/target-facts/default-crds.yaml"
          packagePath: "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
      -
        name: "nodefeatures.nfd.k8s-sigs.io"
        type: "requiredCRDs"
        required: true
        details:
          applyMode: "server-side"
          deliveryLanes:
            - "regularHelm"
            - "cubInstallerApply"
            - "configHubKubectlApply"
            - "configHubOciArgo"
          name: "nodefeatures.nfd.k8s-sigs.io"
          purpose: "CRD included in this base and applied before the components that use it"
          sourceVariant: "default"
          packageSource: "package://prerequisites/target-facts/default-crds.yaml"
          packagePath: "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
    installTimeStatus: "partly-declared"
  lifecycle:
    requirements:
      status: "recorded"
      items:
        -
          id: "lifecycle-action-post-delete"
          origin: "base"
          type: "lifecycle-action"
          detail: "After a delete, remove what NFD put on the nodes. The prune Job runs nfd-master with -prune, which removes the labels, annotations, taints and extended resources NFD created on every node, with its own ServiceAccount, ClusterRole and ClusterRoleBinding. A workflow that deletes this base must apply these four objects afterwards, wait for the Job to complete, then delete them. Skipping it leaves the node labels in place."
        -
          id: "nodefeaturegroups.nfd.k8s-sigs.io"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the components that use it"
        -
          id: "nodefeaturerules.nfd.k8s-sigs.io"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the components that use it"
        -
          id: "nodefeatures.nfd.k8s-sigs.io"
          origin: "base"
          type: "target-fact"
          detail: "CRD included in this base and applied before the components that use it"
      records:
        - "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
        - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/default/post-delete.yaml"
        - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/lifecycle-actions.yaml"
    routeIntent:
      status: "recorded"
      routes:
        -
          id: "crd-ordering"
          requirementRefs:
            - "nodefeaturegroups.nfd.k8s-sigs.io"
            - "nodefeaturerules.nfd.k8s-sigs.io"
            - "nodefeatures.nfd.k8s-sigs.io"
          phase: "pre-apply"
          proposedActor: "delivery workflow"
          proposedMechanism: "Install and establish the 3 CRDs before the master and the workers start. The workers write NodeFeature objects and the master reads NodeFeatureRule objects as soon as they start. The bundle holds exactly the CRDs this base renders. No object in the base is an instance of them."
          automatic: false
          status: "requires-destination-resolution"
          sourceStatus: "recorded-not-run"
          supportedRuntimes:
            []
          checks:
            []
          evidence:
            - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
            - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/lifecycle-actions.yaml"
        -
          id: "lifecycle-action-post-delete"
          requirementRefs:
            - "lifecycle-action-post-delete"
          phase: "destination-resolution"
          proposedActor: "delivery workflow"
          proposedMechanism: "After a delete, remove what NFD put on the nodes. The prune Job runs nfd-master with -prune, which removes the labels, annotations, taints and extended resources NFD created on every node, with its own ServiceAccount, ClusterRole and ClusterRoleBinding. A workflow that deletes this base must apply these four objects afterwards, wait for the Job to complete, then delete them. Skipping it leaves the node labels in place."
          automatic: false
          status: "requires-destination-resolution"
          sourceStatus: "recorded-not-run"
          supportedRuntimes:
            []
          checks:
            []
          evidence:
            - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/lifecycle-actions.yaml"
            - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/default/post-delete.yaml"
      records:
        - "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.yaml"
        - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/default/post-delete.yaml"
        - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/node-feature-discovery-lifecycle/lifecycle-actions.yaml"
        - "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
    targetFacts:
      status: "recorded"
      declared:
        requiredCRDs:
          -
            applyMode: "server-side"
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "nodefeaturegroups.nfd.k8s-sigs.io"
            purpose: "CRD included in this base and applied before the components that use it"
            sourceVariant: "default"
            packageSource: "package://prerequisites/target-facts/default-crds.yaml"
            packagePath: "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
          -
            applyMode: "server-side"
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "nodefeaturerules.nfd.k8s-sigs.io"
            purpose: "CRD included in this base and applied before the components that use it"
            sourceVariant: "default"
            packageSource: "package://prerequisites/target-facts/default-crds.yaml"
            packagePath: "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
          -
            applyMode: "server-side"
            deliveryLanes:
              - "regularHelm"
              - "cubInstallerApply"
              - "configHubKubectlApply"
              - "configHubOciArgo"
            name: "nodefeatures.nfd.k8s-sigs.io"
            purpose: "CRD included in this base and applied before the components that use it"
            sourceVariant: "default"
            packageSource: "package://prerequisites/target-facts/default-crds.yaml"
            packagePath: "packages/node-feature-discovery/node-feature-discovery/0.19.0/prerequisites/target-facts/default-crds.yaml"
      requirementRefs:
        - "nodefeaturegroups.nfd.k8s-sigs.io"
        - "nodefeaturerules.nfd.k8s-sigs.io"
        - "nodefeatures.nfd.k8s-sigs.io"
      records:
        - "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.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:
      - "nodefeaturegroups.nfd.k8s-sigs.io"
      - "nodefeaturerules.nfd.k8s-sigs.io"
      - "nodefeatures.nfd.k8s-sigs.io"
    deliveryProtected:
      []
    records:
      - "data/helm-render-intents/intents/node-feature-discovery-node-feature-discovery-0-19-0-default.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-node-feature-discovery-node-feature-discovery-0-19-0-default:latest@sha256:14b343fa497545ce1f3e7b147ce1e5126b92466745e68cff2b3cc9af272610ae"
      manifestDigest: "sha256:14b343fa497545ce1f3e7b147ce1e5126b92466745e68cff2b3cc9af272610ae"
      layerDigest: "sha256:ea4f46aaeabb12343630b3f29435e4b32c6343af0eeb3f2e48da1131c9ef3be2"
      objectSetSha256: "sha256:cd6276f43fedbf192ec8a7e9e35906a2a07dedfed5eed00286e34fa5cbb8e995"
      receipt: "data/certified-bundles/receipts/catalog/node-feature-discovery-0.19.0-default/receipt.yaml"
      receiptSha256: "sha256:4122080a5f20dc39097c0c0326c1a83db263e9856c1be8661ec8dba9456b95ff"
      publicationReceipt: "runs/certified-bundles/catalog-node-feature-discovery-node-feature-discovery-0-19-0-default/publication-receipt.yaml"
      publicationReceiptSha256: "sha256:953729a9d217f0ca6cb88291cff4eaae75a8ceee52bc01fb152333c6d5688511"
      routes:
        -
          path: "data/certified-bundles/routes/catalog/node-feature-discovery-node-feature-discovery-0.19.0-default/crd-ordering.yaml"
          sha256: "sha256:a4909e542193f5c9bcacbdebdb082076b214dac800169f561054b1d416e97ba7"
          role: "route: crd-ordering"
        -
          path: "data/certified-bundles/routes/catalog/node-feature-discovery-node-feature-discovery-0.19.0-default/lifecycle-action-post-delete.yaml"
          sha256: "sha256:d80d68955f7e72e06e77e7a200499c1b7ed8788ca58de5de1db6acc087cfce5b"
          role: "route: plan-step lifecycle-action-post-delete"
      note: "The receipt and publication receipt declare these route files; this binding does not prove a remote pullback or route execution."
    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: "todo"
    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."
