apiVersion: "catalog.confighub.com/v1alpha1"
kind: "BaseVariantRecord"
metadata:
  name: "timoni-redis-8-10-1-default"
  labels:
    sourceType: "timoni"
    component: "redis"
    sourceVersion: "8.10.1"
    base: "default"
spec:
  source:
    type: "timoni"
    name: "redis"
    version: "8.10.1"
    record: "examples/timoni/redis-8-10-1/source-lock.yaml"
    packageOciRef: "oci://ghcr.io/stefanprodan/modules/redis@sha256:7f24e8f7e49132c90789464dcf5b82eb137e378c97735eec36efbe0d1caeb872"
    selection:
      name: "default"
      kind: "catalog-preset"
      provider: "Config Workshop"
      record: "examples/timoni/redis-8-10-1/source-lock.yaml"
  baseVariant:
    name: "default"
    revision: "materialized-r001"
    digest: "7f24e8f7e49132c90789464dcf5b82eb137e378c97735eec36efbe0d1caeb872"
    digestRole: "source-module-oci-manifest"
    digestRecord: "examples/timoni/redis-8-10-1/source-lock.yaml"
  configuration:
    format: "kubernetes-yaml"
    objects: "examples/timoni/redis-8-10-1/rendered/release-objects.yaml"
    inventory: "examples/timoni/redis-8-10-1/rendered/object-inventory.json"
    objectCount: 7
    digest: "10f21f387715146838bc531cba4ce921e8eca127b0ab69a065e4f66a2a146fc2"
    digestRole: "canonical-object-set"
    digestRecord: "examples/timoni/redis-8-10-1/generation-receipt.yaml"
  processing:
    sourceIntent:
      status: "recorded"
      record: "examples/timoni/redis-8-10-1/source-lock.yaml"
    materialization:
      method: "timoni-build"
      status: "captured"
      outputDigest: "10f21f387715146838bc531cba4ce921e8eca127b0ab69a065e4f66a2a146fc2"
      record: "examples/timoni/redis-8-10-1/generation-receipt.yaml"
    flattening:
      status: "decided"
      verdict: "flatten-with-routes"
      action: "retain-exact-objects-with-routes"
      scope: "redis@8.10.1/default; recheck after source, lifecycle-sensitive variant, destination, or delivery-runtime changes"
      record: "examples/timoni/redis-8-10-1/flattening-safety-verdict.yaml"
    boundaries:
      - "Timoni built the immutable module and selected values into the exact objects retained by this base."
      - "The module's ordered apply and optional test remain lifecycle work beside the literal objects."
  assessment:
    stages:
      -
        id: "inspection"
        question: "What do I have?"
        answer: "Inspect the timoni source, choices, locks, and any existing output before selecting a destination."
        requiredInputs:
          - "A Timoni module or bundle, its schema and values, or built output"
        catalogMatchRequired: false
        sourceIntentRequired: false
        destinationAccessRequired: false
        deploymentRequired: false
        evidenceState: "completed"
        resultState: "available"
        records:
          - "examples/timoni/redis-8-10-1/source-lock.yaml"
          - "examples/timoni/redis-8-10-1/rendered/release-objects.yaml"
          - "examples/timoni/redis-8-10-1/rendered/object-inventory.json"
        nextAction: "Inspect or compare the source and exact files before choosing a destination."
      -
        id: "materialization"
        question: "What will it produce?"
        answer: "Run the recorded Timoni build step to produce the exact Kubernetes objects for this configuration."
        requiredInputs:
          - "The pinned module or bundle OCI, typed values, and Timoni build command"
        catalogMatchRequired: false
        sourceIntentRequired: true
        destinationAccessRequired: false
        deploymentRequired: false
        evidenceState: "completed"
        resultState: "pass"
        records:
          - "examples/timoni/redis-8-10-1/source-lock.yaml"
          - "examples/timoni/redis-8-10-1/generation-receipt.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:
          - "examples/timoni/redis-8-10-1/lifecycle-route-intent.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:
      - "module=oci://ghcr.io/stefanprodan/modules/redis@sha256:7f24e8f7e49132c90789464dcf5b82eb137e378c97735eec36efbe0d1caeb872"
      - "moduleVersion=8.10.1"
      - "instance=redis"
      - "namespace=redis"
      - "values=examples/timoni/redis-8-10-1/selected-values.cue"
      - "schema=examples/timoni/redis-8-10-1/config-schema.cue"
    installTime:
      -
        name: "redis namespace"
        value: "redis"
        status: "required-not-live-checked"
      -
        name: "Kubernetes version"
        value: "1.20.0 or newer"
        status: "required-not-live-checked"
      -
        name: "StorageClass"
        value: "standard"
        status: "required-not-live-checked"
    installTimeStatus: "three destination facts recorded; no destination selected"
  lifecycle:
    requirements:
      status: "recorded"
      items:
        -
          id: "apply-master-first"
          origin: "base"
          type: "lifecycle-action"
          detail: "Apply the ServiceAccount, ConfigMap, master Service, persistent volume claim, and master Deployment first; wait for the master to become ready before continuing."
        -
          id: "apply-readonly-replica-second"
          origin: "base"
          type: "lifecycle-action"
          detail: "Apply the read-only replica Deployment and Service after the master is ready."
        -
          id: "optional-ping-test"
          origin: "base"
          type: "lifecycle-action"
          detail: "Run the generated redis-cli PING Job after apply. The default Catalog selection leaves this test disabled."
        -
          id: "redis"
          origin: "base"
          type: "target-fact"
          detail: "The rendered objects use the redis namespace but do not create it."
        -
          id: "standard"
          origin: "base"
          type: "target-fact"
          detail: "The default persistent volume claim requests the standard StorageClass."
        -
          id: "1.20.0-or-newer"
          origin: "base"
          type: "target-fact"
          detail: "The module schema requires Kubernetes 1.20.0 or newer."
      records:
        - "examples/timoni/redis-8-10-1/lifecycle-route-intent.yaml"
    routeIntent:
      status: "recorded"
      routes:
        -
          id: "apply-master-first"
          requirementRefs:
            - "apply-master-first"
          phase: "apply"
          proposedActor: "selected destination actor"
          proposedMechanism: "Apply the ServiceAccount, ConfigMap, master Service, persistent volume claim, and master Deployment first; wait for the master to become ready before continuing."
          automatic: false
          status: "recorded"
          sourceStatus: "recorded-source-behavior"
          supportedRuntimes:
            []
          checks:
            - "Record the selected destination, Timoni apply result, and master readiness before claiming this route ran."
          evidence:
            []
          orderHint: 10
        -
          id: "apply-readonly-replica-second"
          requirementRefs:
            - "apply-readonly-replica-second"
          phase: "apply"
          proposedActor: "selected destination actor"
          proposedMechanism: "Apply the read-only replica Deployment and Service after the master is ready."
          automatic: false
          status: "recorded"
          sourceStatus: "recorded-source-behavior"
          supportedRuntimes:
            []
          checks:
            - "Record replica readiness for the selected destination before claiming this route ran."
          evidence:
            []
          orderHint: 20
        -
          id: "optional-ping-test"
          requirementRefs:
            - "optional-ping-test"
          phase: "post-apply"
          proposedActor: "selected destination actor"
          proposedMechanism: "Run the generated redis-cli PING Job after apply. The default Catalog selection leaves this test disabled."
          automatic: false
          status: "recorded"
          sourceStatus: "disabled-by-default"
          supportedRuntimes:
            []
          checks:
            - "Record the Job result when the test is enabled; do not infer it from the seven-object default build."
          evidence:
            []
          orderHint: 30
      records:
        - "examples/timoni/redis-8-10-1/lifecycle-route-intent.yaml"
    targetFacts:
      status: "recorded"
      declared:
        minimumKubernetesVersion: "1.20.0"
        namespace: "redis"
        storageClass: "standard"
      requirementRefs:
        - "redis"
        - "standard"
        - "1.20.0-or-newer"
      records:
        - "examples/timoni/redis-8-10-1/lifecycle-route-intent.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:
      - "Choices fixed by the recorded source configuration"
    variantControlled:
      - "Exact object changes retained after the base"
    targetSupplied:
      - "redis"
      - "standard"
      - "1.20.0-or-newer"
    deliveryProtected:
      []
    records:
      - "examples/timoni/redis-8-10-1/source-lock.yaml"
    rule: "Re-evaluate ownership when the source, variant, destination, or delivery behavior changes; overlapping source and variant edits require review."
  delivery:
    sourcePackageOci:
      status: "immutable-public-source"
      reference: "oci://ghcr.io/stefanprodan/modules/redis"
      digest: "sha256:7f24e8f7e49132c90789464dcf5b82eb137e378c97735eec36efbe0d1caeb872"
    literalConfigOci:
      status: "public-anonymous-pull-proved"
      reference: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/timoni-redis-config@sha256:375bc7dee05f4629d3b297f05628ee52c104d7a6ced03a2c16b198c819b7ae65"
      manifestDigest: "sha256:375bc7dee05f4629d3b297f05628ee52c104d7a6ced03a2c16b198c819b7ae65"
      objectSetSha256: "10f21f387715146838bc531cba4ce921e8eca127b0ab69a065e4f66a2a146fc2"
      receipt: "runs/timoni-redis-catalog-proof/public-oci-receipt.yaml"
    configHubUpload:
      status: "base-and-development-variant-retained"
      sourceRef: "oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/timoni-redis-config@sha256:375bc7dee05f4629d3b297f05628ee52c104d7a6ced03a2c16b198c819b7ae65"
      sourceObjectSetSha256: "10f21f387715146838bc531cba4ce921e8eca127b0ab69a065e4f66a2a146fc2"
      baseSpace: "timoni-redis-8-10-1-base"
      developmentSpace: "timoni-redis-8-10-1-dev"
      linkedUnits: 7
      objectChange: "none"
      receipt: "runs/timoni-redis-catalog-proof/confighub-receipt.yaml"
    configHubReleaseOci:
      status: "not-run"
    argoCd: "not-run"
    flux: "not-run"
    direct: "not-run"
  policy:
    profile: "catalog-standard"
    productionAdds:
      - "human-approval"
    normalSet: "baseline"
  evidence:
    sourceLock: "examples/timoni/redis-8-10-1/source-lock.yaml"
    selectedValues: "examples/timoni/redis-8-10-1/selected-values.cue"
    configSchema: "examples/timoni/redis-8-10-1/config-schema.cue"
    renderedObjects: "examples/timoni/redis-8-10-1/rendered/release-objects.yaml"
    objectInventory: "examples/timoni/redis-8-10-1/rendered/object-inventory.json"
    materializationReceipt: "examples/timoni/redis-8-10-1/generation-receipt.yaml"
    lifecycleRouteIntent: "examples/timoni/redis-8-10-1/lifecycle-route-intent.yaml"
    flatteningVerdict: "examples/timoni/redis-8-10-1/flattening-safety-verdict.yaml"
    readme: "examples/timoni/redis-8-10-1/README.md"
    publicOciReceipt: "runs/timoni-redis-catalog-proof/public-oci-receipt.yaml"
    configHubReceipt: "runs/timoni-redis-catalog-proof/confighub-receipt.yaml"
  operations:
    resourceClass: "user-workload"
    ownerClass: "application-team"
    changeCadence: "application-release"
status:
  level: "partial"
  claim: "The immutable Timoni Redis 8.10.1 module produced seven exact Kubernetes objects. The objects and their companion records are publicly pullable in one OCI. ConfigHub retained the same object set as a base and a linked development variant."
  limits:
    - "Kubernetes schema validation, admission, apply, workload health, upgrade, and rollback have not been run for this entry."
    - "The literal configuration OCI was anonymously pulled and compared with the recorded object set."
    - "ConfigHub retained a linked development variant with no Kubernetes field change; no destination was selected."
    - "No ConfigHub release OCI, Argo CD result, or Flux result is recorded."
    - "The output labels report app.kubernetes.io/version=0.0.0-devel; the source lock's version and immutable digest remain the source identity."
