{
    "apiVersion": "v1",
    "items": [
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/012239dd-1995-465d-b2f8-cc7a6db4987e",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:30:52Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "apply-mapping",
                    "tekton.dev/task": "apply-mapping"
                },
                "name": "managed-d6ffr-apply-mapping",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "14680",
                "uid": "012239dd-1995-465d-b2f8-cc7a6db4987e"
            },
            "spec": {
                "params": [
                    {
                        "name": "failOnEmptyResult",
                        "value": "true"
                    },
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "snapshotPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:12c94c34558c098e7e812d5e9a57793ed5ec208d3dcb1c8467b4142e9f65f26e"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "retries": 3,
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/apply-mapping/apply-mapping.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:31:10Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:31:10Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-apply-mapping-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/apply-mapping/apply-mapping.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "mapped",
                        "type": "string",
                        "value": "true"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:5175d233ce0af720dcb7110af3aed2aebc5b3ae6f7573c0f05eb8eb294b3e541"
                    }
                ],
                "startTime": "2026-10-09T14:30:52Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://44f88ce3473d27d7ae0690218fb5abf3a3f5b7541e7335b65ac82d642f52b610",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:31:07Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:31:07Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-apply-mapping",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                        "name": "apply-mapping",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://64e7ca2eceecbdbd4b861d97615549beed657fa958ed37f83317fb3562104823",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:31:08Z",
                            "message": "[{\"key\":\"mapped\",\"value\":\"true\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:31:07Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://4f42052cc0a3921e35df3b07d69a372056f0d1e99d21f6d8c39ba978c18dccd9",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:31:09Z",
                            "message": "[{\"key\":\"mapped\",\"value\":\"true\",\"type\":1},{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:5175d233ce0af720dcb7110af3aed2aebc5b3ae6f7573c0f05eb8eb294b3e541\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:31:09Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task to apply a mapping to a Snapshot.\n\nThe purpose of this task is to merge a mapping with the components contained in a Snapshot.\nThe mapping is expected to be present in the data field of the ReleasePlanAdmission provided in\nthe `releasePlanAdmissionPath`. If the data field does not contain a `mapping` key, the original\nSnapshot is returned. If there is a `mapping` key, it is merged with the `components` key in the\nSnapshot based on component name.\n\nA `mapped` result is also returned from this task containing a simple true/false value that is\nmeant to inform whether a mapped Snapshot is being returned or the original one.\n\nThis task supports variable expansion in tag values from the mapping. The currently supported variables are:\n* \"{{ timestamp }}\" -\u003e The build-date label from the image in the format provided by timestampFormat or %s as the\n  default.\n  If the build-date label is not available, we use the Created field in the image metadata as a fallback.\n* \"{{ release_timestamp }}\" -\u003e The current time in the format provided by timestampFormat or %s as the default\n* \"{{ git_sha }}\" -\u003e The git sha that triggered the snapshot being processed\n* \"{{ git_short_sha }}\" -\u003e The git sha reduced to 7 characters\n* \"{{ digest_sha }}\" -\u003e The image digest of the respective component\n* \"{{ incrementer }}\" -\u003e Automatically finds the highest existing incremented tag in the\n  repository and generates the next sequential tag (e.g., if the highest tag is v1.0.0-2, it will generate v1.0.0-3)\n* \"{{ component-incrementer }}\" -\u003e Like {{ incrementer }}, but finds the highest existing tag\n  across ALL repositories in the component and generates the next sequential tag uniformly.\n  Use this instead of {{ incrementer }} when pushing to multiple registries to ensure every\n  registry receives the same tag (e.g., if repo-a has v1.0.0-3 and repo-b has v1.0.0-5,\n  both will receive v1.0.0-6).\n* \"{{ oci_version }}\" -\u003e The version from OCI image annotations (org.opencontainers.image.version), with fallback\n  to OCI image labels if not present in annotations (converts + to _ for tag compliance)\n\nYou can also expand image labels, e.g. \"{{ labels.mylabel }}\" -\u003e The value of image label \"mylabel\"",
                    "params": [
                        {
                            "description": "Path to the JSON string of the Snapshot spec in the config workspace to apply the mapping to",
                            "name": "snapshotPath",
                            "type": "string"
                        },
                        {
                            "description": "Path to the JSON string of the merged data to use in the data workspace",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Fail the task if the resulting snapshot contains 0 components",
                            "name": "failOnEmptyResult",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "When \"true\", for each repository the resolved {{ timestamp }} value is added to the list of\ntags after translation (deduplicated). Fails if timestamp is empty. Only pipelines referencing\nthe check-labels task should set this to \"true\"\n",
                            "name": "addImplicitTimestampTag",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "A true/false value depicting whether or not the snapshot was mapped.",
                            "name": "mapped",
                            "type": "string"
                        },
                        {
                            "description": "Produced trusted data artifact",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:12c94c34558c098e7e812d5e9a57793ed5ec208d3dcb1c8467b4142e9f65f26e=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "1",
                                    "memory": "64Mi"
                                }
                            },
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                            "name": "apply-mapping",
                            "script": "#!/usr/bin/env bash\nset -euxo pipefail\n\nif [ -f \"/mnt/trusted-ca/ca-bundle.crt\" ]; then\n    export SSL_CERT_FILE=\"/mnt/trusted-ca/ca-bundle.crt\"\nfi\n\nSNAPSHOT_SPEC_FILE=\"/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json\"\nDATA_FILE=\"/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json\"\nSNAPSHOT_SPEC_FILE_ORIG=\"${SNAPSHOT_SPEC_FILE}.orig\"\n\nif [ ! -f \"${SNAPSHOT_SPEC_FILE}\" ] ; then\n    echo \"No valid snapshot file was found.\"\n    exit 1\nfi\n\n# Copy the original Snapshot spec file before overriding\ncp \"${SNAPSHOT_SPEC_FILE}\" \"${SNAPSHOT_SPEC_FILE_ORIG}\"\n\nif [ ! -f \"${DATA_FILE}\" ] ; then\n    echo \"No data JSON file was found.\"\n    printf \"false\" | tee \"/tekton/results/mapped\"\n    exit 0\nfi\n\nMAPPING=$(jq '.mapping' \"${DATA_FILE}\")\n\nif [[ $MAPPING == \"null\" ]] ; then\n    echo \"Data file contains no mapping key.\"\n    printf \"false\" | tee \"/tekton/results/mapped\"\n    exit 0\nfi\n\n# Function to handle incrementer logic\nincrement_tag() {\n    local tag_template=\"$1\"\n    local repo=\"$2\"\n\n    # Use `skopeo list-tags` to fetch all tags from the repository\n    existing_tags=$(skopeo list-tags --retry-times 3 docker://\"${repo}\" | jq -r '.Tags[]')\n\n    # Remove `{{ incrementer }}` placeholder to get the version prefix for regex pattern\n    # shellcheck disable=SC2001\n    version_prefix=$(echo \"${tag_template}\" | sed 's/{{ incrementer }}//g')\n    # Match tags with 1–6 digit increments only. Ignore 7+ digit tags to avoid\n    # treating short commit SHAs as incrementer values\n    tag_pattern=\"^${version_prefix}[0-9]{1,6}$\"\n\n    # Extract the numeric part of existing tags and find the max increment\n    max_increment=$(echo \"${existing_tags}\" | { grep -E \"${tag_pattern}\" || true; } \\\n    | sed -E \"s/${version_prefix}//\" | sort -nr | head -n1)\n\n    # Calculate the next increment (default to 1 if max_increment is empty or unset)\n    # Use 10# to force decimal input preventing leading 0 from being treated as octal\n    increment=$((10#${max_increment:-0} + 1))\n\n    # Substitute `{{ incrementer }}` in the tag template with the calculated increment\n    tag=\"${tag_template//\\{\\{ incrementer \\}\\}/${increment}}\"\n\n    # Validate the final tag format to avoid malformed tags\n    if [[ ! \"${tag}\" =~ ^[a-zA-Z0-9._-]+$ ]]; then\n        echo \"Error: Invalid tag format after substitution: ${tag}\"\n        exit 1\n    fi\n\n    echo \"$tag\"  # Return the final tag\n}\n\n# Function to handle component-incrementer logic: finds the highest increment across\n# ALL repositories in a component and returns the next uniform sequential tag.\n# Results are cached by version_prefix to avoid redundant skopeo calls.\n# Expected arguments are: [tag_template, all_repos_json]\ncomponent_increment_tag() {\n    local tag_template=\"$1\"\n    local all_repos_json=\"${2:-[]}\"\n\n    # Remove {{ component-incrementer }} placeholder to get the version prefix\n    local version_prefix\n    # shellcheck disable=SC2001\n    version_prefix=$(echo \"${tag_template}\" | sed 's/{{ *component-incrementer *}}//g')\n\n    # Return cached result if available for this prefix.\n    # Cache files survive subshell boundaries; associative arrays do not.\n    local cache_key\n    cache_key=$(printf '%s' \"${version_prefix}\" | base64 | tr -d '=\\n' | tr '+/' '-_')\n    local cache_file=\"${_inc_cache_dir}/${cache_key}\"\n    if [[ -f \"${cache_file}\" ]]; then\n        local cached_increment\n        cached_increment=$(\u003c \"${cache_file}\")\n        local tag\n        # shellcheck disable=SC2001\n        tag=$(echo \"${tag_template}\" | sed \"s/{{ *component-incrementer *}}/${cached_increment}/g\")\n        if [[ ! \"${tag}\" =~ ^[a-zA-Z0-9._-]+$ ]]; then\n            echo \"Error: Invalid tag format after substitution: ${tag}\" \u003e\u00262\n            exit 1\n        fi\n        echo \"$tag\"\n        return\n    fi\n\n    # Escape version_prefix for safe use in ERE (grep -E) and sed -E.\n    # Without escaping, a prefix like \"v1.0.0-\" would treat the dots as\n    # regex wildcards, potentially matching unintended tags.\n    local escaped_prefix\n    # shellcheck disable=SC2016\n    escaped_prefix=$(printf '%s' \"${version_prefix}\" | sed 's/[.[\\\\*^$()+?{|]/\\\\\u0026/g')\n\n    # Match tags with 1–6 digit increments only. Ignore 7+ digit tags to avoid\n    # treating short commit SHAs as incrementer values\n    local tag_pattern=\"^${escaped_prefix}[0-9]{1,6}$\"\n\n    # Find the global maximum increment across all repositories in the component\n    local global_max=0\n    local num_repos\n    num_repos=$(jq 'length' \u003c\u003c\u003c \"$all_repos_json\")\n    for ((r = 0; r \u003c num_repos; r++)); do\n        local repo\n        repo=$(jq -r --argjson r \"$r\" '.[$r]' \u003c\u003c\u003c \"$all_repos_json\")\n        local existing_tags\n        existing_tags=$(skopeo list-tags --retry-times 3 docker://\"${repo}\" | jq -r '.Tags[]')\n        local repo_max\n        repo_max=$(echo \"${existing_tags}\" | { grep -E \"${tag_pattern}\" || true; } \\\n            | sed -E \"s/^${escaped_prefix}//\" | sort -nr | head -n1)\n        # Use 10# to force decimal input preventing leading 0 from being treated as octal\n        if [[ -n \"$repo_max\" ]] \u0026\u0026 [[ $((10#${repo_max})) -gt $global_max ]]; then\n            global_max=$((10#${repo_max}))\n        fi\n    done\n\n    local increment=$((global_max + 1))\n\n    # Cache the result so subsequent repos in this component reuse the same value\n    echo \"${increment}\" \u003e \"${cache_file}\"\n\n    local tag\n    # shellcheck disable=SC2001\n    tag=$(echo \"${tag_template}\" | sed \"s/{{ *component-incrementer *}}/${increment}/g\")\n\n    if [[ ! \"${tag}\" =~ ^[a-zA-Z0-9._-]+$ ]]; then\n        echo \"Error: Invalid tag format after substitution: ${tag}\" \u003e\u00262\n        exit 1\n    fi\n\n    echo \"$tag\"\n}\n\n# Expected arguments are: [variable, substitute_map, labels_map]\nsubstitute() {\n    variable=$1\n    substitute_map=$2\n    labels_map=$3\n\n    result=\"\"\n    if [[ \"$variable\" == labels.* ]]; then\n        label=\"${variable#labels.}\"\n        result=\"$(jq -r --arg labelval \"$label\" '.[$labelval] // \"\"' \u003c\u003c\u003c \"${labels_map}\")\"\n    else\n        result=\"$(jq -r --arg variable \"$variable\" '.[$variable] // \"\"' \u003c\u003c\u003c \"${substitute_map}\")\"\n    fi\n    echo \"$result\"\n}\n\n# When addImplicitTimestampTag is true, append the resolved timestamp value to the\n# translated tag list (and deduplicate). Fails if timestamp is empty. Only used by\n# the rh-advisories pipeline.\nensure_implicit_timestamp_value() {\n    local tags_json=\"$1\"\n    local timestamp_val=\"$2\"\n    if [ \"false\" != \"true\" ]; then\n        echo \"$tags_json\"\n        return\n    fi\n    if [ -z \"$timestamp_val\" ]; then\n        echo \"Error: addImplicitTimestampTag is true but timestamp is empty (no build-date or Created).\" \u003e\u00262\n        exit 1\n    fi\n    echo \"$tags_json\" | jq -c --arg ts \"$timestamp_val\" '. + [$ts] | unique'\n}\n\n# Expected arguments are [tags, substitute_map, labels_map, repo, all_repos_json]\n# The tags argument is a json array\ntranslate_tags () {\n    local tags=$1\n    local substitute_map=$2\n    local labels_map=$3\n    local repo=$4\n    local all_repos_json=\"${5:-[]}\"\n    if [ \"$tags\" = '' ] ; then\n        echo ''\n        return\n    fi\n\n    local translated_tags='[]'\n    local NUM_TAGS\n    NUM_TAGS=\"$(jq 'length' \u003c\u003c\u003c \"${tags}\")\"\n    local i tag var_name replacement\n    for ((i = 0; i \u003c NUM_TAGS; i++)); do\n        tag=\"$(jq -r --argjson i \"$i\" '.[$i]' \u003c\u003c\u003c \"${tags}\")\"\n\n        # Repeatedly translate {{}} references until none are left\n        while [[ $tag =~ \\{\\{\\ *([[:alnum:]_\\.-]+)\\ *\\}\\} ]]; do\n          # Extract the variable name (e.g., timestamp), trimming any surrounding spaces\n          var_name=\"${BASH_REMATCH[1]}\"\n\n          # Sanity check of the template variable name\n          if [[ ! \"$var_name\" =~ ^[a-zA-Z0-9._-]+$ ]]; then\n            echo \"Error: Invalid variable name in tag definition: $var_name\" \u003e\u00262\n            exit 1\n          fi\n\n          # Handle incrementer logic\n          if [[ \"$var_name\" == \"incrementer\" ]]; then\n              tag=$(increment_tag \"$tag\" \"$repo\")\n          elif [[ \"$var_name\" == \"component-incrementer\" ]]; then\n              tag=$(component_increment_tag \"$tag\" \"$all_repos_json\")\n          else\n              replacement=$(substitute \"$var_name\" \"$substitute_map\" \"$labels_map\")\n              if [ -z \"$replacement\" ]; then\n                  echo Error: Substitution variable unknown or empty: \"$var_name\" \u003e\u00262\n                  exit 1\n              fi\n              # Shellcheck suggests ${var//find/replace}, but\n              # that won't work here - we need to match arbitrary amount of spaces\n              # shellcheck disable=SC2001\n              tag=\"$(sed \"s/{{ *$var_name *}}/$replacement/\" \u003c\u003c\u003c \"$tag\")\"\n          fi\n        done\n\n        # Sanity check of the resulting tag value\n        if [[ ! \"$tag\" =~ ^[a-zA-Z0-9._-]+$ ]]; then\n          echo \"Error: Invalid tag format: $tag\" \u003e\u00262\n          exit 1\n        fi\n\n        # Avoid duplicate tags - only add a tag if not already present\n        if [ \"$(jq -c --arg tag \"$tag\" 'index($tag)' \u003c\u003c\u003c \"$translated_tags\")\" = null ]\n        then\n          translated_tags=\"$(jq -c --arg tag \"$tag\" '. + [$tag]' \u003c\u003c\u003c \"$translated_tags\")\"\n        fi\n    done\n\n    echo \"$translated_tags\"\n}\n\nconvert_to_quay () { # Convert the registry.redhat.io URL to the quay.io format\n    local repository=$1\n    case \"$repository\" in\n        registry.redhat.io/*)\n            echo \"${repository/registry.redhat.io/quay.io/redhat-prod}\" \\\n                | sed 's|/|----|g; s|quay.io----redhat-prod----|quay.io/redhat-prod/|'\n            ;;\n        registry.stage.redhat.io/*)\n            echo \"${repository/registry.stage.redhat.io/quay.io/redhat-pending}\" \\\n                | sed 's|/|----|g; s|quay.io----redhat-pending----|quay.io/redhat-pending/|'\n            ;;\n        flatpaks.registry.redhat.io/*)\n            echo \"${repository/flatpaks.registry.redhat.io/quay.io/rh-flatpaks-prod}\" \\\n                | sed 's|/|----|g; s|quay.io----rh-flatpaks-prod----|quay.io/rh-flatpaks-prod/|'\n            ;;\n        flatpaks.registry.stage.redhat.io/*)\n            echo \"${repository/flatpaks.registry.stage.redhat.io/quay.io/rh-flatpaks-stage}\" \\\n                | sed 's|/|----|g; s|quay.io----rh-flatpaks-stage----|quay.io/rh-flatpaks-stage/|'\n            ;;\n        *)\n            echo \"$repository\"\n            ;;\n    esac\n}\n\n# This block is temporary to support both quay.io and registry.redhat.io\n# It should be removed once all repositories are migrated to registry.redhat.io\nconvert_to_registry () { # Convert the repository URL to the registry.redhat.io format\n    local repository=$1\n    case \"$repository\" in\n        quay.io/redhat-prod/*)\n            repository=\"${repository//quay.io\\/redhat-prod/registry.redhat.io}\"\n            repository=\"${repository//----//}\"\n            echo \"$repository\"\n            ;;\n        quay.io/redhat-pending/*)\n            repository=\"${repository//quay.io\\/redhat-pending/registry.stage.redhat.io}\"\n            repository=\"${repository//----//}\"\n            echo \"$repository\"\n            ;;\n        quay.io/rh-flatpaks-prod/*)\n            repository=\"${repository//quay.io\\/rh-flatpaks-prod/flatpaks.registry.redhat.io}\"\n            repository=\"${repository//----//}\"\n            echo \"$repository\"\n            ;;\n        quay.io/rh-flatpaks-stage/*)\n            repository=\"${repository//quay.io\\/rh-flatpaks-stage/flatpaks.registry.stage.redhat.io}\"\n            repository=\"${repository//----//}\"\n            echo \"$repository\"\n            ;;\n        registry.redhat.io/* | registry.stage.redhat.io/*)\n            # Return the original Red Hat registry paths\n            echo \"$repository\"\n            ;;\n        *)\n            # Return empty for unhandled formats\n            echo \"\"\n            ;;\n    esac\n}\n\nconvert_to_registry_access () { # Convert the repository URL to the registry.access.redhat.com format\n    local repository=$1\n    case \"$repository\" in\n        registry.redhat.io/*)\n            echo \"${repository/registry.redhat.io/registry.access.redhat.com}\"\n            ;;\n        registry.stage.redhat.io/*)\n            echo \"${repository/registry.stage.redhat.io/registry.access.stage.redhat.com}\"\n            ;;\n        *)\n            echo \"\"\n            ;;\n    esac\n}\n\n# Merge the mapping key contents in the data JSON file with the components key in the snapshot based\n# on component name. Save the output as a compact JSON in the mapped_snapshot.json file in the workspace\n{ echo -n \"$(cat \"${SNAPSHOT_SPEC_FILE_ORIG}\")\"; echo \"${MAPPING}\"; } | jq -c -s '\n  .[0] as $snapshot | .[0].components + .[1].components | group_by(.name) |\n  [.[] | select(length \u003e 1)] | map(reduce .[] as $x ({}; . * $x)) as $mergedComponents |\n  $snapshot | .components = $mergedComponents' \u003e \"${SNAPSHOT_SPEC_FILE}\"\n\nprintf \"true\" | tee \"/tekton/results/mapped\"\n\nif [ \"true\" = \"true\" ] \u0026\u0026 \\\n  [ \"$(jq '.components | length' \u003c \"${SNAPSHOT_SPEC_FILE}\")\" -eq 0 ]; then\n  echo \"ERROR: Resulting snapshot contains 0 components. This means that there were 0 components present in\"\n  echo \"both your Snapshot and your ReleasePlanAdmission mapping. Take a look at your component names and\"\n  echo \"make sure that all components you want to release from the snapshot are present in the\"\n  echo \"ReleasePlanAdmission (by the name field of the component).\"\n  echo \"Components in snapshot: $(jq -c '[.components[].name]' \"${SNAPSHOT_SPEC_FILE_ORIG}\")\"\n  echo \"Components in mapping: $(jq -c '[.components[].name]' \u003c\u003c\u003c \"${MAPPING}\")\"\n  exit 1\nfi\n\n# Expand the tags in the data file\ndefaultTags=$(jq '.defaults.tags // []' \u003c\u003c\u003c \"$MAPPING\")\ndefaultTimestampFormat=$(jq -r '.defaults.timestampFormat // \"%s\"' \u003c\u003c\u003c \"$MAPPING\")\ncurrentTimestamp=\"$(date \"+%Y%m%d %T\")\"\ndefaultCGWSettings=$(jq -c '.defaults.contentGateway // {}' \u003c\u003c\u003c \"$MAPPING\")\nNUM_MAPPED_COMPONENTS=$(jq '.components | length' \"${SNAPSHOT_SPEC_FILE}\")\n\n# File-based cache dir for component-incrementer results. A file-based\n# approach is required because component_increment_tag is invoked inside\n# $(...) subshells (via translate_tags), so bash associative array writes\n# would be lost on subshell exit. Files persist across subshell boundaries.\n_inc_cache_dir=$(mktemp -d)\ntrap 'rm -rf \"${_inc_cache_dir}\"' EXIT\n\nfor ((i = 0; i \u003c NUM_MAPPED_COMPONENTS; i++)) ; do\n    # Clear the cache at the start of each component so that different\n    # components with the same tag template use independent repo sets.\n    rm -f \"${_inc_cache_dir}/\"* 2\u003e/dev/null || true\n    component=$(jq -c --argjson i \"$i\" '.components[$i]' \"${SNAPSHOT_SPEC_FILE}\")\n    componentTags=$(jq '.componentTags // []' \u003c\u003c\u003c \"$component\")\n    defaultComponentTags=$(jq -n --argjson defaults \"$defaultTags\" --argjson componentTags \\\n      \"$componentTags\" '$defaults? + $componentTags? | unique')\n\n    # images are required to use sha reference - check this\n    NAME=$(jq -r '.name' \u003c\u003c\u003c \"$component\")\n    IMAGE_REF=$(jq -r '.containerImage' \u003c\u003c\u003c \"$component\")\n    if ! [[ \"$IMAGE_REF\" =~ ^.+@sha256:[0-9a-f]+$ ]] ; then\n      echo \"Component ${NAME} contains an invalid containerImage value. sha reference is required: ${IMAGE_REF}\"\n      exit 1\n    fi\n\n    git_sha=$(jq -r '.source.git.revision' \u003c\u003c\u003c \"$component\") # this sets the value to \"null\" if it doesn't exist\n    build_sha=${IMAGE_REF##*:}\n    passedTimestampFormat=$(jq -r --arg default \"$defaultTimestampFormat\" \\\n      '.timestampFormat // $default' \u003c\u003c\u003c \"$component\")\n    release_timestamp=\"$(date -d \"$currentTimestamp\" \"+$passedTimestampFormat\")\"\n    arch_json=\"$(get-image-architectures \"${IMAGE_REF}\")\"\n    # The build-date label and Created values are not the same per architecture, but we don't support separate\n    # tags per arch. So, we just use the first digest listed.\n    arch=\"$(jq -rs 'map(.platform.architecture) | .[0]' \u003c\u003c\u003c \"$arch_json\")\"\n    os=\"$(jq -rs 'map(.platform.os) | .[0]' \u003c\u003c\u003c \"$arch_json\")\"\n\n    # Get first digest from architecture info to construct image reference\n    first_digest=\"$(jq -rs '.[0].digest' \u003c\u003c\u003c \"$arch_json\")\"\n\n    # Construct image reference with the first architecture's digest for annotations\n    image_with_digest=\"${IMAGE_REF%@*}@${first_digest}\"\n\n    # Get raw manifest to extract annotations (works for all image types)\n    raw_manifest=\"$(skopeo inspect --retry-times 3 --no-tags --raw docker://\"${image_with_digest}\" | jq -c)\"\n    annotations=\"$(jq -c '.annotations // {}' \u003c\u003c\u003c \"$raw_manifest\")\"\n\n    # Get config.mediaType from raw manifest to determine if this is a standard container image\n    config_media_type=\"$(jq -r '.config.mediaType // \"\"' \u003c\u003c\u003c \"$raw_manifest\")\"\n\n    # Get image metadata for labels, env, build_date\n    # Only standard container images support skopeo inspect without --raw\n    # Standard config types are:\n    #   - application/vnd.oci.image.config.v1+json (OCI images)\n    #   - application/vnd.docker.container.image.v1+json (Docker images)\n    # All other artifacts (Helm charts, ML models, empty configs, etc.) don't have\n    # labels/env and would fail with skopeo inspect\n    if [[ \"$config_media_type\" == \"application/vnd.oci.image.config.v1+json\" ]] || \\\n       [[ \"$config_media_type\" == \"application/vnd.docker.container.image.v1+json\" ]]; then\n        # Standard container images - use standard skopeo inspect\n        image_metadata=\"$(skopeo inspect --retry-times 3 --no-tags \\\n          --override-os \"${os}\" --override-arch \"${arch}\" docker://\"${IMAGE_REF}\" | jq -c)\"\n        # For timestamp, use Labels.build-date and fallback to Created\n        build_date=\"$(jq -r '.Labels.\"build-date\" // .Created // \"\"' \u003c\u003c\u003c \"$image_metadata\")\"\n        env_variables=\"$(jq -c '.Env // []' \u003c\u003c\u003c \"${image_metadata}\")\"\n        labels=\"$(jq -c '.Labels // {}' \u003c\u003c\u003c \"${image_metadata}\")\"\n    else\n        # Non-standard artifacts (Helm charts, ML models, etc.) don't support\n        # standard skopeo inspect - get build_date from annotations if available\n        build_date=\"$(jq -r '.[\"org.opencontainers.image.created\"] // \"\"' \u003c\u003c\u003c \"$annotations\")\"\n        env_variables=\"[]\"\n        labels=\"{}\"\n    fi\n\n    # Get oci_version_raw from annotations, fallback to labels\n    oci_version_raw=\"$(jq -r '.[\"org.opencontainers.image.version\"] // \"\"' \u003c\u003c\u003c \"$annotations\")\"\n    if [ -z \"$oci_version_raw\" ]; then\n      oci_version_raw=\"$(jq -r '.[\"org.opencontainers.image.version\"] // \"\"' \u003c\u003c\u003c \"$labels\")\"\n    fi\n\n    # Add image env_variables metadata to component\n    if [ \"$(jq 'length' \u003c\u003c\u003c \"$env_variables\")\" -ne 0 ] ; then\n      env_file=$(mktemp)\n      echo \"$env_variables\" \u003e \"$env_file\"\n      jq --argjson i \"$i\" --slurpfile env \"$env_file\" \\\n        '.components[$i].metadata = (.components[$i].metadata // {}) * {env_variables: $env[0]}' \\\n        \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n    fi\n\n    # Add image annotations metadata to component\n    if [ \"$(jq 'length' \u003c\u003c\u003c \"$annotations\")\" -ne 0 ] ; then\n      annotations_file=$(mktemp)\n      # Convert annotations from {key: value} to [{name: key, value: value}]\n      jq -c 'if . then to_entries | map({name: .key, value: .value}) else [] end' \\\n       \u003c\u003c\u003c \"$annotations\" \u003e \"$annotations_file\"\n      jq --argjson i \"$i\" --slurpfile annotations \"$annotations_file\" \\\n        '.components[$i].metadata = (.components[$i].metadata // {}) * {annotations: $annotations[0]}' \\\n        \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n    fi\n\n    # Add image labels metadata to component\n    if [ \"$(jq 'length' \u003c\u003c\u003c \"$labels\")\" -ne 0 ] ; then\n      labels_file=$(mktemp)\n      # Convert labels from {key: value} to [{name: key, value: value}]\n      jq -c 'if . then to_entries | map({name: .key, value: .value}) else [] end' \\\n       \u003c\u003c\u003c \"$labels\" \u003e \"$labels_file\"\n      jq --argjson i \"$i\" --slurpfile labels \"$labels_file\" \\\n        '.components[$i].metadata = (.components[$i].metadata // {}) * {labels: $labels[0]}' \\\n        \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n    fi\n\n    # Add media type to component\n    if [ -n \"$config_media_type\" ]; then\n      jq --argjson i \"$i\" --arg media_type \"$config_media_type\" \\\n        '.components[$i].metadata = (.components[$i].metadata // {}) * {media_type: $media_type}' \\\n        \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n    fi\n\n    # Transform version to OCI tag format: replace + with _ (convention for OCI compliance)\n    # Set default value if empty (common for regular container images without OCI annotations)\n    oci_version=\"${oci_version_raw//+/_}\"\n    oci_version=\"${oci_version:-unknown}\"\n\n    if [ \"${build_date}\" = \"\" ] ; then\n      timestamp=\"\"\n    else\n      timestamp=\"$(date -d \"${build_date}\" \"+$passedTimestampFormat\")\"\n    fi\n\n    substitute_map=\"$(jq -n -c \\\n      --arg timestamp \"${timestamp}\" \\\n      --arg release_timestamp \"${release_timestamp}\" \\\n      --arg git_sha \"${git_sha}\" \\\n      --arg git_short_sha \"${git_sha:0:7}\" \\\n      --arg digest_sha \"${build_sha}\" \\\n      --arg oci_version \"${oci_version}\" \\\n      '$ARGS.named')\"\n\n    # Also substitute filename values in the staged section of components\n    STAGED_FILES=$(jq '.staged.files | length' \u003c\u003c\u003c \"$component\")\n    for ((j = 0; j \u003c STAGED_FILES; j++)) ; do\n        file=$(jq -c --argjson j \"$j\" '.staged.files[$j]' \u003c\u003c\u003c \"$component\")\n        filenameArrayPreSubstitution=$(jq '.filename' \u003c\u003c\u003c \"$file\" | jq -cs)\n        # {{ incrementer }} is not supported in staged.files values, so we just pass\n        # \"\" as the repo argument\n        subbedFilename=$(translate_tags \"${filenameArrayPreSubstitution}\" \\\n          \"${substitute_map}\" \"${labels}\" \"\"| jq -r '.[0]')\n        jq --argjson i \"$i\" --argjson j \"$j\" --arg filename \"$subbedFilename\" \\\n          '.components[$i].staged.files[$j].filename = $filename' \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \\\n          \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n    done\n\n    # apply defaults for contentGateway\n    componentCGWSettings=$(jq -c '.contentGateway // {}' \u003c\u003c\u003c \"$component\")\n    updatedComponentCGWSettings=$(merge-json \"$defaultCGWSettings\" \"$componentCGWSettings\")\n    componentCGWSettingsSize=$(jq '. | length' \u003c\u003c\u003c \"${updatedComponentCGWSettings}\")\n\n    if [ \"${componentCGWSettingsSize}\" -gt \"0\" ]; then\n      jq --argjson i \"$i\" --argjson componentCGWSettings \"$updatedComponentCGWSettings\" \\\n      '.components[$i].contentGateway = $componentCGWSettings' \\\n      \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n    fi\n\n    # Build a JSON array of all repository URLs for this component.\n    # This is used by {{ component-incrementer }} to query all repos and compute a\n    # uniform increment value across registries.\n    component_repos_json='[]'\n    _ci_num_repos=$(jq '.repositories | length' \u003c\u003c\u003c \"$component\")\n    for ((_ci_j = 0; _ci_j \u003c _ci_num_repos; _ci_j++)) ; do\n        _ci_repo_url=$(jq -r --argjson j \"$_ci_j\" '.repositories[$j].url' \u003c\u003c\u003c \"$component\")\n        component_repos_json=$(jq -c --arg url \"$_ci_repo_url\" '. + [$url]' \\\n            \u003c\u003c\u003c \"$component_repos_json\")\n    done\n\n    NUM_REPOSITORIES=$(jq '.repositories | length' \u003c\u003c\u003c \"$component\")\n    for ((j = 0; j \u003c NUM_REPOSITORIES; j++)) ; do\n        repository=$(jq -c --argjson j \"$j\" '.repositories[$j]' \u003c\u003c\u003c \"$component\")\n        repoTags=$(jq '.tags // []' \u003c\u003c\u003c \"$repository\")\n        url=$(jq -r '.url' \u003c\u003c\u003c \"$repository\")\n        echo \"Processing component: $NAME, repository: $url\"\n\n        allTagsPreSubstitution=$(jq -n --argjson defaults \"$defaultComponentTags\" --argjson repoTags \\\n          \"$repoTags\" '$defaults? + $repoTags? | unique')\n        tags=$(translate_tags \"${allTagsPreSubstitution}\" \"${substitute_map}\" \"${labels}\" \"${url}\" \\\n            \"${component_repos_json}\")\n        tags=$(ensure_implicit_timestamp_value \"${tags}\" \"${timestamp}\")\n        if [ \"$(jq 'length' \u003c\u003c\u003c \"$tags\")\" -gt 0 ] ; then\n          jq --argjson i \"$i\" --argjson j \"$j\" --argjson updatedTags \"$tags\" \\\n            '.components[$i].repositories[$j].tags = $updatedTags' \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \\\n            \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n        fi\n\n        # This block is temporary to support both quay.io and registry.redhat.io\n        # It should be removed once all repositories are migrated to registry.redhat.io\n        if [[ \"$url\" == quay.io/redhat-prod/* ||\n          \"$url\" == quay.io/redhat-pending/* ||\n          \"$url\" == quay.io/rh-flatpaks-prod/* ||\n          \"$url\" == quay.io/rh-flatpaks-stage/* ]]; then\n            url=$(convert_to_registry \"$url\")\n        fi\n\n        # Convert to registry and quay format\n        if [[ \"$url\" == registry.redhat.io/* ||\n          \"$url\" == registry.stage.redhat.io/* ||\n          \"$url\" == flatpaks.registry.redhat.io/* ||\n          \"$url\" == flatpaks.registry.stage.redhat.io/* ]]; then\n          rh_registry_repo=$url\n          registry_access_repo=$(convert_to_registry_access \"$url\")\n          url=$(convert_to_quay \"$url\")\n\n          jq --argjson i \"$i\" \\\n            --argjson j \"$j\" \\\n            --arg url \"$url\" \\\n            --arg rh_registry_repo \"$rh_registry_repo\" \\\n            --arg registry_access_repo \"$registry_access_repo\" \\\n            '.components[$i].repositories[$j].url = $url |\n                .components[$i].repositories[$j][\"rh-registry-repo\"] = $rh_registry_repo |\n                .components[$i].repositories[$j][\"registry-access-repo\"] = $registry_access_repo' \\\n          \"${SNAPSHOT_SPEC_FILE}\" \u003e /tmp/temp \u0026\u0026 mv /tmp/temp \"${SNAPSHOT_SPEC_FILE}\"\n        fi\n    done\ndone\n"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/bae959b0-fdd7-43a3-b7ef-db7c444e3ae3",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:26:42Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "check-data-keys",
                    "tekton.dev/task": "check-data-keys"
                },
                "name": "managed-d6ffr-check-data-keys",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "13638",
                "uid": "bae959b0-fdd7-43a3-b7ef-db7c444e3ae3"
            },
            "spec": {
                "params": [
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "systems",
                        "value": "[\n  {\"systemName\": \"mapping\", \"dynamic\": false}\n]\n"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/check-data-keys/check-data-keys.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:28:44Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:28:44Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-check-data-keys-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/check-data-keys/check-data-keys.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:f32fc67d7bc91fd2af16aaf87c930f166aade9e6ee46a8f5e914324dc11c558b"
                    }
                ],
                "startTime": "2026-10-09T14:26:42Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://699402952a9abf1f3b5118d8ac328900667f6acba8cf5e94cbf804d44ba35363",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:28:42Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:28:42Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-check-data-keys",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:282c23415a9995ab3fd6eb79dd314e84aed9b51e96ac3caaa34562c08eb7cc51",
                        "name": "check-data-keys",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://450c0fa581519dbe5c9cbb0bc03ab965542571fd49de300de59e88a621f41fa6",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:28:43Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:28:42Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://484d3109c8892dcf81fcf7ce5a0d146d60bedd183ace621f6a249c0de782ad5c",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:28:43Z",
                            "message": "[{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:f32fc67d7bc91fd2af16aaf87c930f166aade9e6ee46a8f5e914324dc11c558b\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:28:43Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task that validates data keys against a schema to ensure that all required keys for a system(s) are present\nand correctly formatted. The system(s) passed into the `systems` parameter become required.\nThe schema validation also applies to all data passed into the `dataPath` parameter,\nmeaning all the data keys must be allowed and formatted correctly.\n\nFor example, if `releaseNotes` is passed as a system and the data file does not have all the required\nreleaseNotes keys, the schema will give validation errors, and the task will fail.\n\nThe validation schema is bundled in the release-service-utils image at\n`/home/schemas/dataKeys.json`.",
                    "params": [
                        {
                            "description": "Path to the JSON string of the merged data to use",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "The systems to check that all data keys are present for",
                            "name": "systems",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Produced trusted data artifact",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "command": [
                                "/home/scripts/python/tasks/managed/check_data_keys.py"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "10m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "PARAM_DATA_DIR",
                                    "value": "/var/workdir/release"
                                },
                                {
                                    "name": "PARAM_DATA_PATH",
                                    "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                                },
                                {
                                    "name": "PARAM_SYSTEMS",
                                    "value": "[\n  {\"systemName\": \"mapping\", \"dynamic\": false}\n]\n"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:282c23415a9995ab3fd6eb79dd314e84aed9b51e96ac3caaa34562c08eb7cc51",
                            "name": "check-data-keys"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/579cb5ae-f0c1-48e4-86ff-51b4c5b028d8",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:24:46Z",
                "finalizers": [
                    "results.tekton.dev/taskrun",
                    "chains.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "collect-data",
                    "tekton.dev/task": "collect-data"
                },
                "name": "managed-d6ffr-collect-data",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "12657",
                "uid": "579cb5ae-f0c1-48e4-86ff-51b4c5b028d8"
            },
            "spec": {
                "params": [
                    {
                        "name": "release",
                        "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7"
                    },
                    {
                        "name": "releasePlan",
                        "value": "ex-registry-sh-e46349e3/source-releaseplan"
                    },
                    {
                        "name": "releasePlanAdmission",
                        "value": "ex-registry-sh-managed-e46349e3/demo"
                    },
                    {
                        "name": "releaseServiceConfig",
                        "value": "release-service/release-service-config"
                    },
                    {
                        "name": "snapshot",
                        "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3"
                    },
                    {
                        "name": "subdirectory",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/collect-data/collect-data.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:26:41Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:26:41Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-collect-data-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/collect-data/collect-data.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "data",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "release",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release.json"
                    },
                    {
                        "name": "releasePipelineMetadata",
                        "type": "string",
                        "value": "{\"org\":\"mmalina\",\"repo\":\"release-service-catalog\",\"revision\":\"2c55cdf8d0947fe7e06576b8752b879a021bf9fe\",\"pathinrepo\":\"pipelines/managed/push-to-external-registry/push-to-external-registry.yaml\",\"sha\":\"2c55cdf8d0947fe7e06576b8752b879a021bf9fe\"}"
                    },
                    {
                        "name": "releasePlan",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_plan.json"
                    },
                    {
                        "name": "releasePlanAdmission",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_plan_admission.json"
                    },
                    {
                        "name": "releaseServiceConfig",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_service_config.json"
                    },
                    {
                        "name": "resultsDir",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results"
                    },
                    {
                        "name": "singleComponentMode",
                        "type": "string",
                        "value": "false"
                    },
                    {
                        "name": "snapshotBuildId",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "snapshotName",
                        "type": "string",
                        "value": "snapshot-sample-e46349e3"
                    },
                    {
                        "name": "snapshotNamespace",
                        "type": "string",
                        "value": "ex-registry-sh-e46349e3"
                    },
                    {
                        "name": "snapshotSpec",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "subdirectory",
                        "type": "string",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c"
                    }
                ],
                "startTime": "2026-10-09T14:24:46Z",
                "steps": [
                    {
                        "container": "step-collect-data",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:54930d292debe44eaff159aea77b00cfe90c2efb2657a4a2a3a266f04ae2456e",
                        "name": "collect-data",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://92ee7cf51ccb7cf624524ce3ee70be37fc74d75b953f1983d74c0f3fe5fc5942",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:26:39Z",
                            "message": "[{\"key\":\"data\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json\",\"type\":1},{\"key\":\"release\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release.json\",\"type\":1},{\"key\":\"releasePipelineMetadata\",\"value\":\"{\\\"org\\\":\\\"mmalina\\\",\\\"repo\\\":\\\"release-service-catalog\\\",\\\"revision\\\":\\\"2c55cdf8d0947fe7e06576b8752b879a021bf9fe\\\",\\\"pathinrepo\\\":\\\"pipelines/managed/push-to-external-registry/push-to-external-registry.yaml\\\",\\\"sha\\\":\\\"2c55cdf8d0947fe7e06576b8752b879a021bf9fe\\\"}\",\"type\":1},{\"key\":\"releasePlan\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_plan.json\",\"type\":1},{\"key\":\"releasePlanAdmission\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_plan_admission.json\",\"type\":1},{\"key\":\"releaseServiceConfig\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_service_config.json\",\"type\":1},{\"key\":\"resultsDir\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results\",\"type\":1},{\"key\":\"singleComponentMode\",\"value\":\"false\",\"type\":1},{\"key\":\"snapshotBuildId\",\"value\":\"\",\"type\":1},{\"key\":\"snapshotName\",\"value\":\"snapshot-sample-e46349e3\",\"type\":1},{\"key\":\"snapshotNamespace\",\"value\":\"ex-registry-sh-e46349e3\",\"type\":1},{\"key\":\"snapshotSpec\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json\",\"type\":1},{\"key\":\"subdirectory\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:26:38Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://26357eea4027875e76a898a75a03d4be8532f9a394b7358c19324e005ae5b590",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:26:40Z",
                            "message": "[{\"key\":\"data\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json\",\"type\":1},{\"key\":\"release\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release.json\",\"type\":1},{\"key\":\"releasePipelineMetadata\",\"value\":\"{\\\"org\\\":\\\"mmalina\\\",\\\"repo\\\":\\\"release-service-catalog\\\",\\\"revision\\\":\\\"2c55cdf8d0947fe7e06576b8752b879a021bf9fe\\\",\\\"pathinrepo\\\":\\\"pipelines/managed/push-to-external-registry/push-to-external-registry.yaml\\\",\\\"sha\\\":\\\"2c55cdf8d0947fe7e06576b8752b879a021bf9fe\\\"}\",\"type\":1},{\"key\":\"releasePlan\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_plan.json\",\"type\":1},{\"key\":\"releasePlanAdmission\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_plan_admission.json\",\"type\":1},{\"key\":\"releaseServiceConfig\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/release_service_config.json\",\"type\":1},{\"key\":\"resultsDir\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results\",\"type\":1},{\"key\":\"singleComponentMode\",\"value\":\"false\",\"type\":1},{\"key\":\"snapshotBuildId\",\"value\":\"\",\"type\":1},{\"key\":\"snapshotName\",\"value\":\"snapshot-sample-e46349e3\",\"type\":1},{\"key\":\"snapshotNamespace\",\"value\":\"ex-registry-sh-e46349e3\",\"type\":1},{\"key\":\"snapshotSpec\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json\",\"type\":1},{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c\",\"type\":1},{\"key\":\"subdirectory\",\"value\":\"b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:26:40Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task to collect the information added to the data field of the release resources.\n\nThe purpose of this task is to collect all the data and supply it to the other task in the pipeline by creating\na json file called `data.json` in the workspace.\n\nThis task also stores the passed resources as json files in a workspace.\n\nThe parameters to this task are lowercase instead of camelCase because they are passed from the operator, and the\noperator passes them as lowercase.\n\nA task result is returned for each resource with the relative path to the stored JSON for it in the workspace.\n\nFinally, the task checks that the keys from the correct resource (a key that should come from the\nReleasePlanAdmission should not be present in the Release data section).",
                    "params": [
                        {
                            "description": "The namespaced name of the Release",
                            "name": "release",
                            "type": "string"
                        },
                        {
                            "description": "The namespaced name of the ReleasePlan",
                            "name": "releasePlan",
                            "type": "string"
                        },
                        {
                            "description": "The namespaced name of the ReleasePlanAdmission",
                            "name": "releasePlanAdmission",
                            "type": "string"
                        },
                        {
                            "description": "The namespaced name of the ReleaseServiceConfig",
                            "name": "releaseServiceConfig",
                            "type": "string"
                        },
                        {
                            "description": "The namespaced name of the Snapshot",
                            "name": "snapshot",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Subdirectory inside the workspace to be used",
                            "name": "subdirectory",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "The relative path in the workspace to the stored release json",
                            "name": "release",
                            "type": "string"
                        },
                        {
                            "description": "The relative path in the workspace to the stored releasePlan json",
                            "name": "releasePlan",
                            "type": "string"
                        },
                        {
                            "description": "The relative path in the workspace to the stored releasePlanAdmission json",
                            "name": "releasePlanAdmission",
                            "type": "string"
                        },
                        {
                            "description": "The relative path in the workspace to the stored releaseServiceConfig json",
                            "name": "releaseServiceConfig",
                            "type": "string"
                        },
                        {
                            "description": "The relative path in the workspace to the stored snapshotSpec json",
                            "name": "snapshotSpec",
                            "type": "string"
                        },
                        {
                            "description": "The relative path in the workspace to the stored data json",
                            "name": "data",
                            "type": "string"
                        },
                        {
                            "description": "The relative path in the workspace to the results directory",
                            "name": "resultsDir",
                            "type": "string"
                        },
                        {
                            "description": "single component mode",
                            "name": "singleComponentMode",
                            "type": "string"
                        },
                        {
                            "description": "name of Snapshot resource",
                            "name": "snapshotName",
                            "type": "string"
                        },
                        {
                            "description": "namespace where Snapshot is located",
                            "name": "snapshotNamespace",
                            "type": "string"
                        },
                        {
                            "description": "Build Id where Snapshot originated",
                            "name": "snapshotBuildId",
                            "type": "string"
                        },
                        {
                            "description": "json object containing git resolver metadata about the running release pipeline",
                            "name": "releasePipelineMetadata",
                            "type": "string"
                        },
                        {
                            "description": "Produced trusted data artifact",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "description": "Subdirectory inside the workspace to be used",
                            "name": "subdirectory",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "command": [
                                "python3",
                                "-m",
                                "collect_data"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "100m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "RELEASE",
                                    "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7"
                                },
                                {
                                    "name": "RELEASE_PLAN",
                                    "value": "ex-registry-sh-e46349e3/source-releaseplan"
                                },
                                {
                                    "name": "RELEASE_PLAN_ADMISSION",
                                    "value": "ex-registry-sh-managed-e46349e3/demo"
                                },
                                {
                                    "name": "RELEASE_SERVICE_CONFIG",
                                    "value": "release-service/release-service-config"
                                },
                                {
                                    "name": "SNAPSHOT",
                                    "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3"
                                },
                                {
                                    "name": "PARAM_SUBDIRECTORY",
                                    "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                                },
                                {
                                    "name": "PARAM_DATA_DIR",
                                    "value": "/var/workdir/release"
                                },
                                {
                                    "name": "RESULT_RELEASE",
                                    "value": "/tekton/results/release"
                                },
                                {
                                    "name": "RESULT_RELEASE_PLAN",
                                    "value": "/tekton/results/releasePlan"
                                },
                                {
                                    "name": "RESULT_RELEASE_PLAN_ADMISSION",
                                    "value": "/tekton/results/releasePlanAdmission"
                                },
                                {
                                    "name": "RESULT_RELEASE_SERVICE_CONFIG",
                                    "value": "/tekton/results/releaseServiceConfig"
                                },
                                {
                                    "name": "RESULT_SNAPSHOT_SPEC",
                                    "value": "/tekton/results/snapshotSpec"
                                },
                                {
                                    "name": "RESULT_DATA",
                                    "value": "/tekton/results/data"
                                },
                                {
                                    "name": "RESULT_RESULTS_DIR",
                                    "value": "/tekton/results/resultsDir"
                                },
                                {
                                    "name": "RESULT_SINGLE_COMPONENT_MODE",
                                    "value": "/tekton/results/singleComponentMode"
                                },
                                {
                                    "name": "RESULT_SNAPSHOT_NAME",
                                    "value": "/tekton/results/snapshotName"
                                },
                                {
                                    "name": "RESULT_SNAPSHOT_NAMESPACE",
                                    "value": "/tekton/results/snapshotNamespace"
                                },
                                {
                                    "name": "RESULT_SNAPSHOT_BUILD_ID",
                                    "value": "/tekton/results/snapshotBuildId"
                                },
                                {
                                    "name": "RESULT_RELEASE_PIPELINE_METADATA",
                                    "value": "/tekton/results/releasePipelineMetadata"
                                },
                                {
                                    "name": "RESULT_SUBDIRECTORY",
                                    "value": "/tekton/results/subdirectory"
                                },
                                {
                                    "name": "CA_CERT_PATH",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:54930d292debe44eaff159aea77b00cfe90c2efb2657a4a2a3a266f04ae2456e",
                            "name": "collect-data"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/d66224c0-d7fc-4fe5-9733-a608e87e7c94",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:26:42Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "collect-registry-token-secret",
                    "tekton.dev/task": "collect-registry-token-secret"
                },
                "name": "managed-d6ffr-collect-registry-token-secret",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "14084",
                "uid": "d66224c0-d7fc-4fe5-9733-a608e87e7c94"
            },
            "spec": {
                "params": [
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/collect-registry-token-secret/collect-registry-token-secret.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:29:54Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:29:54Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-collect-registry-token-secret-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/collect-registry-token-secret/collect-registry-token-secret.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "registrySecret",
                        "type": "string",
                        "value": "quay-api-token"
                    }
                ],
                "startTime": "2026-10-09T14:26:43Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://7813a8171ab8ec95fd6abe761bc96767476e1ddb6cee937f8dd95899acf056f8",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:29:53Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:29:53Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-collect-secret",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:534529b2450a67cce9779fa19f1b0808ebd8718baf349f8c79db6cf99ad522dc",
                        "name": "collect-secret",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://0577d54044f9cf05df08fe856cd44ccfe3acf7c54579d10dce9413412a938ff7",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:29:54Z",
                            "message": "[{\"key\":\"registrySecret\",\"value\":\"quay-api-token\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:29:54Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task that collects secret name containing registry token from the data file",
                    "params": [
                        {
                            "description": "Path to the merged data JSON file generated by collect-data task",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "The kube secret to use quay.io API, containing one key: token",
                            "name": "registrySecret",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "command": [
                                "python3",
                                "/home/scripts/python/tasks/managed/collect_registry_token_secret.py"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "50m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "PARAM_DATA_DIR",
                                    "value": "/var/workdir/release"
                                },
                                {
                                    "name": "PARAM_DATA_PATH",
                                    "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                                },
                                {
                                    "name": "RESULT_REGISTRY_SECRET",
                                    "value": "/tekton/results/registrySecret"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:534529b2450a67cce9779fa19f1b0808ebd8718baf349f8c79db6cf99ad522dc",
                            "name": "collect-secret"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/9f76d70f-cc4c-48ff-9ae7-15be045a2d35",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:26:42Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "collect-signing-params",
                    "tekton.dev/task": "collect-signing-params"
                },
                "name": "managed-d6ffr-collect-signing-params",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "13252",
                "uid": "9f76d70f-cc4c-48ff-9ae7-15be045a2d35"
            },
            "spec": {
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/collect-signing-params/collect-signing-params.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:27:46Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:27:46Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-collect-signing-params-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/collect-signing-params/collect-signing-params.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "buildIdentityRegexp",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "defaultOIDCIssuer",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "enableKeylessSigning",
                        "type": "string",
                        "value": "false"
                    },
                    {
                        "name": "fulcioExternalUrl",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "fulcioUrl",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "rekorExternalUrl",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "rekorUrl",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "tektonChainsIdentity",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "tufExternalUrl",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "tufUrl",
                        "type": "string",
                        "value": ""
                    }
                ],
                "startTime": "2026-10-09T14:26:42Z",
                "steps": [
                    {
                        "container": "step-collect-signing-params",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:d84bb7da0988c3cbce65ed714beddda4694b9e3201af56a135ac5843a05abe1e",
                        "name": "collect-signing-params",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://05b0d03e2250ba8781b03bab54a0f218e8b44c1476dc7b8904649060358b03dc",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:27:45Z",
                            "message": "[{\"key\":\"buildIdentityRegexp\",\"value\":\"\",\"type\":1},{\"key\":\"defaultOIDCIssuer\",\"value\":\"\",\"type\":1},{\"key\":\"enableKeylessSigning\",\"value\":\"false\",\"type\":1},{\"key\":\"fulcioExternalUrl\",\"value\":\"\",\"type\":1},{\"key\":\"fulcioUrl\",\"value\":\"\",\"type\":1},{\"key\":\"rekorExternalUrl\",\"value\":\"\",\"type\":1},{\"key\":\"rekorUrl\",\"value\":\"\",\"type\":1},{\"key\":\"tektonChainsIdentity\",\"value\":\"\",\"type\":1},{\"key\":\"tufExternalUrl\",\"value\":\"\",\"type\":1},{\"key\":\"tufUrl\",\"value\":\"\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:27:43Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task to collect Konflux configuration parameters related to\nkeyless signing using cosign. The task attempts to read the \"cluster-config\"\nConfigMap in the \"konflux-info\" namespace to extract signing parameters.\n\nIn case the ConfigMap is not found, the task will output empty strings for all parameters,\nallowing the pipeline to continue without signing parameters.",
                    "params": [
                        {
                            "default": "cluster-config",
                            "description": "The name of the ConfigMap to read signing parameters from",
                            "name": "configMapName",
                            "type": "string"
                        },
                        {
                            "default": "konflux-info",
                            "description": "The namespace where the ConfigMap is located",
                            "name": "configMapNamespace",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "A flag indicating whether keyless signing should be enabled, based on the presence of signing parameters.\n",
                            "name": "enableKeylessSigning",
                            "type": "string"
                        },
                        {
                            "description": "A default OIDC issuer URL to be used for signing.\n",
                            "name": "defaultOIDCIssuer",
                            "type": "string"
                        },
                        {
                            "description": "The external URL of the Rekor transparency log.\n",
                            "name": "rekorExternalUrl",
                            "type": "string"
                        },
                        {
                            "description": "The internal URL of the Rekor transparency log.\n",
                            "name": "rekorUrl",
                            "type": "string"
                        },
                        {
                            "description": "The external URL of the Fulcio certificate authority.\n",
                            "name": "fulcioExternalUrl",
                            "type": "string"
                        },
                        {
                            "description": "The URL of the Fulcio certificate authority.\n",
                            "name": "fulcioUrl",
                            "type": "string"
                        },
                        {
                            "description": "The external URL of the TUF repository.\n",
                            "name": "tufExternalUrl",
                            "type": "string"
                        },
                        {
                            "description": "The URL of the TUF repository.\n",
                            "name": "tufUrl",
                            "type": "string"
                        },
                        {
                            "description": "A regular expression to extract build identity from the OIDC token claims, if applicable.\n",
                            "name": "buildIdentityRegexp",
                            "type": "string"
                        },
                        {
                            "description": "The identity used in the certificate, generated by fulcio.\n",
                            "name": "tektonChainsIdentity",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "--config-map-name",
                                "cluster-config",
                                "--config-map-namespace",
                                "konflux-info"
                            ],
                            "command": [
                                "python3",
                                "-m",
                                "release_service_utils.tasks.managed.collect_signing_params"
                            ],
                            "computeResources": {
                                "limits": {
                                    "cpu": "100m",
                                    "memory": "256Mi"
                                },
                                "requests": {
                                    "cpu": "100m",
                                    "memory": "256Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "RESULT_ENABLE_KEYLESS_SIGNING",
                                    "value": "/tekton/results/enableKeylessSigning"
                                },
                                {
                                    "name": "RESULT_DEFAULT_OIDC_ISSUER",
                                    "value": "/tekton/results/defaultOIDCIssuer"
                                },
                                {
                                    "name": "RESULT_REKOR_EXTERNAL_URL",
                                    "value": "/tekton/results/rekorExternalUrl"
                                },
                                {
                                    "name": "RESULT_REKOR_URL",
                                    "value": "/tekton/results/rekorUrl"
                                },
                                {
                                    "name": "RESULT_FULCIO_EXTERNAL_URL",
                                    "value": "/tekton/results/fulcioExternalUrl"
                                },
                                {
                                    "name": "RESULT_FULCIO_URL",
                                    "value": "/tekton/results/fulcioUrl"
                                },
                                {
                                    "name": "RESULT_TUF_EXTERNAL_URL",
                                    "value": "/tekton/results/tufExternalUrl"
                                },
                                {
                                    "name": "RESULT_TUF_URL",
                                    "value": "/tekton/results/tufUrl"
                                },
                                {
                                    "name": "RESULT_BUILD_IDENTITY_REGEXP",
                                    "value": "/tekton/results/buildIdentityRegexp"
                                },
                                {
                                    "name": "RESULT_TEKTON_CHAINS_IDENTITY",
                                    "value": "/tekton/results/tektonChainsIdentity"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:d84bb7da0988c3cbce65ed714beddda4694b9e3201af56a135ac5843a05abe1e",
                            "name": "collect-signing-params"
                        }
                    ],
                    "volumes": [
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/f5d209a0-d55a-4ed5-99d1-0b1f1e16ef4f",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:26:42Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "collect-task-params",
                    "tekton.dev/task": "collect-task-params"
                },
                "name": "managed-d6ffr-collect-task-params",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "12931",
                "uid": "f5d209a0-d55a-4ed5-99d1-0b1f1e16ef4f"
            },
            "spec": {
                "params": [
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "keysToExtract",
                        "value": "[\n  {\"resultIndex\": 0, \"key\": \".conforma.workerCount\", \"default\": \"4\"},\n  {\"resultIndex\": 1, \"key\": \".sign.cosignSecretName\", \"default\": \"secret-not-present\"}\n]\n"
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/collect-task-params/collect-task-params.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:26:48Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:26:48Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-collect-task-params-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/collect-task-params/collect-task-params.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "extractedValues",
                        "type": "array",
                        "value": [
                            "4",
                            "secret-not-present"
                        ]
                    }
                ],
                "startTime": "2026-10-09T14:26:42Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://a83cf5c4f99564c2b98fe4634da6dff4030d0ccaeeb2d3729225e5b554eaf1e3",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:26:48Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:26:48Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-collect-task-params",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                        "name": "collect-task-params",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://ce16477caec9f786e5920bd0e9cb53a4754a72ebd95394c3e699aaa8a5a86ec0",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:26:48Z",
                            "message": "[{\"key\":\"extractedValues\",\"value\":\"[\\n  \\\"4\\\",\\n  \\\"secret-not-present\\\"\\n]\\n\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:26:48Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task that extracts values from the data JSON file based on specified keys and exposes them as task results.\nThe task takes an array of resultIndex/key pairs and extracts the corresponding values from the dataPath JSON file.\nEach extracted value is placed at the specified resultIndex in the extractedValues array for use by downstream\ntasks. Optional default values can be provided for keys that may not exist in the data file. If no default is\nprovided and the key does not exist, the task will fail.",
                    "params": [
                        {
                            "description": "Path to the JSON string of the merged data containing the values to extract",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "description": "JSON array of objects with \"resultIndex\", \"key\", and optional \"default\" fields. Each object specifies the array\nindex where the extracted value should be placed, the JSON path key to extract from the data file, and an\noptional default value to use if the key is not found. Example: [{\"resultIndex\": 1,\n\"key\": \".releaseNotes.summary\"}, {\"resultIndex\": 0, \"key\": \".foo\", \"default\": \"fallback_value\"}]\n",
                            "name": "keysToExtract",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Array of extracted values. Each value is placed at the resultIndex specified in the keysToExtract parameter.\nValues can be accessed by their specified index in downstream tasks.\n",
                            "name": "extractedValues",
                            "type": "array"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "50m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "KEYS_JSON",
                                    "value": "[\n  {\"resultIndex\": 0, \"key\": \".conforma.workerCount\", \"default\": \"4\"},\n  {\"resultIndex\": 1, \"key\": \".sign.cosignSecretName\", \"default\": \"secret-not-present\"}\n]\n"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                            "name": "collect-task-params",
                            "script": "#!/usr/bin/env bash\nset -x\n\nDATA_FILE=\"/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json\"\nif [ ! -f \"${DATA_FILE}\" ] ; then\n    echo \"No valid data file was provided.\"\n    exit 1\nfi\n\n# Validate KEYS_JSON format\nif ! jq -e 'type == \"array\"' \u003c\u003c\u003c \"$KEYS_JSON\" \u003e /dev/null; then\n    echo \"keysToExtract must be a valid JSON array\"\n    echo \"Received value: $KEYS_JSON\"\n    exit 1\nfi\n\n# Get the number of keys to extract\nKEY_COUNT=$(jq 'length' \u003c\u003c\u003c \"$KEYS_JSON\")\nif [ \"$KEY_COUNT\" -eq 0 ]; then\n    echo \"keysToExtract array is empty\"\n    exit 1\nfi\n\n# Initialize result array with empty strings since it may not be populated in order based on\n# keysToExtract resultIndex input\nRESULT_ARRAY=\"[]\"\nfor i in $(seq 0 $((KEY_COUNT - 1))); do\n    RESULT_ARRAY=$(jq '. += [\"\"]' \u003c\u003c\u003c \"$RESULT_ARRAY\")\ndone\n\nfor i in $(seq 0 $((KEY_COUNT - 1))); do\n    RESULT_INDEX=$(jq -r \".[$i].resultIndex\" \u003c\u003c\u003c \"$KEYS_JSON\")\n    KEY=$(jq -r \".[$i].key\" \u003c\u003c\u003c \"$KEYS_JSON\")\n    DEFAULT_VALUE=$(jq -r \".[$i].default // null\" \u003c\u003c\u003c \"$KEYS_JSON\")\n\n    if [ \"$RESULT_INDEX\" = \"null\" ] || [ \"$KEY\" = \"null\" ]; then\n        echo \"Invalid key extraction specification at index $i: missing resultIndex or key\"\n        exit 1\n    fi\n\n    # Check if resultIndex is a valid integer\n    if ! [[ \"$RESULT_INDEX\" =~ ^[0-9]+$ ]]; then\n        echo \"Error: resultIndex at position $i must be a non-negative integer, got: $RESULT_INDEX\"\n        exit 1\n    fi\n\n    # Check if resultIndex is within valid bounds\n    if [ \"$RESULT_INDEX\" -ge \"$KEY_COUNT\" ]; then\n        echo \"Error: resultIndex $RESULT_INDEX at position $i is out of bounds.\"\n        echo \"Valid range is 0 to $((KEY_COUNT - 1))\"\n        exit 1\n    fi\n\n    # Extract the value from the data file using the specified key\n    TRANSFORMED_KEY=$(echo \"$KEY\" | sed -E 's/\\.([^\\.\"\\[]+|\"[^\"]+\")/.\"\\1\"/g')\n    VALUE=$(jq -r \"$TRANSFORMED_KEY\" \"$DATA_FILE\" 2\u003e/dev/null)\n\n    # Check if the key exists in the data file\n    if [ \"$VALUE\" = \"null\" ]; then\n        if [ \"$DEFAULT_VALUE\" != \"null\" ]; then\n            echo \"Key $KEY not found in data file, using default value: $DEFAULT_VALUE\"\n            VALUE=\"$DEFAULT_VALUE\"\n        else\n            echo \"Error: Key $KEY not found in data file, and no default value for it was passed\"\n            exit 1\n        fi\n    fi\n\n    # Update the array at the specified resultIndex\n    RESULT_ARRAY=$(jq --argjson idx \"$RESULT_INDEX\" --arg value \"$VALUE\" '.[$idx] = $value' \u003c\u003c\u003c \"$RESULT_ARRAY\")\ndone\n\n# Write the array result\njq \u003c\u003c\u003c \"$RESULT_ARRAY\" | tee \"/tekton/results/extractedValues\"\n"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/154757d1-912d-48f8-8217-a00691e7777a",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:32:18Z",
                "finalizers": [
                    "results.tekton.dev/taskrun",
                    "chains.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "collect-tpa-params",
                    "tekton.dev/task": "collect-tpa-params"
                },
                "name": "managed-d6ffr-collect-tpa-params",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "15832",
                "uid": "154757d1-912d-48f8-8217-a00691e7777a"
            },
            "spec": {
                "params": [
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    },
                    {
                        "name": "failOnMissing",
                        "value": "false"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/collect-tpa-params/collect-tpa-params.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:33:53Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:33:53Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-collect-tpa-params-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/collect-tpa-params/collect-tpa-params.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "atlasApiUrl",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "retryAWSSecretName",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "retryS3Bucket",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "secretName",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "ssoTokenUrl",
                        "type": "string",
                        "value": ""
                    }
                ],
                "startTime": "2026-10-09T14:32:18Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://6e8074a04c50d3e413aef4621ae343e44096852eddfe79fc05145c156b5d5e50",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:33:53Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:33:52Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-collect-tpa-params",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:2ae61d5886887b230860934bfc7719453e44bc8882fab5ad84a483a720c5763d",
                        "name": "collect-tpa-params",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://a70ea24c1834f6a01272b10176678f2948709efec2079a5f57914319c5d8338a",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:33:53Z",
                            "message": "[{\"key\":\"atlasApiUrl\",\"value\":\"\",\"type\":1},{\"key\":\"retryAWSSecretName\",\"value\":\"\",\"type\":1},{\"key\":\"retryS3Bucket\",\"value\":\"\",\"type\":1},{\"key\":\"secretName\",\"value\":\"\",\"type\":1},{\"key\":\"ssoTokenUrl\",\"value\":\"\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:33:53Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task that collects the TPA server option from the data file.\nIt can either parse the cluster configuration stored in konflux-info\nnamespace or parse a dataPath JSON file for values.\n\nIf the desired configmap is present in konflux-info, it will be used\nas a preferred option.\n\nOtherwise it outputs values based on the value of the \"atlas.server\" or\n\"tpa.servers\" field (\"stage\" or \"production\"), the output values are used\nto push SBOMs to TPA. Also outputs results used to push SBOMs to an S3\nbucket.\n\nIf the configmap in konflux-info cannot be parsed and no TPA fields\nare present in the data file, the task fails. If this is undesired,\nthe task can be configured to return empty results instead by setting\nthe parameter 'failOnMissing' to 'false'.",
                    "params": [
                        {
                            "default": "",
                            "description": "Path to the JSON string of the merged data containing the TPA config\n",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "konflux-info",
                            "description": "The namespace where the ConfigMap is located",
                            "name": "configMapNamespace",
                            "type": "string"
                        },
                        {
                            "default": "cluster-config",
                            "description": "The name of the ConfigMap to read TPA parameters from",
                            "name": "configMapName",
                            "type": "string"
                        },
                        {
                            "default": "true",
                            "description": "Specify if this task should fail on missing parameters",
                            "name": "failOnMissing",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "URL of the TPA API.\n",
                            "name": "atlasApiUrl",
                            "type": "string"
                        },
                        {
                            "description": "URL of the SSO token issuer.\n",
                            "name": "ssoTokenUrl",
                            "type": "string"
                        },
                        {
                            "description": "The kubernetes secret to use to authenticate to TPA.\n",
                            "name": "secretName",
                            "type": "string"
                        },
                        {
                            "description": "The kubernetes secret to use to authenticate to the S3 retry mechanism bucket.\n",
                            "name": "retryAWSSecretName",
                            "type": "string"
                        },
                        {
                            "description": "Name of the S3 retry mechanism bucket.\n",
                            "name": "retryS3Bucket",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "args": [
                                "--data-dir",
                                "/var/workdir/release",
                                "--data-path",
                                "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json",
                                "--configmap-name",
                                "cluster-config",
                                "--configmap-namespace",
                                "konflux-info",
                                "--fail-on-missing",
                                "false"
                            ],
                            "command": [
                                "python3",
                                "-m",
                                "collect_tpa_params"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "192Mi"
                                },
                                "requests": {
                                    "cpu": "50m",
                                    "memory": "192Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "RESULT_ATLAS_API_URL",
                                    "value": "/tekton/results/atlasApiUrl"
                                },
                                {
                                    "name": "RESULT_SSO_TOKEN_URL",
                                    "value": "/tekton/results/ssoTokenUrl"
                                },
                                {
                                    "name": "RESULT_SECRET_NAME",
                                    "value": "/tekton/results/secretName"
                                },
                                {
                                    "name": "RESULT_RETRY_AWS_SECRET_NAME",
                                    "value": "/tekton/results/retryAWSSecretName"
                                },
                                {
                                    "name": "RESULT_RETRY_S3_BUCKET",
                                    "value": "/tekton/results/retryS3Bucket"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:2ae61d5886887b230860934bfc7719453e44bc8882fab5ad84a483a720c5763d",
                            "name": "collect-tpa-params"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/c05d318b-06d6-47f2-8c78-abad80f8b237",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:31:10Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "filter-already-released-images"
                },
                "name": "managed-d6ffr-filter-already-released-images",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "15114",
                "uid": "c05d318b-06d6-47f2-8c78-abad80f8b237"
            },
            "spec": {
                "params": [
                    {
                        "name": "snapshotPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:5175d233ce0af720dcb7110af3aed2aebc5b3ae6f7573c0f05eb8eb294b3e541"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/filter-already-released-images/filter-already-released-images.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:32:18Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:32:18Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-filter-already-released-images-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/filter-already-released-images/filter-already-released-images.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "skip_release",
                        "type": "string",
                        "value": "false"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:7fa8425ee6089465f15388974e71810ff8cbc1982dbd66f665a67995ba0776b0"
                    }
                ],
                "startTime": "2026-10-09T14:31:10Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://15b11b9c974c5dc77be5e69c1e466d35d86245f37ed14c54154d58668a6cb75c",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:32:16Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:32:16Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-filter-already-released-images",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:83fefd72e54d3b87017a12dbe483db52ad1c692e1aec9ab042c1382a0c41e550",
                        "name": "filter-already-released-images",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://cf9193ad11bcead425477ead9eac89d49a3cdc7369fa62c586619fdb50e9df73",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:32:17Z",
                            "message": "[{\"key\":\"skip_release\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:32:16Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://1e35c7bfd4ea76b97ce0c5f4e204a6d8b67efb0b0b92fa88060bcfe604a763e3",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:32:17Z",
                            "message": "[{\"key\":\"skip_release\",\"value\":\"false\",\"type\":1},{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:7fa8425ee6089465f15388974e71810ff8cbc1982dbd66f665a67995ba0776b0\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:32:17Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task to filter out images from a snapshot that have already been released.\nThis task checks target registries to determine if push-snapshot has completed successfully\nfor each component by validating that ALL required tags exist with the correct digest.\nComponents that are fully released (all tags present) are filtered out before conforma validation.\n\nTag-level validation ensures complete releases and prevents filtering components with\npartial tag pushes. A component is only filtered if ALL repositories have ALL\nrequired tags pointing to the correct digest.\n\nThe task overwrites the original snapshot file in place with a filtered version\ncontaining only unpublished or partially published images.\n\nThis task must run AFTER apply-mapping since it needs the mapped target repositories\nand their required tags from the enriched snapshot stored in trusted artifacts",
                    "params": [
                        {
                            "description": "Path to the JSON string of the Snapshot spec in the data workspace",
                            "name": "snapshotPath",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository.\nAn empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "default": "https://github.com/konflux-ci/release-service-catalog.git",
                            "description": "The url to the git repo where the release-service-catalog tasks to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Whether to skip release tasks (true if all components are already released)",
                            "name": "skip_release",
                            "type": "string"
                        },
                        {
                            "description": "The location of the source data artifact in the OCI repository",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:5175d233ce0af720dcb7110af3aed2aebc5b3ae6f7573c0f05eb8eb294b3e541=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "args": [
                                "--snapshot-path",
                                "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                            ],
                            "command": [
                                "/home/scripts/python/tasks/managed/filter_already_released_images.py"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "1536Mi"
                                },
                                "requests": {
                                    "cpu": "300m",
                                    "memory": "1536Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "RESULT_SKIP_RELEASE",
                                    "value": "/tekton/results/skip_release"
                                },
                                {
                                    "name": "CA_CERT_PATH",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:83fefd72e54d3b87017a12dbe483db52ad1c692e1aec9ab042c1382a0c41e550",
                            "name": "filter-already-released-images"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/6ebb597b-7814-431f-90f0-6ed312118260",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:36:54Z",
                "finalizers": [
                    "results.tekton.dev/taskrun",
                    "chains.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "make-repo-public"
                },
                "name": "managed-d6ffr-make-repo-public",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "18623",
                "uid": "6ebb597b-7814-431f-90f0-6ed312118260"
            },
            "spec": {
                "params": [
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "snapshotPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "registrySecret",
                        "value": "quay-api-token"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:d58cdd77361135be677724e64350548103d4b2342bd7e1dab2629f2f32a0b6ea"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "retries": 5,
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/make-repo-public/make-repo-public.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:40:39Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:40:39Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-make-repo-public-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/make-repo-public/make-repo-public.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:062831bf9c9d6400c3753620d41815f5b2d9e7fb64a9d47cf94bd12d3468b2cc"
                    }
                ],
                "startTime": "2026-10-09T14:36:54Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://e2bd4a0b985cefb8a74c0b660954f716a93cd4c28acb6730bf0c9cc0f9b31328",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:40:37Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:40:37Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-make-repo-public",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:67bb57a671d7e1b8d51ee07cefcca4ac46db02b8c3a9ee8fad60fb9365aab324",
                        "name": "make-repo-public",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://c1cfc29f4dc47a9ef75f99b580c0fd3733f482514612de6c371bf67ad73eb197",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:40:38Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:40:37Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://29052bc8b49fabfafac1efe440181deadb0f01b9fc4c25c0079dde4efba65936",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:40:39Z",
                            "message": "[{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:062831bf9c9d6400c3753620d41815f5b2d9e7fb64a9d47cf94bd12d3468b2cc\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:40:39Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task that makes repositories public using the Quay API",
                    "params": [
                        {
                            "description": "Path to the merged data JSON file generated by collect-data task",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "description": "Path to the JSON string of the Snapshot spec in the data workspace",
                            "name": "snapshotPath",
                            "type": "string"
                        },
                        {
                            "description": "The kube secret to use the Quay API, containing one key: token",
                            "name": "registrySecret",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Produced trusted data artifact",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:d58cdd77361135be677724e64350548103d4b2342bd7e1dab2629f2f32a0b6ea=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "command": [
                                "/home/scripts/python/tasks/managed/make_repo_public.py"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "256Mi"
                                },
                                "requests": {
                                    "cpu": "150m",
                                    "memory": "256Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "DATA_FILE",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                                },
                                {
                                    "name": "SNAPSHOT_FILE",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                                },
                                {
                                    "name": "REGISTRY_SECRET_PATH",
                                    "value": "/etc/secrets"
                                },
                                {
                                    "name": "CA_CERT_PATH",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                },
                                {
                                    "name": "REGISTRY_SECRET_NAME",
                                    "value": "quay-api-token"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:67bb57a671d7e1b8d51ee07cefcca4ac46db02b8c3a9ee8fad60fb9365aab324",
                            "name": "make-repo-public",
                            "volumeMounts": [
                                {
                                    "mountPath": "/etc/secrets",
                                    "name": "registry-secret-vol"
                                }
                            ]
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "name": "registry-secret-vol",
                            "secret": {
                                "defaultMode": 292,
                                "secretName": "quay-api-token"
                            }
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/0fc48d80-84d1-47ea-9079-fc2ebe3084f4",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:34:51Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "push-snapshot",
                    "tekton.dev/task": "push-snapshot"
                },
                "name": "managed-d6ffr-push-snapshot",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "17214",
                "uid": "0fc48d80-84d1-47ea-9079-fc2ebe3084f4"
            },
            "spec": {
                "params": [
                    {
                        "name": "snapshotPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "dataPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                    },
                    {
                        "name": "resultsDirPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:7fa8425ee6089465f15388974e71810ff8cbc1982dbd66f665a67995ba0776b0"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "retries": 5,
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/push-snapshot/push-snapshot.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:36:54Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:36:54Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-push-snapshot-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/push-snapshot/push-snapshot.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:d58cdd77361135be677724e64350548103d4b2342bd7e1dab2629f2f32a0b6ea"
                    }
                ],
                "startTime": "2026-10-09T14:34:51Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://bf481e1593ec9fdc346c8ab609aadc48e8ac2d26540c763ddbebc05776018e62",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:36:49Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:36:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-push-snapshot",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:ae341e14b6f4977a2e30df5be1385b4174d195681e796d4769da7ce50f3e25ec",
                        "name": "push-snapshot",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://50e445c0d9fdf81d03d4e83ff597f37e5e5b6792eccd62ee93a9388750fcd391",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:36:53Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:36:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://9c46a38cb8515b33caea203db552e5eed08108b6a49ce9c8aff613c33695f1d4",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:36:53Z",
                            "message": "[{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:d58cdd77361135be677724e64350548103d4b2342bd7e1dab2629f2f32a0b6ea\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:36:53Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task to push snapshot images to an image registry using `cosign copy`.",
                    "params": [
                        {
                            "description": "Path to the JSON string of the mapped Snapshot spec in the data workspace",
                            "name": "snapshotPath",
                            "type": "string"
                        },
                        {
                            "description": "Path to the JSON string of the merged data to use in the data workspace",
                            "name": "dataPath",
                            "type": "string"
                        },
                        {
                            "description": "Path to the results directory in the data workspace",
                            "name": "resultsDirPath",
                            "type": "string"
                        },
                        {
                            "default": "20",
                            "description": "The maximum number of images to be proccessed concurrently",
                            "name": "concurrentLimit",
                            "type": "string"
                        },
                        {
                            "default": "3",
                            "description": "Retry copy N times",
                            "name": "retries",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Enable copying of attached artifacts",
                            "name": "copyBundleMigrations",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Produced trusted data artifact",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:7fa8425ee6089465f15388974e71810ff8cbc1982dbd66f665a67995ba0776b0=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "command": [
                                "python3",
                                "-m",
                                "push_snapshot"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "1280Mi"
                                },
                                "requests": {
                                    "cpu": "2",
                                    "memory": "1280Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "SNAPSHOT_FILE",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                                },
                                {
                                    "name": "DATA_FILE",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/data.json"
                                },
                                {
                                    "name": "RESULTS_DIR",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results"
                                },
                                {
                                    "name": "CONCURRENT_LIMIT",
                                    "value": "20"
                                },
                                {
                                    "name": "RETRIES",
                                    "value": "3"
                                },
                                {
                                    "name": "COPY_BUNDLE_MIGRATIONS",
                                    "value": "false"
                                },
                                {
                                    "name": "CA_CERT_PATH",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:ae341e14b6f4977a2e30df5be1385b4174d195681e796d4769da7ce50f3e25ec",
                            "name": "push-snapshot"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        },
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/9c3bdd4c-0561-41e4-becf-deb6f9ade59f",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:26:42Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "reduce-snapshot",
                    "tekton.dev/task": "reduce-snapshot"
                },
                "name": "managed-d6ffr-reduce-snapshot",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "14443",
                "uid": "9c3bdd4c-0561-41e4-becf-deb6f9ade59f"
            },
            "spec": {
                "params": [
                    {
                        "name": "SNAPSHOT",
                        "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "SINGLE_COMPONENT",
                        "value": "false"
                    },
                    {
                        "name": "SINGLE_COMPONENT_CUSTOM_RESOURCE",
                        "value": "snapshot/snapshot-sample-e46349e3"
                    },
                    {
                        "name": "SINGLE_COMPONENT_CUSTOM_RESOURCE_NS",
                        "value": "ex-registry-sh-e46349e3"
                    },
                    {
                        "name": "SNAPSHOT_PATH",
                        "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "sourceDataArtifact",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c"
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/reduce-snapshot/reduce-snapshot.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:30:51Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:30:51Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-reduce-snapshot-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/reduce-snapshot/reduce-snapshot.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "results": [
                    {
                        "name": "sourceDataArtifact",
                        "type": "string",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:12c94c34558c098e7e812d5e9a57793ed5ec208d3dcb1c8467b4142e9f65f26e"
                    }
                ],
                "startTime": "2026-10-09T14:26:42Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://47d922ead6d390a3e8bd5c85b55cc682aca4a10dc7cee173caf211805a540800",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:30:51Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:30:51Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-reduce-snapshot",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:2ae61d5886887b230860934bfc7719453e44bc8882fab5ad84a483a720c5763d",
                        "name": "reduce-snapshot",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://c456caec94dff3284612acf37367966e284dc4b19c9ce5e6c6386e121152ab8c",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:30:51Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:30:51Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://029e63393c83ab094931004d1ee5d9030dc68098c97e19a9dea03a6c9a705018",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:30:51Z",
                            "message": "[{\"key\":\"sourceDataArtifact\",\"value\":\"oci:quay-service.quay/test-org/trusted-artifacts@sha256:12c94c34558c098e7e812d5e9a57793ed5ec208d3dcb1c8467b4142e9f65f26e\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:30:51Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "Tekton task to reduce a snapshot to a single component based on the component that the snapshot was built for.",
                    "params": [
                        {
                            "description": "String representation of Snapshot spec",
                            "name": "SNAPSHOT",
                            "type": "string"
                        },
                        {
                            "description": "Single mode component enabled",
                            "name": "SINGLE_COMPONENT",
                            "type": "string"
                        },
                        {
                            "description": "Custom Resource to query for built component in Snapshot",
                            "name": "SINGLE_COMPONENT_CUSTOM_RESOURCE",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Namespace where Custom Resource is found",
                            "name": "SINGLE_COMPONENT_CUSTOM_RESOURCE_NS",
                            "type": "string"
                        },
                        {
                            "description": "The location to place the reduced Snapshot",
                            "name": "SNAPSHOT_PATH",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Location of trusted artifacts to be used to populate data directory",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Produced trusted data artifact",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:4b4c6027cbdad3642bdf3e07894497ee8293f90e42da6e9efa392387a3669e4c=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "64Mi"
                                },
                                "requests": {
                                    "cpu": "30m",
                                    "memory": "64Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "command": [
                                "python3",
                                "-m",
                                "reduce_snapshot"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "256Mi"
                                },
                                "requests": {
                                    "cpu": "50m",
                                    "memory": "256Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "SINGLE_COMPONENT",
                                    "value": "false"
                                },
                                {
                                    "name": "CUSTOM_RESOURCE",
                                    "value": "snapshot/snapshot-sample-e46349e3"
                                },
                                {
                                    "name": "CUSTOM_RESOURCE_NAMESPACE",
                                    "value": "ex-registry-sh-e46349e3"
                                },
                                {
                                    "name": "SNAPSHOT",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                                },
                                {
                                    "name": "SNAPSHOT_PATH",
                                    "value": "/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                                }
                            ],
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:2ae61d5886887b230860934bfc7719453e44bc8882fab5ad84a483a720c5763d",
                            "name": "reduce-snapshot"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "quay-service.quay/test-org/trusted-artifacts",
                                "/tekton/results/sourceDataArtifact=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/02ac0744-3f36-4d27-b971-987d1b248db9",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:36:54Z",
                "finalizers": [
                    "chains.tekton.dev/taskrun",
                    "results.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "update-cr-status",
                    "tekton.dev/task": "update-cr-status"
                },
                "name": "managed-d6ffr-update-cr-status",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "18311",
                "uid": "02ac0744-3f36-4d27-b971-987d1b248db9"
            },
            "spec": {
                "params": [
                    {
                        "name": "resource",
                        "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7"
                    },
                    {
                        "name": "resultsDirPath",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results"
                    },
                    {
                        "name": "ociStorage",
                        "value": "quay-service.quay/test-org/trusted-artifacts"
                    },
                    {
                        "name": "resultArtifacts",
                        "value": [
                            "oci:quay-service.quay/test-org/trusted-artifacts@sha256:d58cdd77361135be677724e64350548103d4b2342bd7e1dab2629f2f32a0b6ea=/var/workdir/release"
                        ]
                    },
                    {
                        "name": "dataDir",
                        "value": "/var/workdir/release"
                    },
                    {
                        "name": "trustedArtifactsDebug",
                        "value": ""
                    },
                    {
                        "name": "taskGitUrl",
                        "value": "https://github.com/mmalina/release-service-catalog"
                    },
                    {
                        "name": "taskGitRevision",
                        "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/update-cr-status/update-cr-status.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:39:48Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:39:48Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-update-cr-status-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/update-cr-status/update-cr-status.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "startTime": "2026-10-09T14:36:54Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact-array",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact-array",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://ccbf8abac14b01860719d1379ba593f013b50ebcd19dce061e7fcac230314346",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:39:47Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:39:47Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-update-cr-status",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                        "name": "update-cr-status",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://01e19d9473fdacf448c4845480e404d7c357565ec97d11d85b321489ef2cd5a3",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:39:47Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:39:47Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "A tekton task that updates the passed CR status with the contents stored in the files in the resultsDir.",
                    "params": [
                        {
                            "default": "release",
                            "description": "The type of resource that is being patched",
                            "name": "resourceType",
                            "type": "string"
                        },
                        {
                            "default": "artifacts",
                            "description": "The top level key to overwrite in the resource status",
                            "name": "statusKey",
                            "type": "string"
                        },
                        {
                            "description": "The namespaced name of the resource to be patched",
                            "name": "resource",
                            "type": "string"
                        },
                        {
                            "description": "Path to the directory containing the result files in the data workspace which will be added to the\nresource's status\n",
                            "name": "resultsDirPath",
                            "type": "string"
                        },
                        {
                            "default": "empty",
                            "description": "The OCI repository where the Trusted Artifacts are stored",
                            "name": "ociStorage",
                            "type": "string"
                        },
                        {
                            "default": "1d",
                            "description": "Expiration date for the trusted artifacts created in the OCI repository. An empty string means the artifacts do not expire",
                            "name": "ociArtifactExpiresAfter",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable",
                            "name": "trustedArtifactsDebug",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "orasOptions",
                            "type": "string"
                        },
                        {
                            "default": [],
                            "description": "Array of artifacts to use to obtain results",
                            "name": "resultArtifacts",
                            "type": "array"
                        },
                        {
                            "default": "/var/workdir/release",
                            "description": "The location where data will be stored",
                            "name": "dataDir",
                            "type": "string"
                        },
                        {
                            "description": "The url to the git repo where the release-service-catalog tasks and stepactions to be used are stored",
                            "name": "taskGitUrl",
                            "type": "string"
                        },
                        {
                            "description": "The revision in the taskGitUrl repo to be used",
                            "name": "taskGitRevision",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        },
                        {
                            "default": "/mnt/trusted-ca/ca-bundle.crt",
                            "description": "Path to CA certificate bundle for TLS verification with self-signed certificates",
                            "name": "caCertPath",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "IMAGE_EXPIRES_AFTER",
                                "value": "1d"
                            },
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:d58cdd77361135be677724e64350548103d4b2342bd7e1dab2629f2f32a0b6ea=/var/workdir/release"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "20m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact-array"
                        },
                        {
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "50m",
                                    "memory": "128Mi"
                                }
                            },
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                            "name": "update-cr-status",
                            "script": "#!/usr/bin/env bash\nset -ex\n\nRESULTS_DIR=\"/var/workdir/release/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/results\"\nTEMP_FILE=\"/tmp/temp.json\"\nRESULTS_JSON=\"/tmp/results.json\"\necho '{}' \u003e \"$RESULTS_JSON\"\n\nfor resultsFile in $([ -d \"$RESULTS_DIR\" ] \u0026\u0026 find \"$RESULTS_DIR\" -type f); do\n    if ! jq . \u003e/dev/null 2\u003e\u00261 \"${resultsFile}\" ; then\n        echo \"Passed results JSON file ${resultsFile} in results directory was not proper JSON.\"\n        exit 1\n    fi\n\n    # Merge with array concatenation for array fields and object merging\n    jq --slurpfile new \"${resultsFile}\" '\n      # Store current values as $base and get all unique keys from both objects\n      . as $base | ($base | keys + ($new[0] | keys)) | unique |\n      # Process each key and build the merged result\n      reduce .[] as $key ({}; . + {($key): (\n        # Case 1: Both values are arrays - concatenate them\n        if ($new[0][$key] | type == \"array\") and ($base[$key] | type == \"array\")\n        then $base[$key] + $new[0][$key]\n        else\n          # Case 2: Both values are objects - merge them recursively\n          if ($new[0][$key] | type == \"object\") and ($base[$key] | type == \"object\")\n          then $base[$key] * $new[0][$key]\n          # Case 3: Default - use new value or fall back to base value\n          else $new[0][$key] // $base[$key]\n          end\n        end\n      )})\n    ' \"$RESULTS_JSON\" \u003e \"$TEMP_FILE\"\n    mv \"$TEMP_FILE\" \"$RESULTS_JSON\"\ndone\n\n# Read the final JSON from the file\nFINAL_JSON=$(cat \"$RESULTS_JSON\")\n\nIFS='/' read -r namespace name \u003c\u003c\u003c \"ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7\"\n\n# Create patch file to avoid \"Argument list too long\" error\nPATCH_FILE=\"/tmp/patch-$(date +%s).json\"\necho \"status: {'artifacts':${FINAL_JSON}}\" \u003e \"$PATCH_FILE\"\n\nkubectl --warnings-as-errors=true patch \"release\" -n \"$namespace\" \"$name\" \\\n  --type=merge --subresource status --patch-file \"$PATCH_FILE\"\n\n# Clean up\nrm -f \"$PATCH_FILE\"\n"
                        }
                    ],
                    "volumes": [
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        },
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/06eb305f-6272-4d63-9904-5b89c2c264ec",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:23:22Z",
                "finalizers": [
                    "results.tekton.dev/taskrun",
                    "chains.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "verify-access-to-resources",
                    "tekton.dev/task": "verify-access-to-resources"
                },
                "name": "managed-d6ffr-verify-access-to-resources",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "11785",
                "uid": "06eb305f-6272-4d63-9904-5b89c2c264ec"
            },
            "spec": {
                "params": [
                    {
                        "name": "release",
                        "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7"
                    },
                    {
                        "name": "releasePlan",
                        "value": "ex-registry-sh-e46349e3/source-releaseplan"
                    },
                    {
                        "name": "releasePlanAdmission",
                        "value": "ex-registry-sh-managed-e46349e3/demo"
                    },
                    {
                        "name": "releaseServiceConfig",
                        "value": "release-service/release-service-config"
                    },
                    {
                        "name": "snapshot",
                        "value": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3"
                    },
                    {
                        "name": "requireInternalServices",
                        "value": "false"
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/mmalina/release-service-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/managed/verify-access-to-resources/verify-access-to-resources.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "3h50m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:24:46Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:24:46Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-verify-access-to-resources-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "2c55cdf8d0947fe7e06576b8752b879a021bf9fe"
                        },
                        "entryPoint": "tasks/managed/verify-access-to-resources/verify-access-to-resources.yaml",
                        "uri": "git+https://github.com/mmalina/release-service-catalog"
                    }
                },
                "startTime": "2026-10-09T14:23:23Z",
                "steps": [
                    {
                        "container": "step-verify-access-to-resources",
                        "imageID": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                        "name": "verify-access-to-resources",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://e0a40f61ce6641cd39aa5f06ad16d662a0f52315af7ca225c8d4692b65d2b8f1",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:24:46Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:24:45Z"
                        },
                        "terminationReason": "Completed"
                    }
                ],
                "taskSpec": {
                    "description": "This Tekton task is used to verify access to various resources in the pipelines. It ensures that the necessary\nresources, such as the release, release plan, release plan admission, release service config and snapshot,\nare available and accessible. Additionally, it checks if internal requests can be created if\n`requireInternalServices` is set to `true`.",
                    "params": [
                        {
                            "description": "Namespace/name of the Release",
                            "name": "release",
                            "type": "string"
                        },
                        {
                            "description": "Namespace/name of the ReleasePlan",
                            "name": "releasePlan",
                            "type": "string"
                        },
                        {
                            "description": "Namespace/name of the ReleasePlanAdmission",
                            "name": "releasePlanAdmission",
                            "type": "string"
                        },
                        {
                            "description": "Namespace/name of the ReleaseServiceConfig",
                            "name": "releaseServiceConfig",
                            "type": "string"
                        },
                        {
                            "description": "Namespace/name of the Snapshot",
                            "name": "snapshot",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Whether internal services are required",
                            "name": "requireInternalServices",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from",
                            "name": "caTrustConfigMapName",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data",
                            "name": "caTrustConfigMapKey",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "computeResources": {
                                "limits": {
                                    "memory": "100Mi"
                                },
                                "requests": {
                                    "cpu": "10m",
                                    "memory": "100Mi"
                                }
                            },
                            "image": "quay.io/konflux-ci/release-service-utils@sha256:5546fa78d3c88d7b6a2e8cff8902f7757f00541d0bbaf113b9f293133894afa3",
                            "name": "verify-access-to-resources",
                            "script": "#!/usr/bin/env bash\n\nORIGIN_NAMESPACE=\"$(cut -f1 -d/ \u003c\u003c\u003c \"ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7\")\"\nTARGET_NAMESPACE=\"$(cut -f1 -d/ \u003c\u003c\u003c \"ex-registry-sh-managed-e46349e3/demo\")\"\nRSC_NAMESPACE=\"$(cut -f1 -d/ \u003c\u003c\u003c \"release-service/release-service-config\")\"\n\nRELEASE_NAME=\"$(cut -f2 -d/ \u003c\u003c\u003c \"ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7\")\"\nRELEASEPLAN_NAME=\"$(cut -f2 -d/ \u003c\u003c\u003c \"ex-registry-sh-e46349e3/source-releaseplan\")\"\nRELEASEPLANADMISSION_NAME=\"$(cut -f2 -d/ \u003c\u003c\u003c \"ex-registry-sh-managed-e46349e3/demo\")\"\nRELEASESERVICECONFIG_NAME=\"$(cut -f2 -d/ \u003c\u003c\u003c \"release-service/release-service-config\")\"\nSNAPSHOT_NAME=\"$(cut -f2 -d/ \u003c\u003c\u003c \"ex-registry-sh-e46349e3/snapshot-sample-e46349e3\")\"\n\nCAN_I_READ_RELEASES=\"$(kubectl auth can-i get release/\"${RELEASE_NAME}\" -n \"${ORIGIN_NAMESPACE}\")\"\nCAN_I_READ_RELEASEPLANS=\"$(kubectl auth can-i get releaseplan/\"${RELEASEPLAN_NAME}\"\\\n    -n \"${ORIGIN_NAMESPACE}\")\"\nCAN_I_READ_RELEASEPLANADMISSIONS=\"$(kubectl auth can-i get\\\n    releaseplanadmission/\"${RELEASEPLANADMISSION_NAME}\" -n \"${TARGET_NAMESPACE}\")\"\nCAN_I_READ_RELEASESERVICECONFIG=\"$(kubectl auth can-i get\\\n    releaseserviceconfig/\"${RELEASESERVICECONFIG_NAME}\" -n \"${RSC_NAMESPACE}\")\"\nCAN_I_READ_SNAPSHOTS=\"$(kubectl auth can-i get snapshot/\"${SNAPSHOT_NAME}\" -n \"${ORIGIN_NAMESPACE}\")\"\n\nif [ \"false\" = \"true\" ]; then\n  CAN_I_CREATE_INTERNALREQUESTS=\"$(kubectl auth can-i create internalrequest -n \"${TARGET_NAMESPACE}\")\"\nelse\n  CAN_I_CREATE_INTERNALREQUESTS=\"skipped\"\nfi\n\necho \"\"\necho \"CAN_I_READ_RELEASES? ${CAN_I_READ_RELEASES}\"\necho \"CAN_I_READ_RELEASEPLANS? ${CAN_I_READ_RELEASEPLANS}\"\necho \"CAN_I_READ_RELEASEPLANADMISSIONS? ${CAN_I_READ_RELEASEPLANADMISSIONS}\"\necho \"CAN_I_READ_RELEASESERVICECONFIG? ${CAN_I_READ_RELEASESERVICECONFIG}\"\necho \"CAN_I_READ_SNAPSHOTS? ${CAN_I_READ_SNAPSHOTS}\"\necho \"\"\necho \"CAN_I_CREATE_INTERNALREQUESTS? ${CAN_I_CREATE_INTERNALREQUESTS}\"\necho \"\"\n\nif [ \"${CAN_I_READ_RELEASES}\" = \"no\" ] ||\\\n    [ \"${CAN_I_READ_RELEASEPLANS}\" = \"no\" ] ||\\\n    [ \"${CAN_I_READ_RELEASEPLANADMISSIONS}\" = \"no\" ] ||\\\n    [ \"${CAN_I_READ_RELEASESERVICECONFIG}\" = \"no\" ] ||\\\n    [ \"${CAN_I_READ_SNAPSHOTS}\" = \"no\" ] ||\\\n    [ \"${CAN_I_CREATE_INTERNALREQUESTS}\" = \"no\" ] ; then\n  echo \"Error: Cannot read or create required Release resources!\"\n  echo \"\"\n  echo \"This indicates that your workspace is not correctly setup\"\n  echo \"Please reach out to a workspace administrator\"\n  exit 1\nfi\n\necho \"Access to Release resources verified\"\n"
                        }
                    ],
                    "volumes": [
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        }
                    ]
                }
            }
        },
        {
            "apiVersion": "tekton.dev/v1",
            "kind": "TaskRun",
            "metadata": {
                "annotations": {
                    "chains.tekton.dev/signed": "true",
                    "operator-sdk/primary-resource": "ex-registry-sh-e46349e3/snapshot-sample-e46349e3-jfnf7",
                    "operator-sdk/primary-resource-type": "Release.appstudio.redhat.com",
                    "pipeline.tekton.dev/release": "70f7308",
                    "results.tekton.dev/childReadyForDeletion": "true",
                    "results.tekton.dev/record": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/records/36c53303-72e6-48a5-8913-3af413d7bb59",
                    "results.tekton.dev/result": "ex-registry-sh-managed-e46349e3/results/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "results.tekton.dev/stored": "true",
                    "tekton.dev/displayName": "Verify Conforma in Konflux",
                    "tekton.dev/pipelines.minVersion": "0.12.1",
                    "tekton.dev/tags": "release"
                },
                "creationTimestamp": "2026-10-09T14:32:18Z",
                "finalizers": [
                    "results.tekton.dev/taskrun",
                    "chains.tekton.dev/taskrun"
                ],
                "generation": 1,
                "labels": {
                    "app.kubernetes.io/managed-by": "tekton-pipelines",
                    "app.kubernetes.io/version": "0.1",
                    "appstudio.openshift.io/application": "appstudio",
                    "appstudio.openshift.io/service": "release",
                    "appstudio.openshift.io/snapshot": "snapshot-sample-e46349e3",
                    "pipelines.appstudio.openshift.io/type": "managed",
                    "release.appstudio.openshift.io/attempt": "0",
                    "release.appstudio.openshift.io/name": "snapshot-sample-e46349e3-jfnf7",
                    "release.appstudio.openshift.io/namespace": "ex-registry-sh-e46349e3",
                    "tekton.dev/memberOf": "tasks",
                    "tekton.dev/pipeline": "push-to-external-registry",
                    "tekton.dev/pipelineRun": "managed-d6ffr",
                    "tekton.dev/pipelineRunUID": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc",
                    "tekton.dev/pipelineTask": "verify-conforma",
                    "tekton.dev/task": "verify-conforma-konflux-ta"
                },
                "name": "managed-d6ffr-verify-conforma",
                "namespace": "ex-registry-sh-managed-e46349e3",
                "ownerReferences": [
                    {
                        "apiVersion": "tekton.dev/v1",
                        "blockOwnerDeletion": true,
                        "controller": true,
                        "kind": "PipelineRun",
                        "name": "managed-d6ffr",
                        "uid": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc"
                    }
                ],
                "resourceVersion": "16335",
                "uid": "36c53303-72e6-48a5-8913-3af413d7bb59"
            },
            "spec": {
                "params": [
                    {
                        "name": "SNAPSHOT_FILENAME",
                        "value": "b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                    },
                    {
                        "name": "SSL_CERT_DIR",
                        "value": "/var/run/secrets/kubernetes.io/serviceaccount"
                    },
                    {
                        "name": "POLICY_CONFIGURATION",
                        "value": "{\"description\":\"Red Hat's enterprise requirements\",\"sources\":[{\"name\":\"Release Policies\",\"policy\":[\"oci::quay.io/enterprise-contract/ec-release-policy:konflux\"],\"data\":[\"github.com/release-engineering/rhtap-ec-policy//data\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest\"],\"config\":{\"exclude\":[\"step_image_registries\",\"tasks.required_tasks_found:prefetch-dependencies\",\"slsa_source_correlated.source_code_reference_provided\"],\"include\":[\"@slsa3\"]}}],\"publicKey\":\"k8s://ex-registry-sh-managed-e46349e3/cosign-public-key\"}"
                    },
                    {
                        "name": "STRICT",
                        "value": "true"
                    },
                    {
                        "name": "IGNORE_REKOR",
                        "value": "true"
                    },
                    {
                        "name": "EXTRA_RULE_DATA",
                        "value": "pipeline_intention=release"
                    },
                    {
                        "name": "WORKERS",
                        "value": "4"
                    },
                    {
                        "name": "SOURCE_DATA_ARTIFACT",
                        "value": "oci:quay-service.quay/test-org/trusted-artifacts@sha256:7fa8425ee6089465f15388974e71810ff8cbc1982dbd66f665a67995ba0776b0"
                    },
                    {
                        "name": "TRUSTED_ARTIFACTS_DEBUG",
                        "value": ""
                    },
                    {
                        "name": "CERTIFICATE_IDENTITY",
                        "value": ""
                    },
                    {
                        "name": "CERTIFICATE_OIDC_ISSUER",
                        "value": ""
                    },
                    {
                        "name": "TUF_MIRROR",
                        "value": ""
                    },
                    {
                        "name": "REKOR_HOST",
                        "value": ""
                    }
                ],
                "serviceAccountName": "release-service-account",
                "taskRef": {
                    "params": [
                        {
                            "name": "url",
                            "value": "https://github.com/conforma/tekton-catalog"
                        },
                        {
                            "name": "revision",
                            "value": "0004edc302b83067034bffbd17677299900273f9"
                        },
                        {
                            "name": "pathInRepo",
                            "value": "tasks/verify-conforma-konflux-ta/0.1/verify-conforma-konflux-ta.yaml"
                        }
                    ],
                    "resolver": "git"
                },
                "timeout": "4h0m0s"
            },
            "status": {
                "artifacts": {},
                "completionTime": "2026-10-09T14:34:51Z",
                "conditions": [
                    {
                        "lastTransitionTime": "2026-10-09T14:34:51Z",
                        "message": "All Steps have completed executing",
                        "reason": "Succeeded",
                        "status": "True",
                        "type": "Succeeded"
                    }
                ],
                "podName": "managed-d6ffr-verify-conforma-pod",
                "provenance": {
                    "featureFlags": {
                        "awaitSidecarReadiness": true,
                        "coschedule": "workspaces",
                        "enableAPIFields": "beta",
                        "enableProvenanceInStatus": true,
                        "enforceNonfalsifiability": "none",
                        "maxResultSize": 4096,
                        "resultExtractionMethod": "termination-message",
                        "runningInEnvWithInjectedSidecars": true,
                        "sendCloudEventsForRuns": true,
                        "verificationNoMatchPolicy": "ignore"
                    },
                    "refSource": {
                        "digest": {
                            "sha1": "0004edc302b83067034bffbd17677299900273f9"
                        },
                        "entryPoint": "tasks/verify-conforma-konflux-ta/0.1/verify-conforma-konflux-ta.yaml",
                        "uri": "git+https://github.com/conforma/tekton-catalog"
                    }
                },
                "results": [
                    {
                        "name": "TEST_OUTPUT",
                        "type": "string",
                        "value": "{\"timestamp\":\"1791556488\",\"namespace\":\"\",\"successes\":21,\"failures\":0,\"warnings\":0,\"result\":\"SUCCESS\"}\n"
                    },
                    {
                        "name": "VSA_GENERATED",
                        "type": "string",
                        "value": "false"
                    }
                ],
                "startTime": "2026-10-09T14:32:18Z",
                "steps": [
                    {
                        "container": "step-use-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "use-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://c7587eb6b87613159d760caf9c24c35a810302b9ec3b570a62be155c34e17e0a",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:35Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:35Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-initialize-tuf",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "initialize-tuf",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://8a6f162432e014862f56289110b591295bf16715ac91481350ecc080abd9429a",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:36Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:36Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-reduce",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "reduce",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://de9c958c959e6bdaa4a0b8d5c38bd57dbbcd59a8dad421ac0034a2b23c3bc9a1",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:36Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:36Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-pin-policy-bundle",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "pin-policy-bundle",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://825f4c50044090f68edfc43e6879b0dbc62d1cd4ed5e354f0a5f1a3d82bb232a",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:36Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:36Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-validate",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "validate",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://5621c559406901e81c075d82d107e8200ebe91f9f5059260e53747596163c064",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:48Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:36Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-report-json",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "report-json",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://3d1d2933a3d4d52b3de84a0aed978cf30316b6cb5c41b823d8084b3575bc73c1",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:48Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:48Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-summary",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "summary",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://5f80afd3b26c8184003633e34332c1136fe513eb87a07cdf2195f0ac5a05ddf5",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:49Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-version",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "version",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://4c1fc5362979da32d79aff78fd43b2b2868cbde4afb238c8e8640dc9d518c978",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:49Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-show-config",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "show-config",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://69cc1b1d34c6dcc8c1f26a35f04426b3fed579b8358fe9434b5a15d68b02666a",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:49Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-detailed-report",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "detailed-report",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://340c30174e77d8d95f9fa9e9f1ea01304c0a7f12b9dd0f0f7d84f7495166c8df",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:49Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-assert",
                        "imageID": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                        "name": "assert",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://985cb50ceac2cfbfb909bcc34de4abe9a1e3cfb1a98834daf37aae843c918cbc",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:49Z",
                            "message": "[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1791556488\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":21,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1},{\"key\":\"VSA_GENERATED\",\"value\":\"false\",\"type\":1}]",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:49Z"
                        },
                        "terminationReason": "Completed"
                    },
                    {
                        "container": "step-create-trusted-artifact",
                        "imageID": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                        "name": "create-trusted-artifact",
                        "provenance": {},
                        "terminated": {
                            "containerID": "containerd://47aacbb9a010a6a5452ec554537475b93e5a1da25b344f80dcacb9e7728f694d",
                            "exitCode": 0,
                            "finishedAt": "2026-10-09T14:34:49Z",
                            "reason": "Completed",
                            "startedAt": "2026-10-09T14:34:49Z"
                        },
                        "terminationReason": "Skipped"
                    }
                ],
                "taskSpec": {
                    "description": "Verify the Conforma policy is met",
                    "params": [
                        {
                            "description": "The filename of the `Snapshot` that is located within the trusted artifact\n",
                            "name": "SNAPSHOT_FILENAME",
                            "type": "string"
                        },
                        {
                            "description": "Trusted Artifact to use to obtain the Snapshot to validate.\n",
                            "name": "SOURCE_DATA_ARTIFACT",
                            "type": "string"
                        },
                        {
                            "default": "enterprise-contract-service/default",
                            "description": "Name of the policy configuration (EnterpriseContractPolicy\nresource) to use. `namespace/name` or `name` syntax supported. If\nnamespace is omitted the namespace where the task runs is used.\nYou can also specify a policy configuration using a git url, e.g.\n`github.com/conforma/config//slsa3`.\n",
                            "name": "POLICY_CONFIGURATION",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Public key used to verify traditional long-lived signatures. Must be a valid k8s cosign reference, e.g. k8s://my-space/my-secret where my-secret contains the expected cosign.pub attribute. Required for traditional signing key verification. Will be ignored if any of CERTIFICATE_IDENTITY, CERTIFICATE_IDENTITY_REGEXP, CERTIFICATE_OIDC_ISSUER, or CERTIFICATE_OIDC_ISSUER_REGEXP are provided.",
                            "name": "PUBLIC_KEY",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Rekor host for transparency log lookups",
                            "name": "REKOR_HOST",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Expected identity in the signing certificate for keyless verification. This should be the email or URI that was used when signing. You should provide both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for keyless verification. The PUBLIC_KEY param will be ignored if this is provided.",
                            "name": "CERTIFICATE_IDENTITY",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Expected OIDC issuer in the signing certificate for keyless verification. This should match the issuer that provided the identity token used for signing. You should provide both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for keyless verification. The PUBLIC_KEY param will be ignored if this is provided.",
                            "name": "CERTIFICATE_OIDC_ISSUER",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Similar to CERTIFICATE_IDENTITY but the value is a regexp that will be matched. Note that CERTIFICATE_IDENTITY takes precedence over this if both are present.",
                            "name": "CERTIFICATE_IDENTITY_REGEXP",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Similar to CERTIFICATE_OIDC_ISSUER but a regexp that will be matched. Note that CERTIFICATE_OIDC_ISSUER takes precedence over this if both are present.",
                            "name": "CERTIFICATE_OIDC_ISSUER_REGEXP",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Skip Rekor transparency log checks during validation. Compatible with traditional signing secret signature checks only. If any of the CERTIFICATE_* keyless verification params are present, this value is disregarded and Rekor transparency log checks are included.",
                            "name": "IGNORE_REKOR",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "TUF mirror URL. Provide a value when NOT using public sigstore deployment.",
                            "name": "TUF_MIRROR",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Path to a directory containing SSL certs to be used when communicating\nwith external services. This is useful when using the integrated registry\nand a local instance of Rekor on a development cluster which may use\ncertificates issued by a not-commonly trusted root CA. In such cases,\n`/var/run/secrets/kubernetes.io/serviceaccount` is a good value. Multiple\npaths can be provided by using the `:` separator.\n",
                            "name": "SSL_CERT_DIR",
                            "type": "string"
                        },
                        {
                            "default": "trusted-ca",
                            "description": "The name of the ConfigMap to read CA bundle data from.",
                            "name": "CA_TRUST_CONFIGMAP_NAME",
                            "type": "string"
                        },
                        {
                            "default": "ca-bundle.crt",
                            "description": "The name of the key in the ConfigMap that contains the CA bundle data.",
                            "name": "CA_TRUST_CONFIG_MAP_KEY",
                            "type": "string"
                        },
                        {
                            "default": "true",
                            "description": "Include rule titles and descriptions in the output. Set to `\"false\"` to disable it.",
                            "name": "INFO",
                            "type": "string"
                        },
                        {
                            "default": "true",
                            "description": "Fail the task if policy fails. Set to `\"false\"` to disable it.",
                            "name": "STRICT",
                            "type": "string"
                        },
                        {
                            "default": "/tekton/home",
                            "description": "Value for the HOME environment variable.",
                            "name": "HOMEDIR",
                            "type": "string"
                        },
                        {
                            "default": "now",
                            "description": "Run policy checks with the provided time.",
                            "name": "EFFECTIVE_TIME",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Allow setting EFFECTIVE_TIME to a date in the past.",
                            "name": "ALLOW_PAST_EFFECTIVE_TIME",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Merge additional Rego variables into the policy data. Use syntax \"key=value,key2=value2...\"",
                            "name": "EXTRA_RULE_DATA",
                            "type": "string"
                        },
                        {
                            "default": "sha256:0d3ab4efb94bd8ee361bda3146cae0c509c41d597431af658ce2570112efe469",
                            "description": "Optional OCI digest to pin the release policy bundle. When provided, the policy configuration is resolved and the reference oci::quay.io/conforma/release-policy:konflux is replaced with oci::quay.io/conforma/release-policy@\u003cdigest\u003e. Accepts a full digest (sha256:abc123...) or just the hex hash (abc123...).",
                            "name": "POLICY_BUNDLE_DIGEST",
                            "type": "string"
                        },
                        {
                            "default": "4",
                            "description": "Number of parallel workers to use for policy evaluation.\n",
                            "name": "WORKERS",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Use the OPA evaluator instead of the default conftest evaluator. Set to \"1\" to enable.",
                            "name": "EC_USE_OPA",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Reduce the Snapshot to only the component whose build caused the Snapshot to be created",
                            "name": "SINGLE_COMPONENT",
                            "type": "string"
                        },
                        {
                            "default": "unknown",
                            "description": "Name, including kind, of the Kubernetes resource to query for labels when single component mode is enabled, e.g. pr/somepipeline.\n",
                            "name": "SINGLE_COMPONENT_CUSTOM_RESOURCE",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Kubernetes namespace where the SINGLE_COMPONENT_NAME is found. Only used when single component mode is enabled.\n",
                            "name": "SINGLE_COMPONENT_CUSTOM_RESOURCE_NS",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "oras options to pass to Trusted Artifacts calls",
                            "name": "ORAS_OPTIONS",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Flag to enable debug logging in trusted artifacts. Set to a non-empty string to enable.",
                            "name": "TRUSTED_ARTIFACTS_DEBUG",
                            "type": "string"
                        },
                        {
                            "default": "/var/workdir/conforma",
                            "description": "Directory to use to extract trusted artifact archive.",
                            "name": "TRUSTED_ARTIFACTS_EXTRACT_DIR",
                            "type": "string"
                        },
                        {
                            "default": "1s",
                            "description": "Base duration for exponential backoff calculation (e.g., \"1s\", \"500ms\")",
                            "name": "RETRY_DURATION",
                            "type": "string"
                        },
                        {
                            "default": "2.0",
                            "description": "Exponential backoff multiplier (e.g., \"2.0\", \"1.5\")",
                            "name": "RETRY_FACTOR",
                            "type": "string"
                        },
                        {
                            "default": "0.1",
                            "description": "Randomness factor for backoff calculation (0.0-1.0, e.g., \"0.1\", \"0.2\")",
                            "name": "RETRY_JITTER",
                            "type": "string"
                        },
                        {
                            "default": "3",
                            "description": "Maximum number of retry attempts",
                            "name": "RETRY_MAX_RETRY",
                            "type": "string"
                        },
                        {
                            "default": "3s",
                            "description": "Maximum wait time between retries (e.g., \"3s\", \"10s\")",
                            "name": "RETRY_MAX_WAIT",
                            "type": "string"
                        },
                        {
                            "default": "false",
                            "description": "Enable VSA generation",
                            "name": "ENABLE_VSA",
                            "type": "string"
                        },
                        {
                            "default": "dsse",
                            "description": "Attestation format: dsse (signed envelope) or predicate (raw JSON)",
                            "name": "ATTESTATION_FORMAT",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "Signing key for format=dsse (k8s:// or file:// URL)",
                            "name": "VSA_SIGNING_KEY",
                            "type": "string"
                        },
                        {
                            "default": "local@/var/workdir/conforma/vsa",
                            "description": "VSA upload destination",
                            "name": "VSA_UPLOAD",
                            "type": "string"
                        },
                        {
                            "default": "",
                            "description": "OCI storage URL for trusted artifacts",
                            "name": "ociStorage",
                            "type": "string"
                        }
                    ],
                    "results": [
                        {
                            "description": "Short summary of the policy evaluation for each image",
                            "name": "TEST_OUTPUT",
                            "type": "string"
                        },
                        {
                            "description": "Whether VSAs were generated (true/false)",
                            "name": "VSA_GENERATED",
                            "type": "string"
                        },
                        {
                            "description": "Trusted Artifact URI containing VSA files",
                            "name": "sourceDataArtifact",
                            "type": "string"
                        }
                    ],
                    "stepTemplate": {
                        "computeResources": {},
                        "env": [
                            {
                                "name": "ORAS_OPTIONS"
                            },
                            {
                                "name": "DEBUG"
                            },
                            {
                                "name": "HOME",
                                "value": "/tekton/home"
                            }
                        ],
                        "securityContext": {
                            "runAsUser": 1001
                        },
                        "volumeMounts": [
                            {
                                "mountPath": "/var/workdir",
                                "name": "workdir"
                            },
                            {
                                "mountPath": "/mnt/trusted-ca",
                                "name": "trusted-ca",
                                "readOnly": true
                            }
                        ]
                    },
                    "steps": [
                        {
                            "args": [
                                "use",
                                "oci:quay-service.quay/test-org/trusted-artifacts@sha256:7fa8425ee6089465f15388974e71810ff8cbc1982dbd66f665a67995ba0776b0=/var/workdir/conforma"
                            ],
                            "computeResources": {},
                            "env": [
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "use-trusted-artifact"
                        },
                        {
                            "computeResources": {},
                            "env": [
                                {
                                    "name": "TUF_MIRROR"
                                }
                            ],
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "initialize-tuf",
                            "script": "set -euo pipefail\n\nif [[ -z \"${TUF_MIRROR:-}\" ]]; then\n    echo 'TUF_MIRROR parameter not provided. Skipping TUF root initialization.'\n    exit\nfi\n\necho 'Initializing TUF root...'\nec sigstore initialize --mirror \"${TUF_MIRROR}\" --root \"${TUF_MIRROR}/root.json\"\necho 'Done!'"
                        },
                        {
                            "command": [
                                "reduce-snapshot.sh"
                            ],
                            "computeResources": {},
                            "env": [
                                {
                                    "name": "SNAPSHOT",
                                    "value": "/var/workdir/conforma/b12f22a3-3e98-493b-8cc3-29a1f4fdc7bc/snapshot_spec.json"
                                },
                                {
                                    "name": "SINGLE_COMPONENT",
                                    "value": "false"
                                },
                                {
                                    "name": "CUSTOM_RESOURCE",
                                    "value": "unknown"
                                },
                                {
                                    "name": "CUSTOM_RESOURCE_NAMESPACE"
                                },
                                {
                                    "name": "SNAPSHOT_PATH",
                                    "value": "/tekton/home/snapshot.json"
                                }
                            ],
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "reduce",
                            "onError": "continue"
                        },
                        {
                            "command": [
                                "pin-konflux-policy-bundle.sh"
                            ],
                            "computeResources": {},
                            "env": [
                                {
                                    "name": "POLICY_CONFIGURATION",
                                    "value": "{\"description\":\"Red Hat's enterprise requirements\",\"sources\":[{\"name\":\"Release Policies\",\"policy\":[\"oci::quay.io/enterprise-contract/ec-release-policy:konflux\"],\"data\":[\"github.com/release-engineering/rhtap-ec-policy//data\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest\"],\"config\":{\"exclude\":[\"step_image_registries\",\"tasks.required_tasks_found:prefetch-dependencies\",\"slsa_source_correlated.source_code_reference_provided\"],\"include\":[\"@slsa3\"]}}],\"publicKey\":\"k8s://ex-registry-sh-managed-e46349e3/cosign-public-key\"}"
                                },
                                {
                                    "name": "POLICY_BUNDLE_DIGEST",
                                    "value": "sha256:0d3ab4efb94bd8ee361bda3146cae0c509c41d597431af658ce2570112efe469"
                                }
                            ],
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "pin-policy-bundle",
                            "onError": "continue"
                        },
                        {
                            "computeResources": {
                                "limits": {
                                    "memory": "2Gi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "2Gi"
                                }
                            },
                            "env": [
                                {
                                    "name": "POLICY_CONFIGURATION",
                                    "value": "{\"description\":\"Red Hat's enterprise requirements\",\"sources\":[{\"name\":\"Release Policies\",\"policy\":[\"oci::quay.io/enterprise-contract/ec-release-policy:konflux\"],\"data\":[\"github.com/release-engineering/rhtap-ec-policy//data\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest\"],\"config\":{\"exclude\":[\"step_image_registries\",\"tasks.required_tasks_found:prefetch-dependencies\",\"slsa_source_correlated.source_code_reference_provided\"],\"include\":[\"@slsa3\"]}}],\"publicKey\":\"k8s://ex-registry-sh-managed-e46349e3/cosign-public-key\"}"
                                },
                                {
                                    "name": "PUBLIC_KEY"
                                },
                                {
                                    "name": "CERTIFICATE_IDENTITY"
                                },
                                {
                                    "name": "CERTIFICATE_OIDC_ISSUER"
                                },
                                {
                                    "name": "CERTIFICATE_IDENTITY_REGEXP"
                                },
                                {
                                    "name": "CERTIFICATE_OIDC_ISSUER_REGEXP"
                                },
                                {
                                    "name": "REKOR_HOST"
                                },
                                {
                                    "name": "IGNORE_REKOR",
                                    "value": "true"
                                },
                                {
                                    "name": "WORKERS",
                                    "value": "4"
                                },
                                {
                                    "name": "INFO",
                                    "value": "true"
                                },
                                {
                                    "name": "EFFECTIVE_TIME",
                                    "value": "now"
                                },
                                {
                                    "name": "ALLOW_PAST_EFFECTIVE_TIME",
                                    "value": "false"
                                },
                                {
                                    "name": "EXTRA_RULE_DATA",
                                    "value": "pipeline_intention=release"
                                },
                                {
                                    "name": "RETRY_MAX_WAIT",
                                    "value": "3s"
                                },
                                {
                                    "name": "RETRY_MAX_RETRY",
                                    "value": "3"
                                },
                                {
                                    "name": "RETRY_DURATION",
                                    "value": "1s"
                                },
                                {
                                    "name": "RETRY_FACTOR",
                                    "value": "2.0"
                                },
                                {
                                    "name": "RETRY_JITTER",
                                    "value": "0.1"
                                },
                                {
                                    "name": "ENABLE_VSA",
                                    "value": "false"
                                },
                                {
                                    "name": "ATTESTATION_FORMAT",
                                    "value": "dsse"
                                },
                                {
                                    "name": "VSA_SIGNING_KEY"
                                },
                                {
                                    "name": "VSA_UPLOAD",
                                    "value": "local@/var/workdir/conforma/vsa"
                                },
                                {
                                    "name": "EC_USE_OPA"
                                },
                                {
                                    "name": "HOMEDIR",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "SSL_CERT_DIR",
                                    "value": "/tekton-custom-certs:/etc/ssl/certs:/etc/pki/tls/certs:/system/etc/security/cacerts:/var/run/secrets/kubernetes.io/serviceaccount"
                                }
                            ],
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "validate",
                            "onError": "continue",
                            "script": "#!/bin/bash\nset -euo pipefail\n\nif [ -f \"/mnt/trusted-ca/ca-bundle.crt\" ]; then\n    export SSL_CERT_FILE=\"/mnt/trusted-ca/ca-bundle.crt\"\nfi\n\n# Use policy override file if pin-policy-bundle produced one\nif [[ -f \"${HOMEDIR}/policy-with-pinned-bundle.yaml\" ]]; then\n  POLICY_CONFIGURATION=\"${HOMEDIR}/policy-with-pinned-bundle.yaml\"\nfi\n\ncmd_args=(\n  validate\n  image\n  --images=\"${HOMEDIR}/snapshot.json\"\n  --policy=\"${POLICY_CONFIGURATION}\"\n)\n\n# To keep bash logic as thin as possible we deliberately don't sanitize\n# these params. If something is wrong or missing let Conforma handle it.\n\nif [ -n \"${CERTIFICATE_IDENTITY}\" ] || \\\n   [ -n \"${CERTIFICATE_OIDC_ISSUER}\" ] || \\\n   [ -n \"${CERTIFICATE_IDENTITY_REGEXP}\" ] || \\\n   [ -n \"${CERTIFICATE_OIDC_ISSUER_REGEXP}\" ]; then\n  # If *any* of the above are non-empty assume the intention is to\n  # try keyless verification\n\n  if [ -n \"${CERTIFICATE_IDENTITY}\" ]; then\n    cmd_args+=(\n      --certificate-identity=\"${CERTIFICATE_IDENTITY}\"\n    )\n  elif [ -n \"${CERTIFICATE_IDENTITY_REGEXP}\" ]; then\n    cmd_args+=(\n      --certificate-identity-regexp=\"${CERTIFICATE_IDENTITY_REGEXP}\"\n    )\n  fi\n\n  if [ -n \"${CERTIFICATE_OIDC_ISSUER}\" ]; then\n    cmd_args+=(\n      --certificate-oidc-issuer=\"${CERTIFICATE_OIDC_ISSUER}\"\n    )\n  elif [ -n \"${CERTIFICATE_OIDC_ISSUER_REGEXP}\" ]; then\n    cmd_args+=(\n      --certificate-oidc-issuer-regexp=\"${CERTIFICATE_OIDC_ISSUER_REGEXP}\"\n    )\n  fi\n\n  # Force --ignore-rekor to false since we need rekor\n  cmd_args+=(\n    --ignore-rekor=false\n  )\nelse\n  # Assume traditional signing secret verification\n  cmd_args+=(\n    --public-key=\"${PUBLIC_KEY}\"\n    --ignore-rekor=\"${IGNORE_REKOR}\"\n  )\nfi\n\ncmd_args+=(\n  --rekor-url=\"${REKOR_HOST}\"\n  --workers=\"${WORKERS}\"\n  --info=\"${INFO}\"\n  --timeout=0\n  --strict=false\n  --show-successes=true\n  --show-policy-docs-link=true\n  --effective-time=\"${EFFECTIVE_TIME}\"\n  --allow-past-effective-time=\"${ALLOW_PAST_EFFECTIVE_TIME}\"\n  --extra-rule-data=\"${EXTRA_RULE_DATA}\"\n  --retry-max-wait=\"${RETRY_MAX_WAIT}\"\n  --retry-max-retry=\"${RETRY_MAX_RETRY}\"\n  --retry-duration=\"${RETRY_DURATION}\"\n  --retry-factor=\"${RETRY_FACTOR}\"\n  --retry-jitter=\"${RETRY_JITTER}\"\n  --output=\"text=${HOMEDIR}/text-report.txt?show-successes=false\"\n  --output=\"json=${HOMEDIR}/report-json.json\"\n  --output=\"appstudio=/tekton/results/TEST_OUTPUT\"\n)\n\n# Add VSA arguments if enabled\nif [[ \"${ENABLE_VSA}\" == \"true\" ]]; then\n  cmd_args+=(\n    --vsa=\"true\"\n    --attestation-format=\"${ATTESTATION_FORMAT}\"\n  )\n\n\n  if [[ \"${ATTESTATION_FORMAT}\" == \"dsse\" ]]; then\n    if [[ -z \"${VSA_SIGNING_KEY}\" ]]; then\n      echo \"ERROR: VSA_SIGNING_KEY required for format=dsse\" \u003e\u00262\n      exit 1\n    fi\n    cmd_args+=(\n      --vsa-signing-key=\"${VSA_SIGNING_KEY}\"\n      --vsa-upload=\"${VSA_UPLOAD}\"\n      --vsa-expiration=0\n    )\n  fi\n\n  # ec requires --attestation-output-dir to be under /tmp or cwd.\n  # Write there first, then copy to the workdir so\n  # create-trusted-artifact includes them in the archive.\n  VSA_TMP_DIR=\"/tmp/vsa-output\"\n  mkdir -p \"$VSA_TMP_DIR\"\n  cmd_args+=(\n    --attestation-output-dir=\"$VSA_TMP_DIR\"\n  )\n\n  echo -n \"true\" \u003e /tekton/results/VSA_GENERATED\nelse\n  echo -n \"false\" \u003e /tekton/results/VSA_GENERATED\nfi\n\n# Execute Conforma with constructed arguments\nec \"${cmd_args[@]}\"\n\n# Copy VSA output from /tmp to workdir for trusted artifact archival\nif [[ \"${ENABLE_VSA}\" == \"true\" ]]; then\n  # Extract local path from VSA_UPLOAD for output directory\n  # VSA_UPLOAD format is \"local@/path/to/dir\"\n  # Fixme: Because of -o pipefail this will fail the whole task when the grep doesn't match\n  VSA_LOCAL_PATH=$(echo \"${VSA_UPLOAD}\" | grep -oE '^local@[^ ]+' | sed 's/^local@//' | head -n1 || true)\n  if [[ -n \"$VSA_LOCAL_PATH\" \u0026\u0026 -d \"/tmp/vsa-output\" ]]; then\n    mkdir -p \"$VSA_LOCAL_PATH\"\n    cp -r /tmp/vsa-output/* \"$VSA_LOCAL_PATH\"/ 2\u003e/dev/null || true\n    # Include raw JSON report for downstream SLSA VSA generation\n    cp \"${HOMEDIR}/report-json.json\" \"$VSA_LOCAL_PATH\"/ 2\u003e/dev/null || true\n  fi\nfi\n"
                        },
                        {
                            "args": [
                                "jq . /tekton/home/report-json.json | awk '{gsub(/^ +/, \"\"); acc += length; if (acc \u003e= 8000) { printf \"\\n\"; acc=length } printf $0 }'"
                            ],
                            "command": [
                                "sh",
                                "-c"
                            ],
                            "computeResources": {},
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "report-json",
                            "onError": "continue"
                        },
                        {
                            "args": [
                                ".",
                                "/tekton/results/TEST_OUTPUT"
                            ],
                            "command": [
                                "jq"
                            ],
                            "computeResources": {},
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "summary",
                            "onError": "continue"
                        },
                        {
                            "args": [
                                "version"
                            ],
                            "command": [
                                "ec"
                            ],
                            "computeResources": {},
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "version"
                        },
                        {
                            "args": [
                                "{policy: .policy, key: .key, \"effective-time\": .[\"effective-time\"]}",
                                "/tekton/home/report-json.json"
                            ],
                            "command": [
                                "jq"
                            ],
                            "computeResources": {},
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "show-config"
                        },
                        {
                            "args": [
                                "/tekton/home/text-report.txt"
                            ],
                            "command": [
                                "cat"
                            ],
                            "computeResources": {},
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "detailed-report",
                            "onError": "continue"
                        },
                        {
                            "args": [
                                "--argjson",
                                "strict",
                                "true",
                                "-e",
                                ".result == \"SUCCESS\" or .result == \"WARNING\" or ($strict | not)\n",
                                "/tekton/results/TEST_OUTPUT"
                            ],
                            "command": [
                                "jq"
                            ],
                            "computeResources": {},
                            "image": "quay.io/conforma/cli@sha256:6c6343486b739836c448277c00b1ec3c291e4ad10fd2b1767ff3984e89a43ad1",
                            "imagePullPolicy": "IfNotPresent",
                            "name": "assert"
                        },
                        {
                            "args": [
                                "create",
                                "--store",
                                "",
                                "/tekton/results/sourceDataArtifact=/var/workdir/conforma"
                            ],
                            "computeResources": {
                                "limits": {
                                    "memory": "128Mi"
                                },
                                "requests": {
                                    "cpu": "250m",
                                    "memory": "128Mi"
                                }
                            },
                            "env": [
                                {
                                    "name": "HOME",
                                    "value": "/tekton/home"
                                },
                                {
                                    "name": "ORAS_OPTIONS"
                                },
                                {
                                    "name": "CA_FILE",
                                    "value": "/mnt/trusted-ca/ca-bundle.crt"
                                }
                            ],
                            "image": "quay.io/konflux-ci/build-trusted-artifacts@sha256:9bd32f6bafb517b309e11a2d89365052b4ab3f1c9c23c4ffd45aff6f03960476",
                            "name": "create-trusted-artifact",
                            "when": [
                                {
                                    "input": "false",
                                    "operator": "in",
                                    "values": [
                                        "true"
                                    ]
                                },
                                {
                                    "operator": "notin",
                                    "values": [
                                        "",
                                        "empty"
                                    ]
                                }
                            ]
                        }
                    ],
                    "volumes": [
                        {
                            "configMap": {
                                "items": [
                                    {
                                        "key": "ca-bundle.crt",
                                        "path": "ca-bundle.crt"
                                    }
                                ],
                                "name": "trusted-ca",
                                "optional": true
                            },
                            "name": "trusted-ca"
                        },
                        {
                            "emptyDir": {},
                            "name": "workdir"
                        }
                    ]
                }
            }
        }
    ],
    "kind": "List",
    "metadata": {
        "resourceVersion": ""
    }
}
