apiVersion: "catalog.confighub.com/v1alpha1"
kind: "BaseVariantRecord"
metadata:
  name: "kyverno-kyverno-3-9-0-default"
  labels:
    sourceType: "helm"
    component: "kyverno/kyverno"
    sourceVersion: "3.9.0"
    base: "default"
spec:
  source:
    type: "helm"
    name: "kyverno/kyverno"
    version: "3.9.0"
    record: "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
    packageOciRef: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/kyverno-kyverno:3.9.0@sha256:d776bb0614033308ed60af0b15af522ba857f255ad92b3247773f8c4cd63874f"
    selection:
      name: "default"
      kind: "catalog-preset"
      provider: "Config Workshop"
      record: "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
  baseVariant:
    name: "default"
    revision: "r001"
    digest: "ea613f7f672c7e9c5e2c44a7f637768f17580745f7b9bd80aed25109f7fd538d"
    digestRole: "helm-variant-revision"
    digestRecord: "recipes/kyverno/kyverno/3.9.0/revisions/default/r001/variant-revision.yaml"
  configuration:
    format: "kubernetes-yaml"
    objects: "recipes/kyverno/kyverno/3.9.0/revisions/default/r001/rendered/release-objects.yaml"
    inventory: "recipes/kyverno/kyverno/3.9.0/revisions/default/r001/rendered/object-inventory.yaml"
    objectCount: 69
    digest: "ce364621e5802e6a4ce33666345a33139edcb7a6948062ed65e8df8bbfc1291a"
    digestRole: "canonical-object-set"
    digestRecord: "recipes/kyverno/kyverno/3.9.0/revisions/default/r001/variant-revision.yaml"
  processing:
    sourceIntent:
      status: "recorded"
      record: "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
    materialization:
      method: "helm-render"
      status: "captured"
      outputDigest: "ce364621e5802e6a4ce33666345a33139edcb7a6948062ed65e8df8bbfc1291a"
      record: "recipes/kyverno/kyverno/3.9.0/revisions/default/r001/variant-revision.yaml"
    flattening:
      status: "decided"
      verdict: "unsafe-to-flatten"
      action: "process-source-late"
      scope: "kyverno/kyverno@3.9.0/default; recheck after source, lifecycle-sensitive variant, destination, or delivery-runtime changes"
      record: "recipes/kyverno/kyverno/3.9.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/kyverno-kyverno-3-9-0-default.yaml"
          - "recipes/kyverno/kyverno/3.9.0/revisions/default/r001/rendered/release-objects.yaml"
          - "recipes/kyverno/kyverno/3.9.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/kyverno-kyverno-3-9-0-default.yaml"
          - "recipes/kyverno/kyverno/3.9.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: "No destination answer is available yet because target facts or lifecycle handling are incomplete."
        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: "pending"
        resultState: "pending"
        records:
          - "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
          - "data/lifecycle-routes/routes.json"
          - "data/lifecycle-routes/summary.md"
        nextAction: "Choose the destination, record its facts, and resolve the required lifecycle work 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=kyverno/kyverno"
      - "version=3.9.0"
      - "base=default"
      - "valuesProfile=recipes/kyverno/kyverno/3.9.0/effective-values.yaml"
      - "namespace=kyverno"
      - "releaseName=kyverno"
      - "capabilityProfile={\"apiVersions\":[],\"kubeVersion\":\"1.30.0\"}"
    installTime:
      []
    installTimeStatus: "not-yet-declared"
  lifecycle:
    requirements:
      status: "gap"
      items:
        -
          id: "delete-cleanup-policy"
          origin: "base"
          type: "lifecycle-action"
          detail: "Webhook and APIService cleanup belongs to delete or rollback policy."
        -
          id: "upgrade-action-with-receipt"
          origin: "base"
          type: "lifecycle-action"
          detail: "Resource migration after upgrade must be recorded as an upgrade operation."
        -
          id: "explicit-test-check"
          origin: "base"
          type: "lifecycle-action"
          detail: "Test hooks become checks, not hidden install behavior."
        -
          id: "preserve-ordering"
          origin: "base"
          type: "lifecycle-action"
          detail: "hook-weight-ordering"
        -
          id: "target-facts-or-preflight"
          origin: "base"
          type: "lifecycle-action"
          detail: "target-facts"
      records:
        - "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
        - "data/lifecycle-routes/routes.json"
        - "data/lifecycle-routes/summary.md"
    routeIntent:
      status: "gap"
      routes:
        -
          id: "delete-cleanup-policy"
          requirementRefs:
            - "delete-cleanup-policy"
          phase: "observe"
          proposedActor: "Kubernetes"
          proposedMechanism: "Webhook and APIService cleanup belongs to delete or rollback policy."
          automatic: false
          status: "recorded"
          sourceStatus: "routed"
          supportedRuntimes:
            - "Argo CD"
            - "Flux"
            - "direct apply"
          checks:
            - "a live receipt for 3.9.0 and this base"
            - "Run this route for 3.9.0 and record the result before treating it as observed for this version."
          evidence:
            - "data/hook-lifecycle/receipts/kyverno-kyverno/default/latest.yaml"
            - "data/hook-lifecycle/top100-hooks.csv"
            - "recipes/kyverno/kyverno/3.8.1/helm-pain-report.yaml"
            - "runs/hook-lifecycle/kyverno-kyverno/default/latest/receipt.yaml"
        -
          id: "upgrade-action-with-receipt"
          requirementRefs:
            - "upgrade-action-with-receipt"
          phase: "pre-apply"
          proposedActor: "delivery workflow"
          proposedMechanism: "Resource migration after upgrade must be recorded as an upgrade operation."
          automatic: false
          status: "recorded"
          sourceStatus: "routed"
          supportedRuntimes:
            - "Argo CD"
            - "Flux"
            - "direct apply"
          checks:
            - "a live receipt for 3.9.0 and this base"
            - "Run this route for 3.9.0 and record the result before treating it as observed for this version."
          evidence:
            - "data/hook-lifecycle/receipts/kyverno-kyverno/default/latest.yaml"
            - "data/hook-lifecycle/top100-hooks.csv"
            - "recipes/kyverno/kyverno/3.8.1/helm-pain-report.yaml"
            - "runs/hook-lifecycle/kyverno-kyverno/default/latest/receipt.yaml"
        -
          id: "explicit-test-check"
          requirementRefs:
            - "explicit-test-check"
          phase: "observe"
          proposedActor: "CI or operator"
          proposedMechanism: "Test hooks become checks, not hidden install behavior."
          automatic: false
          status: "recorded"
          sourceStatus: "routed"
          supportedRuntimes:
            - "Argo CD"
            - "Flux"
            - "direct apply"
          checks:
            - "a live receipt for 3.9.0 and this base"
            - "Run this route for 3.9.0 and record the result before treating it as observed for this version."
          evidence:
            - "data/hook-lifecycle/receipts/kyverno-kyverno/default/latest.yaml"
            - "data/hook-lifecycle/top100-hooks.csv"
            - "recipes/kyverno/kyverno/3.8.1/helm-pain-report.yaml"
            - "runs/hook-lifecycle/kyverno-kyverno/default/latest/receipt.yaml"
        -
          id: "preserve-ordering"
          requirementRefs:
            - "preserve-ordering"
          phase: "pre-apply"
          proposedActor: "selected applier"
          proposedMechanism: "Your applier — must apply CRDs before dependent objects"
          automatic: false
          status: "recorded"
          sourceStatus: "observed"
          supportedRuntimes:
            - "Argo CD"
            - "Flux"
            - "direct apply"
          checks:
            - "a live receipt for 3.9.0 and this base"
            - "Run this route for 3.9.0 and record the result before treating it as observed for this version."
          evidence:
            - "data/hook-lifecycle/receipt-index.csv"
            - "data/hook-lifecycle/receipts/kyverno-kyverno/default/latest.yaml"
        -
          id: "target-facts-or-preflight"
          requirementRefs:
            - "target-facts-or-preflight"
          phase: "preflight"
          proposedActor: "operator"
          proposedMechanism: "# create the required target facts (Secret/StorageClass/etc.) before apply"
          automatic: false
          status: "recorded"
          sourceStatus: "observed"
          supportedRuntimes:
            - "Argo CD"
            - "Flux"
            - "direct apply"
          checks:
            - "a live receipt for 3.9.0 and this base"
            - "Run this route for 3.9.0 and record the result before treating it as observed for this version."
          evidence:
            - "data/hook-lifecycle/receipt-index.csv"
            - "data/hook-lifecycle/receipts/kyverno-kyverno/default/latest.yaml"
      records:
        - "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
        - "data/lifecycle-routes/routes.json"
        - "data/lifecycle-routes/summary.md"
    targetFacts:
      status: "gap"
      declared:
        {}
      requirementRefs:
        []
      records:
        - "data/helm-render-intents/intents/kyverno-kyverno-3-9-0-default.yaml"
        - "data/lifecycle-routes/routes.json"
        - "data/lifecycle-routes/summary.md"
    resolution:
      status: "gap"
      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:
      []
    deliveryProtected:
      - "delete-cleanup-policy"
    records:
      - "data/helm-render-intents/intents/kyverno-kyverno-3-9-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: "not-published-in-this-record"
      note: "The installer package contains several preset configurations. A literal OCI bundle for this one base needs its own publication receipt."
    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: "yes"
    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."
