[
  {
    "SuitePath": "/tmp/tmp.2RNFuf6Ple/cmd",
    "SuiteDescription": "Red Hat App Studio E2E tests",
    "SuiteLabels": [],
    "SuiteSemVerConstraints": [],
    "SuiteComponentSemVerConstraints": {},
    "SuiteSucceeded": false,
    "SuiteHasProgrammaticFocus": false,
    "SpecialSuiteFailureReasons": [
      "Suite Timeout Elapsed"
    ],
    "PreRunStats": {
      "TotalSpecs": 36,
      "SpecsThatWillRun": 36
    },
    "StartTime": "2026-06-29T11:41:26.688124825Z",
    "EndTime": "2026-06-29T13:10:37.269256248Z",
    "RunTime": 5350581131423,
    "SuiteConfig": {
      "RandomSeed": 1782732316,
      "RandomizeAllSpecs": false,
      "FocusStrings": null,
      "SkipStrings": null,
      "FocusFiles": null,
      "SkipFiles": null,
      "LabelFilter": "",
      "SemVerFilter": "",
      "FailOnPending": false,
      "FailOnEmpty": false,
      "FailFast": false,
      "FlakeAttempts": 0,
      "MustPassRepeatedly": 0,
      "DryRun": false,
      "PollProgressAfter": 0,
      "PollProgressInterval": 0,
      "Timeout": 5349002165438,
      "EmitSpecProgress": false,
      "OutputInterceptorMode": "none",
      "SourceRoots": null,
      "GracePeriod": 30000000000,
      "ParallelProcess": 1,
      "ParallelTotal": 20,
      "ParallelHost": "127.0.0.1:42515"
    },
    "SpecReports": [
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when creating tenants on the old Konflux version"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 60
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 61
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should create both tenants concurrently",
        "State": "passed",
        "StartTime": "2026-06-29T11:48:31.133993221Z",
        "EndTime": "2026-06-29T11:48:40.020999774Z",
        "RunTime": 8887006563,
        "ParallelProcess": 1,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 48
            },
            "TimelineLocation": {
              "Order": 1,
              "Time": "2026-06-29T11:48:31.134119644Z"
            },
            "Message": "DR Backwards-Compat",
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 52
            },
            "TimelineLocation": {
              "Order": 2,
              "Time": "2026-06-29T11:48:32.807136239Z"
            },
            "Message": "Validating OADP operator health: pods running in openshift-adp"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 52
            },
            "TimelineLocation": {
              "Order": 3,
              "Time": "2026-06-29T11:48:32.822648189Z"
            },
            "Message": "Validating Velero readiness: deployment has ready replicas"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 52
            },
            "TimelineLocation": {
              "Order": 4,
              "Time": "2026-06-29T11:48:32.841275649Z"
            },
            "Message": "Validating BSL availability: at least one BackupStorageLocation is Available"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 52
            },
            "TimelineLocation": {
              "Order": 5,
              "Time": "2026-06-29T11:48:32.889801154Z"
            },
            "Message": "Validating GitHub repo is reachable: https://github.com/redhat-appstudio-qe/DR_test_MathWizz"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 52
            },
            "TimelineLocation": {
              "Order": 6,
              "Time": "2026-06-29T11:48:32.889812724Z"
            },
            "Message": "Validating repo structure: 3 component Dockerfiles exist"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 55
            },
            "TimelineLocation": {
              "Order": 7,
              "Time": "2026-06-29T11:48:33.128700836Z"
            },
            "Message": "Forking DR_test_MathWizz → DR-MathWizz-utonjc for tenant dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 55
            },
            "TimelineLocation": {
              "Order": 8,
              "Time": "2026-06-29T11:48:34.30804355Z"
            },
            "Message": "Forking DR_test_MathWizz → DR-MathWizz-vifjws for tenant dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 48
            },
            "TimelineLocation": {
              "Order": 10,
              "Time": "2026-06-29T11:48:35.355766784Z"
            },
            "Message": "DR Backwards-Compat",
            "Duration": 4221647130,
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 61
            },
            "TimelineLocation": {
              "Order": 11,
              "Time": "2026-06-29T11:48:35.355935598Z"
            },
            "Message": "should create both tenants concurrently",
            "NodeType": "It"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 12,
              "Time": "2026-06-29T11:48:35.355982959Z"
            },
            "Message": "Creating tenant namespace dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 13,
              "Time": "2026-06-29T11:48:35.355983789Z"
            },
            "Message": "Creating tenant namespace dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 14,
              "Time": "2026-06-29T11:48:36.453798353Z"
            },
            "Message": "Creating Application moshekipod-backwards-compat-dr in namespace dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 15,
              "Time": "2026-06-29T11:48:36.517520471Z"
            },
            "Message": "Creating Application kokohazamar-backwards-compat-dr in namespace dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 16,
              "Time": "2026-06-29T11:48:36.666463133Z"
            },
            "Message": "Creating Component mathwizz-web-server in namespace dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 17,
              "Time": "2026-06-29T11:48:36.738327794Z"
            },
            "Message": "Creating Component mathwizz-web-server in namespace dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 18,
              "Time": "2026-06-29T11:48:37.212952175Z"
            },
            "Message": "Creating Component mathwizz-history-worker in namespace dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 19,
              "Time": "2026-06-29T11:48:37.225327295Z"
            },
            "Message": "Creating Component mathwizz-history-worker in namespace dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 20,
              "Time": "2026-06-29T11:48:37.260539379Z"
            },
            "Message": "Creating Component mathwizz-frontend in namespace dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 21,
              "Time": "2026-06-29T11:48:37.26545286Z"
            },
            "Message": "Creating Component mathwizz-frontend in namespace dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 22,
              "Time": "2026-06-29T11:48:37.284355007Z"
            },
            "Message": "Creating managed namespace dr-test-moshekipod-backwards-compat-dr-managed for release pipelines"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 23,
              "Time": "2026-06-29T11:48:37.297330049Z"
            },
            "Message": "Creating managed namespace dr-test-kokohazamar-backwards-compat-dr-managed for release pipelines"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 24,
              "Time": "2026-06-29T11:48:39.37915238Z"
            },
            "Message": "Creating release pipeline ServiceAccount release-service-account in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 25,
              "Time": "2026-06-29T11:48:39.427846988Z"
            },
            "Message": "Creating release pipeline RoleBinding in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 26,
              "Time": "2026-06-29T11:48:39.443676546Z"
            },
            "Message": "Creating release pipeline ServiceAccount release-service-account in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 27,
              "Time": "2026-06-29T11:48:39.490319848Z"
            },
            "Message": "Creating registry auth secrets in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 28,
              "Time": "2026-06-29T11:48:39.523365414Z"
            },
            "Message": "Creating release pipeline RoleBinding in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 29,
              "Time": "2026-06-29T11:48:39.523385835Z"
            },
            "Message": "Linking Quay auth secret to release SA in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 30,
              "Time": "2026-06-29T11:48:39.534338092Z"
            },
            "Message": "Creating cosign signing secret in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 31,
              "Time": "2026-06-29T11:48:39.560481222Z"
            },
            "Message": "Getting default Enterprise Contract policy from enterprise-contract-service namespace"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 32,
              "Time": "2026-06-29T11:48:39.581835994Z"
            },
            "Message": "Creating registry auth secrets in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 33,
              "Time": "2026-06-29T11:48:39.582291094Z"
            },
            "Message": "Creating Enterprise Contract policy dr-ec-policy in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 34,
              "Time": "2026-06-29T11:48:39.597587838Z"
            },
            "Message": "Creating ReleasePlan dr-releaseplan in tenant namespace dr-test-moshekipod-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 35,
              "Time": "2026-06-29T11:48:39.611425811Z"
            },
            "Message": "Linking Quay auth secret to release SA in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 36,
              "Time": "2026-06-29T11:48:39.617364245Z"
            },
            "Message": "Creating cosign signing secret in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 37,
              "Time": "2026-06-29T11:48:39.636349744Z"
            },
            "Message": "Getting default Enterprise Contract policy from enterprise-contract-service namespace"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 38,
              "Time": "2026-06-29T11:48:39.650551694Z"
            },
            "Message": "Creating Enterprise Contract policy dr-ec-policy in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 39,
              "Time": "2026-06-29T11:48:39.665312997Z"
            },
            "Message": "Creating ReleasePlan dr-releaseplan in tenant namespace dr-test-kokohazamar-backwards-compat-dr"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 40,
              "Time": "2026-06-29T11:48:39.744599137Z"
            },
            "Message": "Creating ReleasePlanAdmission dr-releaseplanadmission in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 41,
              "Time": "2026-06-29T11:48:39.745288962Z"
            },
            "Message": "Creating ReleasePlanAdmission dr-releaseplanadmission in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 42,
              "Time": "2026-06-29T11:48:39.826866703Z"
            },
            "Message": "Creating release PVC dr-release-pvc in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 43,
              "Time": "2026-06-29T11:48:39.826868903Z"
            },
            "Message": "Creating release PVC dr-release-pvc in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 44,
              "Time": "2026-06-29T11:48:39.846389854Z"
            },
            "Message": "Creating secrets access Role in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 45,
              "Time": "2026-06-29T11:48:39.846397214Z"
            },
            "Message": "Creating secrets access Role in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 46,
              "Time": "2026-06-29T11:48:39.872065353Z"
            },
            "Message": "Creating secrets access RoleBinding in managed namespace dr-test-kokohazamar-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 68
            },
            "TimelineLocation": {
              "Order": 47,
              "Time": "2026-06-29T11:48:39.884604046Z"
            },
            "Message": "Creating secrets access RoleBinding in managed namespace dr-test-moshekipod-backwards-compat-dr-managed"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 61
            },
            "TimelineLocation": {
              "Order": 49,
              "Time": "2026-06-29T11:48:40.020630666Z"
            },
            "Message": "should create both tenants concurrently",
            "Duration": 4664695088,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 44
            },
            "TimelineLocation": {
              "Order": 50,
              "Time": "2026-06-29T11:48:40.020940033Z"
            },
            "Message": "DR Backwards-Compat",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 44
            },
            "TimelineLocation": {
              "Order": 52,
              "Time": "2026-06-29T11:48:40.020988274Z"
            },
            "Message": "DR Backwards-Compat",
            "Duration": 48241,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when creating tenants on the old Konflux version"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 60
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 74
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should wait for all build PipelineRuns to succeed",
        "State": "timedout",
        "StartTime": "2026-06-29T11:48:40.021780562Z",
        "EndTime": "2026-06-29T13:10:37.262239739Z",
        "RunTime": 4917240459167,
        "ParallelProcess": 1,
        "Failure": {
          "Message": "A suite timeout occurred",
          "Location": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 74
          },
          "TimelineLocation": {
            "Offset": 82164,
            "Order": 61,
            "Time": "2026-06-29T13:10:35.790947554Z"
          },
          "FailureNodeContext": "leaf-node",
          "FailureNodeType": "It",
          "FailureNodeLocation": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 74
          },
          "ProgressReport": {
            "Message": "{{bold}}This is the Progress Report generated when the suite timeout occurred:{{/}}",
            "ParallelProcess": 1,
            "RunningInParallel": true,
            "ContainerHierarchyTexts": [
              "[disaster-recovery DR Suite]",
              "DR Backwards-Compat",
              "when creating tenants on the old Konflux version"
            ],
            "LeafNodeText": "should wait for all build PipelineRuns to succeed",
            "LeafNodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 74
            },
            "SpecStartTime": "2026-06-29T11:48:40.021780562Z",
            "CurrentNodeType": "It",
            "CurrentNodeText": "should wait for all build PipelineRuns to succeed",
            "CurrentNodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 74
            },
            "CurrentNodeStartTime": "2026-06-29T11:48:40.021875564Z",
            "CurrentStepText": "Waiting for build PipelineRun for mathwizz-history-worker in dr-test-kokohazamar-backwards-compat-dr (base: 0)",
            "CurrentStepLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "CurrentStepStartTime": "2026-06-29T11:48:40.022025547Z",
            "TimelineLocation": {
              "Offset": 82164,
              "Order": 62,
              "Time": "2026-06-29T13:10:35.790948054Z"
            },
            "Goroutines": [
              {
                "ID": 187,
                "State": "sync.WaitGroup.Wait, 82 minutes",
                "Stack": [
                  {
                    "Function": "sync.runtime_SemacquireWaitGroup(0x59690f83900?, 0xa0?)",
                    "Filename": "/usr/lib/golang/src/runtime/sema.go",
                    "Line": 114
                  },
                  {
                    "Function": "sync.(*WaitGroup).Wait(0x59690f8ed30)",
                    "Filename": "/usr/lib/golang/src/sync/waitgroup.go",
                    "Line": 206
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains(0x596901f1400, {0x59690ff7140, 0x2, 0x59691064e98?}, 0x0, 0x0)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 208,
                    "Highlight": true,
                    "Source": [
                      "\t\t}",
                      "\t}",
                      "\twg.Wait()",
                      "",
                      "\t// Release PipelineRuns run in the managed namespace and may not map 1:1"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.defineBackwardsCompatSpecs.func1.2.2()",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
                    "Line": 75,
                    "Highlight": true,
                    "Source": [
                      "",
                      "\t\t\tIt(\"should wait for all build PipelineRuns to succeed\", func() {",
                      "\t\t\t\twaitForPipelineChains(fw, bcTenants, nil, nil)",
                      "\t\t\t})",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/onsi/ginkgo/v2/internal.extractBodyFunction.func3({0x0?, 0x0?})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/ginkgo/v2@v2.28.0/internal/node.go",
                    "Line": 585
                  },
                  {
                    "Function": "github.com/onsi/ginkgo/v2/internal.(*Suite).runNode.func3()",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/ginkgo/v2@v2.28.0/internal/suite.go",
                    "Line": 946
                  },
                  {
                    "Function": "github.com/onsi/ginkgo/v2/internal.(*Suite).runNode in goroutine 67",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/ginkgo/v2@v2.28.0/internal/suite.go",
                    "Line": 911
                  }
                ],
                "IsSpecGoroutine": true
              },
              {
                "ID": 188,
                "State": "select",
                "Stack": [
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).match(0x596901fbc70, {0x36e6800, 0x59690e859b0}, 0x1, {0x59690f8cf00, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 558
                  },
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).Should(0x596901fbc70, {0x36e6800, 0x59690e859b0}, {0x59690f8cf00, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 145
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForSucceededPRCount(0x596901f1400, {0x335baf3, 0x27}, {0x32fc699, 0x5}, {0x3321747, 0x13}, 0x1, 0x4e94914f000, 0x6fc23ac00)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 137,
                    "Highlight": true,
                    "Source": [
                      "\t\t\tnamespace, succeededCount, expectedCount, displayType)",
                      "\t\treturn succeededCount",
                      "\t}, timeout, poll).Should(Equal(expectedCount),",
                      "\t\t\"expected %d successful %s PipelineRuns in namespace %s\",",
                      "\t\texpectedCount, displayType, namespace)"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains.func1({{0x335baf3, 0x27}, {0x3379736, 0x2f}, {0x33438c2, 0x1f}, {0x3358b75, 0x26}, {0x596912e7a70, 0x12}, ...}, ...)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 198,
                    "Highlight": true,
                    "Source": [
                      "\t\t\t\tBy(fmt.Sprintf(\"Waiting for build PipelineRun for %s in %s (base: %d)\",",
                      "\t\t\t\t\tcomponent.Name, tenant.Namespace, base.build))",
                      "\t\t\t\twaitForSucceededPRCount(fw, tenant.Namespace, \"build\", component.Name,",
                      "\t\t\t\t\tbase.build+1, PipelineTimeout, PipelinePoll)",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains in goroutine 187",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 189,
                    "Highlight": true,
                    "Source": [
                      "\t\tfor _, comp := range Components {",
                      "\t\t\twg.Add(1)",
                      "\t\t\tgo func(tenant Tenant, component ComponentDef) {",
                      "\t\t\t\tdefer GinkgoRecover()",
                      "\t\t\t\tdefer wg.Done()"
                    ],
                    "SourceHighlight": 2
                  }
                ],
                "IsSpecGoroutine": false
              },
              {
                "ID": 189,
                "State": "select",
                "Stack": [
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).match(0x5969027e700, {0x36e6800, 0x59690e85a70}, 0x1, {0x59690f8cf80, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 558
                  },
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).Should(0x5969027e700, {0x36e6800, 0x59690e85a70}, {0x59690f8cf80, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 145
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForSucceededPRCount(0x596901f1400, {0x335baf3, 0x27}, {0x32fc699, 0x5}, {0x332cec9, 0x17}, 0x1, 0x4e94914f000, 0x6fc23ac00)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 137,
                    "Highlight": true,
                    "Source": [
                      "\t\t\tnamespace, succeededCount, expectedCount, displayType)",
                      "\t\treturn succeededCount",
                      "\t}, timeout, poll).Should(Equal(expectedCount),",
                      "\t\t\"expected %d successful %s PipelineRuns in namespace %s\",",
                      "\t\texpectedCount, displayType, namespace)"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains.func1({{0x335baf3, 0x27}, {0x3379736, 0x2f}, {0x33438c2, 0x1f}, {0x3358b75, 0x26}, {0x596912e7a70, 0x12}, ...}, ...)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 198,
                    "Highlight": true,
                    "Source": [
                      "\t\t\t\tBy(fmt.Sprintf(\"Waiting for build PipelineRun for %s in %s (base: %d)\",",
                      "\t\t\t\t\tcomponent.Name, tenant.Namespace, base.build))",
                      "\t\t\t\twaitForSucceededPRCount(fw, tenant.Namespace, \"build\", component.Name,",
                      "\t\t\t\t\tbase.build+1, PipelineTimeout, PipelinePoll)",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains in goroutine 187",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 189,
                    "Highlight": true,
                    "Source": [
                      "\t\tfor _, comp := range Components {",
                      "\t\t\twg.Add(1)",
                      "\t\t\tgo func(tenant Tenant, component ComponentDef) {",
                      "\t\t\t\tdefer GinkgoRecover()",
                      "\t\t\t\tdefer wg.Done()"
                    ],
                    "SourceHighlight": 2
                  }
                ],
                "IsSpecGoroutine": false
              },
              {
                "ID": 190,
                "State": "select",
                "Stack": [
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).match(0x5969051d2d0, {0x36e6800, 0x5969102e100}, 0x1, {0x59690d14700, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 558
                  },
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).Should(0x5969051d2d0, {0x36e6800, 0x5969102e100}, {0x59690d14700, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 145
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForSucceededPRCount(0x596901f1400, {0x335baf3, 0x27}, {0x32fc699, 0x5}, {0x331b166, 0x11}, 0x1, 0x4e94914f000, 0x6fc23ac00)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 137,
                    "Highlight": true,
                    "Source": [
                      "\t\t\tnamespace, succeededCount, expectedCount, displayType)",
                      "\t\treturn succeededCount",
                      "\t}, timeout, poll).Should(Equal(expectedCount),",
                      "\t\t\"expected %d successful %s PipelineRuns in namespace %s\",",
                      "\t\texpectedCount, displayType, namespace)"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains.func1({{0x335baf3, 0x27}, {0x3379736, 0x2f}, {0x33438c2, 0x1f}, {0x3358b75, 0x26}, {0x596912e7a70, 0x12}, ...}, ...)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 198,
                    "Highlight": true,
                    "Source": [
                      "\t\t\t\tBy(fmt.Sprintf(\"Waiting for build PipelineRun for %s in %s (base: %d)\",",
                      "\t\t\t\t\tcomponent.Name, tenant.Namespace, base.build))",
                      "\t\t\t\twaitForSucceededPRCount(fw, tenant.Namespace, \"build\", component.Name,",
                      "\t\t\t\t\tbase.build+1, PipelineTimeout, PipelinePoll)",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains in goroutine 187",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 189,
                    "Highlight": true,
                    "Source": [
                      "\t\tfor _, comp := range Components {",
                      "\t\t\twg.Add(1)",
                      "\t\t\tgo func(tenant Tenant, component ComponentDef) {",
                      "\t\t\t\tdefer GinkgoRecover()",
                      "\t\t\t\tdefer wg.Done()"
                    ],
                    "SourceHighlight": 2
                  }
                ],
                "IsSpecGoroutine": false
              },
              {
                "ID": 191,
                "State": "select",
                "Stack": [
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).match(0x596901fb7a0, {0x36e6800, 0x59690e85830}, 0x1, {0x59690f8ce00, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 558
                  },
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).Should(0x596901fb7a0, {0x36e6800, 0x59690e85830}, {0x59690f8ce00, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 145
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForSucceededPRCount(0x596901f1400, {0x3358b9b, 0x26}, {0x32fc699, 0x5}, {0x3321747, 0x13}, 0x1, 0x4e94914f000, 0x6fc23ac00)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 137,
                    "Highlight": true,
                    "Source": [
                      "\t\t\tnamespace, succeededCount, expectedCount, displayType)",
                      "\t\treturn succeededCount",
                      "\t}, timeout, poll).Should(Equal(expectedCount),",
                      "\t\t\"expected %d successful %s PipelineRuns in namespace %s\",",
                      "\t\texpectedCount, displayType, namespace)"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains.func1({{0x3358b9b, 0x26}, {0x33751ef, 0x2e}, {0x3340f37, 0x1e}, {0x3355ea6, 0x25}, {0x5969140af18, 0x12}, ...}, ...)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 198,
                    "Highlight": true,
                    "Source": [
                      "\t\t\t\tBy(fmt.Sprintf(\"Waiting for build PipelineRun for %s in %s (base: %d)\",",
                      "\t\t\t\t\tcomponent.Name, tenant.Namespace, base.build))",
                      "\t\t\t\twaitForSucceededPRCount(fw, tenant.Namespace, \"build\", component.Name,",
                      "\t\t\t\t\tbase.build+1, PipelineTimeout, PipelinePoll)",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains in goroutine 187",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 189,
                    "Highlight": true,
                    "Source": [
                      "\t\tfor _, comp := range Components {",
                      "\t\t\twg.Add(1)",
                      "\t\t\tgo func(tenant Tenant, component ComponentDef) {",
                      "\t\t\t\tdefer GinkgoRecover()",
                      "\t\t\t\tdefer wg.Done()"
                    ],
                    "SourceHighlight": 2
                  }
                ],
                "IsSpecGoroutine": false
              },
              {
                "ID": 192,
                "State": "select",
                "Stack": [
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).match(0x596901fba40, {0x36e6800, 0x59690e858f0}, 0x1, {0x59690f8ce80, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 558
                  },
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).Should(0x596901fba40, {0x36e6800, 0x59690e858f0}, {0x59690f8ce80, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 145
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForSucceededPRCount(0x596901f1400, {0x3358b9b, 0x26}, {0x32fc699, 0x5}, {0x332cec9, 0x17}, 0x1, 0x4e94914f000, 0x6fc23ac00)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 137,
                    "Highlight": true,
                    "Source": [
                      "\t\t\tnamespace, succeededCount, expectedCount, displayType)",
                      "\t\treturn succeededCount",
                      "\t}, timeout, poll).Should(Equal(expectedCount),",
                      "\t\t\"expected %d successful %s PipelineRuns in namespace %s\",",
                      "\t\texpectedCount, displayType, namespace)"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains.func1({{0x3358b9b, 0x26}, {0x33751ef, 0x2e}, {0x3340f37, 0x1e}, {0x3355ea6, 0x25}, {0x5969140af18, 0x12}, ...}, ...)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 198,
                    "Highlight": true,
                    "Source": [
                      "\t\t\t\tBy(fmt.Sprintf(\"Waiting for build PipelineRun for %s in %s (base: %d)\",",
                      "\t\t\t\t\tcomponent.Name, tenant.Namespace, base.build))",
                      "\t\t\t\twaitForSucceededPRCount(fw, tenant.Namespace, \"build\", component.Name,",
                      "\t\t\t\t\tbase.build+1, PipelineTimeout, PipelinePoll)",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains in goroutine 187",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 189,
                    "Highlight": true,
                    "Source": [
                      "\t\tfor _, comp := range Components {",
                      "\t\t\twg.Add(1)",
                      "\t\t\tgo func(tenant Tenant, component ComponentDef) {",
                      "\t\t\t\tdefer GinkgoRecover()",
                      "\t\t\t\tdefer wg.Done()"
                    ],
                    "SourceHighlight": 2
                  }
                ],
                "IsSpecGoroutine": false
              },
              {
                "ID": 193,
                "State": "select",
                "Stack": [
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).match(0x596901fb500, {0x36e6800, 0x59690e85750}, 0x1, {0x59690f8cd80, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 558
                  },
                  {
                    "Function": "github.com/onsi/gomega/internal.(*AsyncAssertion).Should(0x596901fb500, {0x36e6800, 0x59690e85750}, {0x59690f8cd80, 0x4, 0x4})",
                    "Filename": "/opt/app-root/src/go/pkg/mod/github.com/onsi/gomega@v1.39.1/internal/async_assertion.go",
                    "Line": 145
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForSucceededPRCount(0x596901f1400, {0x3358b9b, 0x26}, {0x32fc699, 0x5}, {0x331b166, 0x11}, 0x1, 0x4e94914f000, 0x6fc23ac00)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 137,
                    "Highlight": true,
                    "Source": [
                      "\t\t\tnamespace, succeededCount, expectedCount, displayType)",
                      "\t\treturn succeededCount",
                      "\t}, timeout, poll).Should(Equal(expectedCount),",
                      "\t\t\"expected %d successful %s PipelineRuns in namespace %s\",",
                      "\t\texpectedCount, displayType, namespace)"
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains.func1({{0x3358b9b, 0x26}, {0x33751ef, 0x2e}, {0x3340f37, 0x1e}, {0x3355ea6, 0x25}, {0x5969140af18, 0x12}, ...}, ...)",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 198,
                    "Highlight": true,
                    "Source": [
                      "\t\t\t\tBy(fmt.Sprintf(\"Waiting for build PipelineRun for %s in %s (base: %d)\",",
                      "\t\t\t\t\tcomponent.Name, tenant.Namespace, base.build))",
                      "\t\t\t\twaitForSucceededPRCount(fw, tenant.Namespace, \"build\", component.Name,",
                      "\t\t\t\t\tbase.build+1, PipelineTimeout, PipelinePoll)",
                      ""
                    ],
                    "SourceHighlight": 2
                  },
                  {
                    "Function": "github.com/konflux-ci/e2e-tests/tests/disaster-recovery.waitForPipelineChains in goroutine 187",
                    "Filename": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
                    "Line": 189,
                    "Highlight": true,
                    "Source": [
                      "\t\tfor _, comp := range Components {",
                      "\t\t\twg.Add(1)",
                      "\t\t\tgo func(tenant Tenant, component ComponentDef) {",
                      "\t\t\t\tdefer GinkgoRecover()",
                      "\t\t\t\tdefer wg.Done()"
                    ],
                    "SourceHighlight": 2
                  }
                ],
                "IsSpecGoroutine": false
              }
            ]
          }
        },
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "namespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-moshekipod-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nnamespace dr-test-kokohazamar-backwards-compat-dr: 0/1 build PipelineRuns succeeded\nDeleting fork repo DR-MathWizz-utonjc for tenant dr-test-kokohazamar-backwards-compat-dr\nDeleting fork repo DR-MathWizz-vifjws for tenant dr-test-moshekipod-backwards-compat-dr\nVelero pod: node-agent-27fmg | Phase: Running | Ready: true\nVelero pod: node-agent-hcspf | Phase: Running | Ready: true\nVelero pod: node-agent-rqrk2 | Phase: Running | Ready: true\nVelero pod: velero-75d4c77d6d-796dt | Phase: Running | Ready: true\nWARNING: could not get Backup CR \"backup-kokohazamar-backwards-compat-dr\": backups.velero.io \"backup-kokohazamar-backwards-compat-dr\" not found\nWARNING: could not get Restore CR \"restore-backup-kokohazamar-backwards-compat-dr\": restores.velero.io \"restore-backup-kokohazamar-backwards-compat-dr\" not found\nWARNING: could not get Backup CR \"backup-moshekipod-backwards-compat-dr\": backups.velero.io \"backup-moshekipod-backwards-compat-dr\" not found\nWARNING: could not get Restore CR \"restore-backup-moshekipod-backwards-compat-dr\": restores.velero.io \"restore-backup-moshekipod-backwards-compat-dr\" not found\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 74
            },
            "TimelineLocation": {
              "Order": 53,
              "Time": "2026-06-29T11:48:40.021876174Z"
            },
            "Message": "should wait for all build PipelineRuns to succeed",
            "NodeType": "It"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 75
            },
            "TimelineLocation": {
              "Order": 54,
              "Time": "2026-06-29T11:48:40.021911695Z"
            },
            "Message": "Waiting for per-component build → test chains across all tenants"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "TimelineLocation": {
              "Order": 55,
              "Time": "2026-06-29T11:48:40.021935385Z"
            },
            "Message": "Waiting for build PipelineRun for mathwizz-frontend in dr-test-moshekipod-backwards-compat-dr (base: 0)"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "TimelineLocation": {
              "Order": 56,
              "Time": "2026-06-29T11:48:40.021943106Z"
            },
            "Message": "Waiting for build PipelineRun for mathwizz-frontend in dr-test-kokohazamar-backwards-compat-dr (base: 0)"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "TimelineLocation": {
              "Order": 57,
              "Time": "2026-06-29T11:48:40.021987036Z"
            },
            "Message": "Waiting for build PipelineRun for mathwizz-web-server in dr-test-moshekipod-backwards-compat-dr (base: 0)"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "TimelineLocation": {
              "Order": 58,
              "Time": "2026-06-29T11:48:40.022000987Z"
            },
            "Message": "Waiting for build PipelineRun for mathwizz-history-worker in dr-test-moshekipod-backwards-compat-dr (base: 0)"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "TimelineLocation": {
              "Order": 59,
              "Time": "2026-06-29T11:48:40.022011227Z"
            },
            "Message": "Waiting for build PipelineRun for mathwizz-web-server in dr-test-kokohazamar-backwards-compat-dr (base: 0)"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/tenant_application_lifecycle.go",
              "LineNumber": 196
            },
            "TimelineLocation": {
              "Order": 60,
              "Time": "2026-06-29T11:48:40.022025547Z"
            },
            "Message": "Waiting for build PipelineRun for mathwizz-history-worker in dr-test-kokohazamar-backwards-compat-dr (base: 0)"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 74
            },
            "TimelineLocation": {
              "Offset": 82164,
              "Order": 63,
              "Time": "2026-06-29T13:10:35.792128Z"
            },
            "Message": "should wait for all build PipelineRuns to succeed",
            "Duration": 4915770251817,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 44
            },
            "TimelineLocation": {
              "Offset": 82164,
              "Order": 64,
              "Time": "2026-06-29T13:10:35.792420717Z"
            },
            "Message": "DR Backwards-Compat",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 44
            },
            "TimelineLocation": {
              "Offset": 82164,
              "Order": 66,
              "Time": "2026-06-29T13:10:35.912123043Z"
            },
            "Message": "DR Backwards-Compat",
            "Duration": 119702336,
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 153
            },
            "TimelineLocation": {
              "Offset": 82164,
              "Order": 67,
              "Time": "2026-06-29T13:10:35.912398449Z"
            },
            "Message": "DR Backwards-Compat",
            "NodeType": "AfterAll"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 156
            },
            "TimelineLocation": {
              "Offset": 82341,
              "Order": 68,
              "Time": "2026-06-29T13:10:37.234328196Z"
            },
            "Message": "Collecting Velero pod information"
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 156
            },
            "TimelineLocation": {
              "Offset": 82588,
              "Order": 69,
              "Time": "2026-06-29T13:10:37.243313229Z"
            },
            "Message": "Collecting Backup CR status for tenant \"dr-test-kokohazamar-backwards-compat-dr\""
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 156
            },
            "TimelineLocation": {
              "Offset": 82732,
              "Order": 70,
              "Time": "2026-06-29T13:10:37.248342823Z"
            },
            "Message": "Collecting Restore CR status for tenant \"dr-test-kokohazamar-backwards-compat-dr\""
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 156
            },
            "TimelineLocation": {
              "Offset": 82894,
              "Order": 71,
              "Time": "2026-06-29T13:10:37.253240925Z"
            },
            "Message": "Collecting Backup CR status for tenant \"dr-test-moshekipod-backwards-compat-dr\""
          },
          {
            "SpecEventType": "By",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 156
            },
            "TimelineLocation": {
              "Offset": 83036,
              "Order": 72,
              "Time": "2026-06-29T13:10:37.257774588Z"
            },
            "Message": "Collecting Restore CR status for tenant \"dr-test-moshekipod-backwards-compat-dr\""
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
              "LineNumber": 153
            },
            "TimelineLocation": {
              "Offset": 83196,
              "Order": 74,
              "Time": "2026-06-29T13:10:37.262231379Z"
            },
            "Message": "DR Backwards-Compat",
            "Duration": 1349832930,
            "NodeType": "AfterAll"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when creating tenants on the old Konflux version"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 60
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 78
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should merge PaC configuration PRs on forked repos",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.264345137Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when backing up tenant data before upgrade"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 86
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 87
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should create backup CRs for both tenants concurrently",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.264645413Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when simulating disaster by deleting namespaces"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 102
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 103
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should delete both tenant namespaces",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.264857178Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when upgrading Konflux to the new version"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 114
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 115
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should upgrade the cluster and verify Velero survived",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.265059443Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when restoring tenants from backup on the new Konflux version"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 121
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 122
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should restore tenant-1 (KokoHazamar) via velero CLI method",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.26538622Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when restoring tenants from backup on the new Konflux version"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 121
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 126
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should restore tenant-2 (MosheKipod) via oc command method",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.265588535Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when performing post-restore recovery"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 132
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 133
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should rotate SA tokens on both tenants",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.265997864Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when verifying restored tenants"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 141
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 142
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should confirm structural integrity of both tenants",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.266490495Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Backwards-Compat",
          "when verifying restored tenants"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 40
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
            "LineNumber": 141
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_backwards_compat.go",
          "LineNumber": 148
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should confirm functional pipeline execution after restore",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.266843363Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when creating tenants and running initial pipelines"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 47
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 48
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should create both tenants concurrently",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.267049908Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when creating tenants and running initial pipelines"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 47
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 61
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should wait for all build PipelineRuns to succeed",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.267262423Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when creating tenants and running initial pipelines"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 47
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 65
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should merge PaC configuration PRs on forked repos",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.267499788Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when backing up tenant data"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 73
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 74
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should create backup CRs for both tenants concurrently",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.267752624Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when simulating disaster by deleting namespaces"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 89
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 90
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should delete both tenant namespaces",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.267985389Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when restoring from backup"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 98
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 99
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should restore tenant-1 (KokoHazamar) via velero CLI method",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.268167313Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when restoring from backup"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 98
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 103
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should restore tenant-2 (MosheKipod) via oc command method",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.268390149Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when performing post-restore recovery"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 109
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 110
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should rotate SA tokens on both tenants",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.268574183Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when verifying restored tenants"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 118
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 119
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should confirm structural integrity of both tenants",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.268797518Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[disaster-recovery DR Suite]",
          "DR Same-Version Backup/Restore",
          "when verifying restored tenants"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 53
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 25
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
            "LineNumber": 118
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "disaster-recovery",
            "Serial"
          ],
          [],
          []
        ],
        "ContainerHierarchySemVerConstraints": [
          [],
          [],
          []
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/disaster-recovery/dr_same_version.go",
          "LineNumber": 125
        },
        "LeafNodeLabels": [],
        "LeafNodeSemVerConstraints": [],
        "LeafNodeText": "should confirm functional pipeline execution after restore",
        "State": "skipped",
        "StartTime": "2026-06-29T13:10:37.268986052Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 1,
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[upgrade-suite Create users and check their state]"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 37
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "upgrade-verify"
          ]
        ],
        "ContainerHierarchySemVerConstraints": [
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
          "LineNumber": 20
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "Verify AppStudioProvisionedUser",
        "State": "panicked",
        "StartTime": "2026-06-29T11:41:26.7818379Z",
        "EndTime": "2026-06-29T11:41:28.643986979Z",
        "RunTime": 1862149069,
        "ParallelProcess": 12,
        "Failure": {
          "Message": "Test Panicked",
          "Location": {
            "FileName": "/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go",
            "LineNumber": 114,
            "FullStackTrace": "k8s.io/apimachinery/pkg/util/runtime.handleCrash({0x3700a38, 0x2e3fc3fab180}, {0x2d5a360, 0x59798c0}, {0x0, 0x0, 0x452520?})\n\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:114 +0x1a9\nk8s.io/apimachinery/pkg/util/runtime.HandleCrashWithContext({0x3700a38, 0x2e3fc3fab180}, {0x0, 0x0, 0x0})\n\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:78 +0x55\npanic({0x2d5a360?, 0x59798c0?})\n\t/usr/lib/golang/src/runtime/panic.go:860 +0x13a\ngithub.com/konflux-ci/e2e-tests/pkg/sandbox.(*SandboxController).CheckUserCreatedWithSignUp.func1()\n\t/tmp/tmp.2RNFuf6Ple/pkg/sandbox/sandbox.go:319 +0x35\ngithub.com/konflux-ci/e2e-tests/pkg/utils.WaitUntilWithInterval.func1({0x2e3fc3fab201?, 0x2e3fc44c7c10?})\n\t/tmp/tmp.2RNFuf6Ple/pkg/utils/util.go:129 +0x13\nk8s.io/apimachinery/pkg/util/wait.loopConditionUntilContext.func1({0x3700a38?, 0x2e3fc3fab180?}, 0x3700a38?)\n\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/loop.go:53 +0x62\nk8s.io/apimachinery/pkg/util/wait.loopConditionUntilContext({0x3700a38, 0x2e3fc3fab180}, {0x36ebbe0, 0x2e3fc424c520}, 0x1, 0x0, 0x2e3fc4673d88)\n\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/loop.go:54 +0x115\nk8s.io/apimachinery/pkg/util/wait.PollUntilContextTimeout({0x37008e8?, 0x5a21de0?}, 0xee6b2800, 0x425b05?, 0x1, 0x2e3fc44c7d88)\n\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/poll.go:48 +0xa5\ngithub.com/konflux-ci/e2e-tests/pkg/utils.WaitUntilWithInterval(0xa?, 0x2e3fc44c7dd0?, 0x1?)\n\t/tmp/tmp.2RNFuf6Ple/pkg/utils/util.go:129 +0x45\ngithub.com/konflux-ci/e2e-tests/pkg/sandbox.(*SandboxController).CheckUserCreatedWithSignUp(0x3306e64?, {0x3306e64?, 0x3303f67?}, 0x8?)\n\t/tmp/tmp.2RNFuf6Ple/pkg/sandbox/sandbox.go:318 +0x65\ngithub.com/konflux-ci/e2e-tests/pkg/sandbox.(*SandboxController).CheckUserCreated(0x0, {0x3306e64, 0x9})\n\t/tmp/tmp.2RNFuf6Ple/pkg/sandbox/sandbox.go:314 +0x4b\ngithub.com/konflux-ci/e2e-tests/tests/upgrade/verify.VerifyAppStudioProvisionedUser(0x2e3f00000009?)\n\t/tmp/tmp.2RNFuf6Ple/tests/upgrade/verify/verifyUsers.go:14 +0x25\ngithub.com/konflux-ci/e2e-tests/tests/upgrade.init.func1.2()\n\t/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go:21 +0x1a"
          },
          "TimelineLocation": {
            "Offset": 3221,
            "Order": 5,
            "Time": "2026-06-29T11:41:28.643974899Z"
          },
          "ForwardedPanic": "runtime error: invalid memory address or nil pointer dereference",
          "FailureNodeContext": "leaf-node",
          "FailureNodeType": "It",
          "FailureNodeLocation": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
            "LineNumber": 20
          },
          "ProgressReport": {
            "LeafNodeLocation": {},
            "SpecStartTime": "0001-01-01T00:00:00Z",
            "CurrentNodeLocation": {},
            "CurrentNodeStartTime": "0001-01-01T00:00:00Z",
            "CurrentStepLocation": {},
            "CurrentStepStartTime": "0001-01-01T00:00:00Z",
            "TimelineLocation": {
              "Time": "0001-01-01T00:00:00Z"
            }
          }
        },
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "\"msg\"=\"Observed a panic\" \"error\"=null \"panic\"=\"runtime error: invalid memory address or nil pointer dereference\" \"panicGoValue\"=\"\\\"invalid memory address or nil pointer dereference\\\"\" \"stacktrace\"=\"goroutine 77 [running]:\\nk8s.io/apimachinery/pkg/util/runtime.logPanic({0x3700990, 0x2e3fc4f1f0b0}, {0x2d5a360, 0x59798c0})\\n\\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:132 +0xbc\\nk8s.io/apimachinery/pkg/util/runtime.handleCrash({0x3700a38, 0x2e3fc3fab180}, {0x2d5a360, 0x59798c0}, {0x0, 0x0, 0x452520?})\\n\\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:107 +0x116\\nk8s.io/apimachinery/pkg/util/runtime.HandleCrashWithContext({0x3700a38, 0x2e3fc3fab180}, {0x0, 0x0, 0x0})\\n\\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:78 +0x55\\npanic({0x2d5a360?, 0x59798c0?})\\n\\t/usr/lib/golang/src/runtime/panic.go:860 +0x13a\\ngithub.com/konflux-ci/e2e-tests/pkg/sandbox.(*SandboxController).CheckUserCreatedWithSignUp.func1()\\n\\t/tmp/tmp.2RNFuf6Ple/pkg/sandbox/sandbox.go:319 +0x35\\ngithub.com/konflux-ci/e2e-tests/pkg/utils.WaitUntilWithInterval.func1({0x2e3fc3fab201?, 0x2e3fc44c7c10?})\\n\\t/tmp/tmp.2RNFuf6Ple/pkg/utils/util.go:129 +0x13\\nk8s.io/apimachinery/pkg/util/wait.loopConditionUntilContext.func1({0x3700a38?, 0x2e3fc3fab180?}, 0x3700a38?)\\n\\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/loop.go:53 +0x62\\nk8s.io/apimachinery/pkg/util/wait.loopConditionUntilContext({0x3700a38, 0x2e3fc3fab180}, {0x36ebbe0, 0x2e3fc424c520}, 0x1, 0x0, 0x2e3fc44c7d88)\\n\\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/loop.go:54 +0x115\\nk8s.io/apimachinery/pkg/util/wait.PollUntilContextTimeout({0x37008e8?, 0x5a21de0?}, 0xee6b2800, 0x425b05?, 0x1, 0x2e3fc44c7d88)\\n\\t/opt/app-root/src/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/poll.go:48 +0xa5\\ngithub.com/konflux-ci/e2e-tests/pkg/utils.WaitUntilWithInterval(0xa?, 0x2e3fc44c7dd0?, 0x1?)\\n\\t/tmp/tmp.2RNFuf6Ple/pkg/utils/util.go:129 +0x45\\ngithub.com/konflux-ci/e2e-tests/pkg/sandbox.(*SandboxController).CheckUserCreatedWithSignUp(0x3306e64?, {0x3306e64?, 0x3303f67?}, 0x8?)\\n\\t/tmp/tmp.2RNFuf6Ple/pkg/sandbox/sandbox.go:318 +0x65\\ngithub.com/konflux-ci/e2e-tests/pkg/sandbox.(*SandboxController).CheckUserCreated(0x0, {0x3306e64, 0x9})\\n\\t/tmp/tmp.2RNFuf6Ple/pkg/sandbox/sandbox.go:314 +0x4b\\ngithub.com/konflux-ci/e2e-tests/tests/upgrade/verify.VerifyAppStudioProvisionedUser(0x2e3f00000009?)\\n\\t/tmp/tmp.2RNFuf6Ple/tests/upgrade/verify/verifyUsers.go:14 +0x25\\ngithub.com/konflux-ci/e2e-tests/tests/upgrade.init.func1.2()\\n\\t/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go:21 +0x1a\\ngithub.com/onsi/ginkgo/v2/internal.extractBodyFunction.func3({0x41bf5d?, 0x2e3fc4d9c910?})\\n\\t/opt/app-root/src/go/pkg/mod/github.com/onsi/ginkgo/v2@v2.28.0/internal/node.go:585 +0x13\\ngithub.com/onsi/ginkgo/v2/internal.(*Suite).runNode.func3()\\n\\t/opt/app-root/src/go/pkg/mod/github.com/onsi/ginkgo/v2@v2.28.0/internal/suite.go:946 +0x379\\ncreated by github.com/onsi/ginkgo/v2/internal.(*Suite).runNode in goroutine 38\\n\\t/opt/app-root/src/go/pkg/mod/github.com/onsi/ginkgo/v2@v2.28.0/internal/suite.go:911 +0xe26\\n\"\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
              "LineNumber": 16
            },
            "TimelineLocation": {
              "Order": 1,
              "Time": "2026-06-29T11:41:26.782067985Z"
            },
            "Message": "[upgrade-suite Create users and check their state]",
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
              "LineNumber": 16
            },
            "TimelineLocation": {
              "Order": 3,
              "Time": "2026-06-29T11:41:28.643453267Z"
            },
            "Message": "[upgrade-suite Create users and check their state]",
            "Duration": 1861385262,
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
              "LineNumber": 20
            },
            "TimelineLocation": {
              "Order": 4,
              "Time": "2026-06-29T11:41:28.643647242Z"
            },
            "Message": "Verify AppStudioProvisionedUser",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
              "LineNumber": 20
            },
            "TimelineLocation": {
              "Offset": 3221,
              "Order": 6,
              "Time": "2026-06-29T11:41:28.643984519Z"
            },
            "Message": "Verify AppStudioProvisionedUser",
            "Duration": 337278,
            "NodeType": "It"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[upgrade-suite Create users and check their state]"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 37
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "upgrade-verify"
          ]
        ],
        "ContainerHierarchySemVerConstraints": [
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
          "LineNumber": 24
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "creates AppStudioDeactivatedUser",
        "State": "skipped",
        "StartTime": "2026-06-29T11:41:28.644658464Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 12,
        "Failure": {
          "Message": "Spec skipped because an earlier spec in an ordered container failed",
          "Location": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
            "LineNumber": 24
          },
          "TimelineLocation": {
            "Offset": 3221,
            "Order": 7,
            "Time": "2026-06-29T11:41:28.644657014Z"
          },
          "FailureNodeContext": "leaf-node",
          "FailureNodeType": "It",
          "FailureNodeLocation": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
            "LineNumber": 24
          },
          "ProgressReport": {
            "LeafNodeLocation": {},
            "SpecStartTime": "0001-01-01T00:00:00Z",
            "CurrentNodeLocation": {},
            "CurrentNodeStartTime": "0001-01-01T00:00:00Z",
            "CurrentStepLocation": {},
            "CurrentStepStartTime": "0001-01-01T00:00:00Z",
            "TimelineLocation": {
              "Time": "0001-01-01T00:00:00Z"
            }
          }
        },
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[upgrade-suite Create users and check their state]"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 37
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "upgrade-verify"
          ]
        ],
        "ContainerHierarchySemVerConstraints": [
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
          "LineNumber": 28
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "creates AppStudioBannedUser",
        "State": "skipped",
        "StartTime": "2026-06-29T11:41:28.64491031Z",
        "EndTime": "0001-01-01T00:00:00Z",
        "RunTime": 0,
        "ParallelProcess": 12,
        "Failure": {
          "Message": "Spec skipped because an earlier spec in an ordered container failed",
          "Location": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
            "LineNumber": 28
          },
          "TimelineLocation": {
            "Offset": 3221,
            "Order": 8,
            "Time": "2026-06-29T11:41:28.64490876Z"
          },
          "FailureNodeContext": "leaf-node",
          "FailureNodeType": "It",
          "FailureNodeLocation": {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/upgrade/verifyWorkload.go",
            "LineNumber": 28
          },
          "ProgressReport": {
            "LeafNodeLocation": {},
            "SpecStartTime": "0001-01-01T00:00:00Z",
            "CurrentNodeLocation": {},
            "CurrentNodeStartTime": "0001-01-01T00:00:00Z",
            "CurrentStepLocation": {},
            "CurrentStepStartTime": "0001-01-01T00:00:00Z",
            "TimelineLocation": {
              "Time": "0001-01-01T00:00:00Z"
            }
          }
        },
        "NumAttempts": 0,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "infrastructure is running"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 42
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ]
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 43
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies if the chains controller is running",
        "State": "passed",
        "StartTime": "2026-06-29T11:41:26.782441623Z",
        "EndTime": "2026-06-29T11:41:28.487678741Z",
        "RunTime": 1705237118,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 31
            },
            "TimelineLocation": {
              "Order": 1,
              "Time": "2026-06-29T11:41:26.782565436Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 31
            },
            "TimelineLocation": {
              "Order": 3,
              "Time": "2026-06-29T11:41:28.372382448Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 1589817012,
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 43
            },
            "TimelineLocation": {
              "Order": 4,
              "Time": "2026-06-29T11:41:28.372546632Z"
            },
            "Message": "verifies if the chains controller is running",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 43
            },
            "TimelineLocation": {
              "Order": 6,
              "Time": "2026-06-29T11:41:28.487411635Z"
            },
            "Message": "verifies if the chains controller is running",
            "Duration": 114865004,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Order": 7,
              "Time": "2026-06-29T11:41:28.48763566Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Order": 9,
              "Time": "2026-06-29T11:41:28.487673811Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 38151,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "infrastructure is running"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 42
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ]
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 48
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies the signing secret is present",
        "State": "passed",
        "StartTime": "2026-06-29T11:41:28.488133221Z",
        "EndTime": "2026-06-29T11:41:28.500696633Z",
        "RunTime": 12563411,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 48
            },
            "TimelineLocation": {
              "Order": 10,
              "Time": "2026-06-29T11:41:28.488267515Z"
            },
            "Message": "verifies the signing secret is present",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 48
            },
            "TimelineLocation": {
              "Order": 12,
              "Time": "2026-06-29T11:41:28.500491989Z"
            },
            "Message": "verifies the signing secret is present",
            "Duration": 12224484,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Order": 13,
              "Time": "2026-06-29T11:41:28.500658793Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Order": 15,
              "Time": "2026-06-29T11:41:28.500692133Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 33310,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ]
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 115
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "creates signature and attestation",
        "State": "passed",
        "StartTime": "2026-06-29T11:41:28.501029641Z",
        "EndTime": "2026-06-29T11:45:33.758618522Z",
        "RunTime": 245257588871,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Creating Pipeline \"buildah-demo-xvsujenlfw\"\nWaiting for pipeline \"buildah-demo-xvsujenlfw\" to finish\nThe pipeline named \"buildah-demo-xvsujenlfw\" in namespace \"chains-e2e-nsqz\" succeeded\nThe image signed by Tekton Chains is quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\nfailed to get cosign result for image quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4: failed to find cosign results for image quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4: error when getting attestation tag: cannot get manifest digest from quay.io/redhat-appstudio-qe/test-images:sha256-0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4.att image. response body: {\"tags\": [], \"page\": 1, \"has_additional\": false}\n\n\nfailed to get cosign result for image quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4: failed to find cosign results for image quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4: error when getting attestation tag: cannot get manifest digest from quay.io/redhat-appstudio-qe/test-images:sha256-0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4.att image. response body: {\"tags\": [], \"page\": 1, \"has_additional\": false}\n\n\nCosign verify pass with .att and .sig ImageStreamTags found for quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 73
            },
            "TimelineLocation": {
              "Order": 16,
              "Time": "2026-06-29T11:41:28.501139443Z"
            },
            "Message": "test creating and signing an image and task",
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 73
            },
            "TimelineLocation": {
              "Offset": 360,
              "Order": 18,
              "Time": "2026-06-29T11:45:31.058432431Z"
            },
            "Message": "test creating and signing an image and task",
            "Duration": 242557292988,
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 115
            },
            "TimelineLocation": {
              "Offset": 360,
              "Order": 19,
              "Time": "2026-06-29T11:45:31.058578324Z"
            },
            "Message": "creates signature and attestation",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 115
            },
            "TimelineLocation": {
              "Offset": 1778,
              "Order": 21,
              "Time": "2026-06-29T11:45:33.758350487Z"
            },
            "Message": "creates signature and attestation",
            "Duration": 2699772181,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 1778,
              "Order": 22,
              "Time": "2026-06-29T11:45:33.758575401Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 1778,
              "Order": 24,
              "Time": "2026-06-29T11:45:33.758615602Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 40212,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 177
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "succeeds when policy is met",
        "State": "passed",
        "StartTime": "2026-06-29T11:45:33.759017982Z",
        "EndTime": "2026-06-29T11:45:58.022027154Z",
        "RunTime": 24263009172,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Copy public key from openshift-pipelines/signing-secrets to a new secret\nConfigured Rekor host: https://rekor.sigstore.dev\nUsing verify EC task bundle: quay.io/conforma/tekton-task:kf-b345847182602d9a5ce9e957fa76fe02575c8018@sha256:7df8d121c09999d0376e189c1eb8a8263078aab697aa5ee966512f581427a6ce\nCreating Pipeline \"verify-enterprise-contract-run-mkkch\"\nWaiting for pipeline \"verify-enterprise-contract-run-mkkch\" to finish\n*** TaskRun status:\nartifacts: {}\ncompletionTime: \"2026-06-29T11:45:57Z\"\nconditions:\n- lastTransitionTime: \"2026-06-29T11:45:57Z\"\n  message: All Steps have completed executing\n  reason: Succeeded\n  status: \"True\"\n  type: Succeeded\npodName: verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod\nprovenance:\n  featureFlags:\n    awaitSidecarReadiness: true\n    coschedule: workspaces\n    enableAPIFields: alpha\n    enableParamEnum: true\n    enableProvenanceInStatus: true\n    enforceNonfalsifiability: none\n    maxResultSize: 4096\n    resultExtractionMethod: termination-message\n    runningInEnvWithInjectedSidecars: true\n    verificationNoMatchPolicy: ignore\n  refSource:\n    digest:\n      sha256: 7df8d121c09999d0376e189c1eb8a8263078aab697aa5ee966512f581427a6ce\n    entryPoint: verify-enterprise-contract\n    uri: quay.io/conforma/tekton-task\nresults:\n- name: TEST_OUTPUT\n  type: string\n  value: |\n    {\"timestamp\":\"1782733555\",\"namespace\":\"\",\"successes\":5,\"failures\":0,\"warnings\":0,\"result\":\"SUCCESS\"}\nspanContext:\n  traceparent: 00-0e672974cc4256a12b64d0e99fde8a0e-ecd242732b49a09e-01\nstartTime: \"2026-06-29T11:45:34Z\"\nsteps:\n- container: step-initialize-tuf\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: initialize-tuf\n  provenance: {}\n  terminated:\n    containerID: cri-o://115996efb7aa0a06cd2e86b94dcd96157170f5d09427accc6453f78f8940c418\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:48Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:48Z\"\n  terminationReason: Skipped\n- container: step-reduce\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: reduce\n  provenance: {}\n  terminated:\n    containerID: cri-o://bd76c31d11f2a464ef839b4c1e4c1449237b56c2ec5a6ce333d66e26453b6662\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:48Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:48Z\"\n  terminationReason: Completed\n- container: step-validate\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: validate\n  provenance: {}\n  terminated:\n    containerID: cri-o://e2c436c19a574ba4787bdc200166f97bb163ab53d642707891ded090fefe5de6\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:55Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:48Z\"\n  terminationReason: Completed\n- container: step-report-json\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: report-json\n  provenance: {}\n  terminated:\n    containerID: cri-o://a8de716cc0bd0f133f49c3a85ab4a41c16abcd8cc3c2b68939ba47de4190b05f\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:55Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:55Z\"\n  terminationReason: Completed\n- container: step-summary\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: summary\n  provenance: {}\n  terminated:\n    containerID: cri-o://c271934d96d1b8ecdde0a557231898736af589089b8fae6bd8f5e4a0b9058575\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:55Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:55Z\"\n  terminationReason: Completed\n- container: step-version\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: version\n  provenance: {}\n  terminated:\n    containerID: cri-o://e4cda22058717d4b1ece2bad2a22801e4893e003eeaf5a2974e1c45980b4b1d3\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:55Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:55Z\"\n  terminationReason: Completed\n- container: step-show-config\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: show-config\n  provenance: {}\n  terminated:\n    containerID: cri-o://23a3ed12143c70076819b126eccbdb88e3c6baf73ec26975b883d4d773fdbf22\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:56Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:56Z\"\n  terminationReason: Completed\n- container: step-detailed-report\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: detailed-report\n  provenance: {}\n  terminated:\n    containerID: cri-o://8d1aea20d684f409746327224b761b2c8058ec5fbbfff009d9bef999886c6f7d\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:56Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:56Z\"\n  terminationReason: Completed\n- container: step-assert\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: assert\n  provenance: {}\n  terminated:\n    containerID: cri-o://b7249957f35011504b177bebf1a0daecffdb31f393c672b08d0fb40a0482d8da\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:45:56Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733555\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":0,\\\"warnings\\\":0,\\\"result\\\":\\\"SUCCESS\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:45:56Z\"\n  terminationReason: Completed\ntaskSpec:\n  description: Verify the enterprise contract is met\n  params:\n  - description: |\n      Spec section of an ApplicationSnapshot resource. Not all fields of the\n      resource are required. A minimal example:\n\n      ```json\n        {\n          \"components\": [\n            {\n              \"containerImage\": \"quay.io/example/repo:latest\"\n            }\n          ]\n        }\n      ```\n\n      Each `containerImage` in the `components` array is validated.\n    name: IMAGES\n    type: string\n  - default: enterprise-contract-service/default\n    description: |\n      Name of the policy configuration (EnterpriseContractPolicy\n      resource) to use. `namespace/name` or `name` syntax supported. If\n      namespace is omitted the namespace where the task runs is used.\n      You can also specify a policy configuration using a git url, e.g.\n      `github.com/conforma/config//slsa3`.\n    name: POLICY_CONFIGURATION\n    type: string\n  - default: \"\"\n    description: Public key used to verify traditional long-lived signatures. Must\n      be a valid k8s cosign reference, e.g. k8s://my-space/my-secret where my-secret\n      contains the expected cosign.pub attribute. Required for traditional signing\n      key verification. Will be ignored if any of CERTIFICATE_IDENTITY, CERTIFICATE_IDENTITY_REGEXP,\n      CERTIFICATE_OIDC_ISSUER, or CERTIFICATE_OIDC_ISSUER_REGEXP are provided.\n    name: PUBLIC_KEY\n    type: string\n  - default: \"\"\n    description: Rekor host for transparency log lookups\n    name: REKOR_HOST\n    type: string\n  - default: \"\"\n    description: Expected identity in the signing certificate for keyless verification.\n      This should be the email or URI that was used when signing. You should provide\n      both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for keyless verification.\n      The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_IDENTITY\n    type: string\n  - default: \"\"\n    description: Expected OIDC issuer in the signing certificate for keyless verification.\n      This should match the issuer that provided the identity token used for signing.\n      You should provide both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for\n      keyless verification. The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_OIDC_ISSUER\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_IDENTITY but the value is a regexp that will\n      be matched. Note that CERTIFICATE_IDENTITY takes precedence over this if both\n      are present.\n    name: CERTIFICATE_IDENTITY_REGEXP\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_OIDC_ISSUER but a regexp that will be matched.\n      Note that CERTIFICATE_OIDC_ISSUER takes precedence over this if both are present.\n    name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    type: string\n  - default: \"false\"\n    description: Skip Rekor transparency log checks during validation. Compatible\n      with traditional signing secret signature checks only. If any of the CERTIFICATE_*\n      keyless verification params are present, this value is disregarded and Rekor\n      transparency log checks are included.\n    name: IGNORE_REKOR\n    type: string\n  - default: \"\"\n    description: TUF mirror URL. Provide a value when NOT using public sigstore deployment.\n    name: TUF_MIRROR\n    type: string\n  - default: \"\"\n    description: |\n      Path to a directory containing SSL certs to be used when communicating\n      with external services. This is useful when using the integrated registry\n      and a local instance of Rekor on a development cluster which may use\n      certificates issued by a not-commonly trusted root CA. In such cases,\n      `/var/run/secrets/kubernetes.io/serviceaccount` is a good value. Multiple\n      paths can be provided by using the `:` separator.\n    name: SSL_CERT_DIR\n    type: string\n  - default: trusted-ca\n    description: The name of the ConfigMap to read CA bundle data from.\n    name: CA_TRUST_CONFIGMAP_NAME\n    type: string\n  - default: ca-bundle.crt\n    description: The name of the key in the ConfigMap that contains the CA bundle\n      data.\n    name: CA_TRUST_CONFIG_MAP_KEY\n    type: string\n  - default: \"true\"\n    description: Include rule titles and descriptions in the output. Set to `\"false\"`\n      to disable it.\n    name: INFO\n    type: string\n  - default: \"true\"\n    description: Fail the task if policy fails. Set to `\"false\"` to disable it.\n    name: STRICT\n    type: string\n  - default: /tekton/home\n    description: Value for the HOME environment variable.\n    name: HOMEDIR\n    type: string\n  - default: now\n    description: Run policy checks with the provided time.\n    name: EFFECTIVE_TIME\n    type: string\n  - default: \"\"\n    description: Merge additional Rego variables into the policy data. Use syntax\n      \"key=value,key2=value2...\"\n    name: EXTRA_RULE_DATA\n    type: string\n  - default: \"1\"\n    description: Number of parallel workers to use for policy evaluation.\n    name: WORKERS\n    type: string\n  - default: \"false\"\n    description: Reduce the Snapshot to only the component whose build caused the\n      Snapshot to be created\n    name: SINGLE_COMPONENT\n    type: string\n  - default: unknown\n    description: |\n      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\n    type: string\n  - default: \"\"\n    description: |\n      Kubernetes namespace where the SINGLE_COMPONENT_NAME is found. Only used when single component mode is enabled.\n    name: SINGLE_COMPONENT_CUSTOM_RESOURCE_NS\n    type: string\n  - default: 1s\n    description: Base duration for exponential backoff calculation (e.g., \"1s\", \"500ms\")\n    name: RETRY_DURATION\n    type: string\n  - default: \"2.0\"\n    description: Exponential backoff multiplier (e.g., \"2.0\", \"1.5\")\n    name: RETRY_FACTOR\n    type: string\n  - default: \"0.1\"\n    description: Randomness factor for backoff calculation (0.0-1.0, e.g., \"0.1\",\n      \"0.2\")\n    name: RETRY_JITTER\n    type: string\n  - default: \"3\"\n    description: Maximum number of retry attempts\n    name: RETRY_MAX_RETRY\n    type: string\n  - default: 3s\n    description: Maximum wait time between retries (e.g., \"3s\", \"10s\")\n    name: RETRY_MAX_WAIT\n    type: string\n  results:\n  - description: Short summary of the policy evaluation for each image\n    name: TEST_OUTPUT\n    type: string\n  stepTemplate:\n    computeResources: {}\n    env:\n    - name: HOME\n      value: /tekton/home\n  steps:\n  - args:\n    - sigstore\n    - initialize\n    - --mirror\n    - \"\"\n    - --root\n    - /root.json\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: initialize-tuf\n    when:\n    - operator: notin\n      values:\n      - \"\"\n  - command:\n    - reduce-snapshot.sh\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    env:\n    - name: SNAPSHOT\n      value: '{\"components\":[{\"name\":\"\",\"containerImage\":\"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\":{}}],\"artifacts\":{}}'\n    - name: SINGLE_COMPONENT\n      value: \"false\"\n    - name: CUSTOM_RESOURCE\n      value: unknown\n    - name: CUSTOM_RESOURCE_NAMESPACE\n    - name: SNAPSHOT_PATH\n      value: /tekton/home/snapshot.json\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: reduce\n    onError: continue\n  - computeResources:\n      limits:\n        memory: 2Gi\n      requests:\n        cpu: 1800m\n        memory: 2Gi\n    env:\n    - name: POLICY_CONFIGURATION\n      value: ec-policy\n    - name: PUBLIC_KEY\n      value: k8s://chains-e2e-nsqz/cosign-public-key\n    - name: CERTIFICATE_IDENTITY\n    - name: CERTIFICATE_OIDC_ISSUER\n    - name: CERTIFICATE_IDENTITY_REGEXP\n    - name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    - name: REKOR_HOST\n    - name: IGNORE_REKOR\n      value: \"true\"\n    - name: WORKERS\n      value: \"1\"\n    - name: INFO\n      value: \"true\"\n    - name: EFFECTIVE_TIME\n      value: now\n    - name: EXTRA_RULE_DATA\n    - name: RETRY_MAX_WAIT\n      value: 3s\n    - name: RETRY_MAX_RETRY\n      value: \"3\"\n    - name: RETRY_DURATION\n      value: 1s\n    - name: RETRY_FACTOR\n      value: \"2.0\"\n    - name: RETRY_JITTER\n      value: \"0.1\"\n    - name: HOMEDIR\n      value: /tekton/home\n    - name: SSL_CERT_DIR\n      value: /tekton-custom-certs:/etc/ssl/certs:/etc/pki/tls/certs:/system/etc/security/cacerts:/var/run/secrets/kubernetes.io/serviceaccount\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: validate\n    onError: continue\n    script: |\n      #!/bin/bash\n      set -euo pipefail\n\n      cmd_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\n      if [ -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        )\n      else\n        # Assume traditional signing secret verification\n        cmd_args+=(\n          --public-key=\"${PUBLIC_KEY}\"\n          --ignore-rekor=\"${IGNORE_REKOR}\"\n        )\n      fi\n\n      cmd_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        --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\n      # Execute Conforma with constructed arguments\n      exec ec \"${cmd_args[@]}\"\n    volumeMounts:\n    - mountPath: /etc/pki/tls/certs/ca-custom-bundle.crt\n      name: trusted-ca\n      readOnly: true\n      subPath: ca-bundle.crt\n  - args:\n    - jq . /tekton/home/report-json.json | awk '{gsub(/^ +/, \"\"); acc += length; if\n      (acc \u003e= 8000) { printf \"\\n\"; acc=length } printf $0 }'\n    command:\n    - sh\n    - -c\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: report-json\n    onError: continue\n  - args:\n    - .\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: summary\n    onError: continue\n  - args:\n    - version\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: version\n  - args:\n    - '{policy: .policy, key: .key, \"effective-time\": .[\"effective-time\"]}'\n    - /tekton/home/report-json.json\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: show-config\n  - args:\n    - /tekton/home/text-report.txt\n    command:\n    - cat\n    computeResources: {}\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: detailed-report\n    onError: continue\n  - args:\n    - --argjson\n    - strict\n    - \"true\"\n    - -e\n    - |\n      .result == \"SUCCESS\" or .result == \"WARNING\" or ($strict | not)\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: assert\n  volumes:\n  - configMap:\n      items:\n      - key: ca-bundle.crt\n        path: ca-bundle.crt\n      name: trusted-ca\n      optional: true\n    name: trusted-ca\n  workspaces:\n  - description: The workspace where the snapshot spec json file resides\n    name: data\n    optional: true\n\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-initialize-tuf':\n----- START -----2026/06/29 11:45:48 INFO Step was skipped due to when expressions were evaluated to false.\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-reduce':\n----- START -----Single Component mode? false\n{\n  \"components\": [\n    {\n      \"name\": \"\",\n      \"containerImage\": \"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\n      \"source\": {}\n    }\n  ],\n  \"artifacts\": {}\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-validate':\n----- START ---------- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-report-json':\n----- START -----{\"success\": true,\"components\": [{\"name\": \"\",\"containerImage\": \"quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\": {},\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.allowed_predicate_types_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed predicate types provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.attestation_predicate_type_accepted\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.\",\"title\": \"Expected attestation predicate type found\"}}],\"success\": true,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIQC3QyIFTGa6sgFme5IEeWbWT7UgGvivY2r8OhmAHVUD8gIgYX5MtgVWYAq2wPpoU+ymd0JESwNe9vAeZA48tbo5r6w=\"},{\"keyid\": \"\",\"sig\": \"MEYCIQDCtuShicMm3Jdiu5bIXGQg5Jl/7ZYgDgGb91YJ4qhUTAIhAIhniEKkzwNumIwNDsNw+5Fmu9tLD/8ZW6EXT0FEX027\"},{\"keyid\": \"\",\"sig\": \"MEUCIE1wpQmdGOPS3MJdE83ZtDemA3lC/N97wiv4k8nTnCLbAiEA8QbXfY+5i2FDdGCcn5UztcH/1LhT1DiErdrZNJzZ/yE=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:p/N1gcM0+crKuYuWkMpunLQiIz6aAACjyRFQnSHwmIY\",\"sig\": \"MEUCIQDQsAeUOEJmPpZ0ehKO7Tr6kNsxCFRLPSYbDoe7zSkyzwIgMOKOJQ1SyKHA2UhrLP03Ekreb0AvirmumjygTQwPE+0=\"}]}]}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"slsa_provenance_available\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:45:49.098668905Z\"}----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-summary':\n----- START -----{\n  \"timestamp\": \"1782733555\",\n  \"namespace\": \"\",\n  \"successes\": 5,\n  \"failures\": 0,\n  \"warnings\": 0,\n  \"result\": \"SUCCESS\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-version':\n----- START -----Version            v0.9.25\nSource ID          b345847182602d9a5ce9e957fa76fe02575c8018\nChange date        2026-04-27 12:52:43 +0000 UTC (8 weeks ago)\nECC                v0.1.7\nOPA                v1.15.2\nConftest           v0.68.2\nCosign             v3.0.4\nSigstore           v1.10.4\nRekor              v1.5.0\nTekton Pipeline    v1.9.2\nKubernetes Client  v0.35.0\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-show-config':\n----- START -----{\n  \"policy\": {\n    \"name\": \"Default\",\n    \"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\n    \"sources\": [\n      {\n        \"name\": \"Default\",\n        \"policy\": [\n          \"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"\n        ],\n        \"data\": [\n          \"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\n          \"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\n          \"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\n          \"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"\n        ],\n        \"config\": {\n          \"include\": [\n            \"slsa_provenance_available\"\n          ]\n        }\n      }\n    ],\n    \"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"\n  },\n  \"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\n  \"effective-time\": \"2026-06-29T11:45:49.098668905Z\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-detailed-report':\n----- START -----Success: true\nResult: SUCCESS\nViolations: 0, Warnings: 0, Successes: 5\nComponent: \nImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-f12d89953a4f0713357be7cbfd1bfdbf-pod', container 'step-assert':\n----- START -----true\n----- END -----\nMake sure TaskRun verify-enterprise-contract of PipelineRun verify-enterprise-contract-run-mkkch succeeded\nMake sure result for TaskRun \"verify-enterprise-contract\" succeeded\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 133
            },
            "TimelineLocation": {
              "Order": 25,
              "Time": "2026-06-29T11:45:33.759113934Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 133
            },
            "TimelineLocation": {
              "Offset": 297,
              "Order": 27,
              "Time": "2026-06-29T11:45:33.786702234Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 27588300,
            "NodeType": "BeforeAll"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Offset": 297,
              "Order": 28,
              "Time": "2026-06-29T11:45:33.786811667Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Offset": 297,
              "Order": 30,
              "Time": "2026-06-29T11:45:33.801295162Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 14483525,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 177
            },
            "TimelineLocation": {
              "Offset": 297,
              "Order": 31,
              "Time": "2026-06-29T11:45:33.801513457Z"
            },
            "Message": "succeeds when policy is met",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 177
            },
            "TimelineLocation": {
              "Offset": 28204,
              "Order": 33,
              "Time": "2026-06-29T11:45:58.021789349Z"
            },
            "Message": "succeeds when policy is met",
            "Duration": 24220275882,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 28204,
              "Order": 34,
              "Time": "2026-06-29T11:45:58.021974913Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 28204,
              "Order": 36,
              "Time": "2026-06-29T11:45:58.022023514Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 48591,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 197
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "does not pass when tests are not satisfied on non-strict mode",
        "State": "passed",
        "StartTime": "2026-06-29T11:45:58.022636788Z",
        "EndTime": "2026-06-29T11:46:13.188574888Z",
        "RunTime": 15165938140,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Creating Pipeline \"verify-enterprise-contract-run-wvc56\"\nWaiting for pipeline \"verify-enterprise-contract-run-wvc56\" to finish\n*** TaskRun status:\nartifacts: {}\ncompletionTime: \"2026-06-29T11:46:12Z\"\nconditions:\n- lastTransitionTime: \"2026-06-29T11:46:12Z\"\n  message: All Steps have completed executing\n  reason: Succeeded\n  status: \"True\"\n  type: Succeeded\npodName: verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod\nprovenance:\n  featureFlags:\n    awaitSidecarReadiness: true\n    coschedule: workspaces\n    enableAPIFields: alpha\n    enableParamEnum: true\n    enableProvenanceInStatus: true\n    enforceNonfalsifiability: none\n    maxResultSize: 4096\n    resultExtractionMethod: termination-message\n    runningInEnvWithInjectedSidecars: true\n    verificationNoMatchPolicy: ignore\n  refSource:\n    digest:\n      sha256: 7df8d121c09999d0376e189c1eb8a8263078aab697aa5ee966512f581427a6ce\n    entryPoint: verify-enterprise-contract\n    uri: quay.io/conforma/tekton-task\nresults:\n- name: TEST_OUTPUT\n  type: string\n  value: |\n    {\"timestamp\":\"1782733570\",\"namespace\":\"\",\"successes\":5,\"failures\":1,\"warnings\":0,\"result\":\"FAILURE\"}\nspanContext:\n  traceparent: 00-bdade78a98bb503fc33bd911ecdb496e-d1a628435c7ab0a7-01\nstartTime: \"2026-06-29T11:45:58Z\"\nsteps:\n- container: step-initialize-tuf\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: initialize-tuf\n  provenance: {}\n  terminated:\n    containerID: cri-o://2fae877e76c58cdafb87c50e397c7e184f2437f43c9c96d21c9dd6c0e60ecd76\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:04Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:04Z\"\n  terminationReason: Skipped\n- container: step-reduce\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: reduce\n  provenance: {}\n  terminated:\n    containerID: cri-o://4e92eb929eaf0a3c0dfd3e66aa113db3666db549ff1d3ba7c4509f800eb4d0ae\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:04Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:04Z\"\n  terminationReason: Completed\n- container: step-validate\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: validate\n  provenance: {}\n  terminated:\n    containerID: cri-o://6b06bb64a94228507e056d42c93ddd23e67326f1b67942d5997d5a070b944de2\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:10Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:04Z\"\n  terminationReason: Completed\n- container: step-report-json\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: report-json\n  provenance: {}\n  terminated:\n    containerID: cri-o://1b4a3faafc3faf529f28268d7981c14b1bae17bff60daf52bf38bc2d602d8d51\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:11Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:11Z\"\n  terminationReason: Completed\n- container: step-summary\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: summary\n  provenance: {}\n  terminated:\n    containerID: cri-o://eea7766b0b62e9323cfd8e4e9d845464b577f621e4936b5ab223aa7598efde7b\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:11Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:11Z\"\n  terminationReason: Completed\n- container: step-version\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: version\n  provenance: {}\n  terminated:\n    containerID: cri-o://36fcd6bbecc1cd49ba6ecd2ad72122547f0ea824f704327e5dc961ca409f7f65\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:11Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:11Z\"\n  terminationReason: Completed\n- container: step-show-config\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: show-config\n  provenance: {}\n  terminated:\n    containerID: cri-o://035e61f2fa441c6b77881c5c4f5b91486ffc7be3b0782ae21937104f50eb4411\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:11Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:11Z\"\n  terminationReason: Completed\n- container: step-detailed-report\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: detailed-report\n  provenance: {}\n  terminated:\n    containerID: cri-o://87044160e34a1461542b74e740c33ef19a2fb539c04e5d89516cd9f76a7f08f4\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:11Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:11Z\"\n  terminationReason: Completed\n- container: step-assert\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: assert\n  provenance: {}\n  terminated:\n    containerID: cri-o://4467dc357571a8f65fe5fc2dd0f52da8c838bb914eb1ea1b709517ce88e60053\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:11Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733570\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:11Z\"\n  terminationReason: Completed\ntaskSpec:\n  description: Verify the enterprise contract is met\n  params:\n  - description: |\n      Spec section of an ApplicationSnapshot resource. Not all fields of the\n      resource are required. A minimal example:\n\n      ```json\n        {\n          \"components\": [\n            {\n              \"containerImage\": \"quay.io/example/repo:latest\"\n            }\n          ]\n        }\n      ```\n\n      Each `containerImage` in the `components` array is validated.\n    name: IMAGES\n    type: string\n  - default: enterprise-contract-service/default\n    description: |\n      Name of the policy configuration (EnterpriseContractPolicy\n      resource) to use. `namespace/name` or `name` syntax supported. If\n      namespace is omitted the namespace where the task runs is used.\n      You can also specify a policy configuration using a git url, e.g.\n      `github.com/conforma/config//slsa3`.\n    name: POLICY_CONFIGURATION\n    type: string\n  - default: \"\"\n    description: Public key used to verify traditional long-lived signatures. Must\n      be a valid k8s cosign reference, e.g. k8s://my-space/my-secret where my-secret\n      contains the expected cosign.pub attribute. Required for traditional signing\n      key verification. Will be ignored if any of CERTIFICATE_IDENTITY, CERTIFICATE_IDENTITY_REGEXP,\n      CERTIFICATE_OIDC_ISSUER, or CERTIFICATE_OIDC_ISSUER_REGEXP are provided.\n    name: PUBLIC_KEY\n    type: string\n  - default: \"\"\n    description: Rekor host for transparency log lookups\n    name: REKOR_HOST\n    type: string\n  - default: \"\"\n    description: Expected identity in the signing certificate for keyless verification.\n      This should be the email or URI that was used when signing. You should provide\n      both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for keyless verification.\n      The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_IDENTITY\n    type: string\n  - default: \"\"\n    description: Expected OIDC issuer in the signing certificate for keyless verification.\n      This should match the issuer that provided the identity token used for signing.\n      You should provide both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for\n      keyless verification. The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_OIDC_ISSUER\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_IDENTITY but the value is a regexp that will\n      be matched. Note that CERTIFICATE_IDENTITY takes precedence over this if both\n      are present.\n    name: CERTIFICATE_IDENTITY_REGEXP\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_OIDC_ISSUER but a regexp that will be matched.\n      Note that CERTIFICATE_OIDC_ISSUER takes precedence over this if both are present.\n    name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    type: string\n  - default: \"false\"\n    description: Skip Rekor transparency log checks during validation. Compatible\n      with traditional signing secret signature checks only. If any of the CERTIFICATE_*\n      keyless verification params are present, this value is disregarded and Rekor\n      transparency log checks are included.\n    name: IGNORE_REKOR\n    type: string\n  - default: \"\"\n    description: TUF mirror URL. Provide a value when NOT using public sigstore deployment.\n    name: TUF_MIRROR\n    type: string\n  - default: \"\"\n    description: |\n      Path to a directory containing SSL certs to be used when communicating\n      with external services. This is useful when using the integrated registry\n      and a local instance of Rekor on a development cluster which may use\n      certificates issued by a not-commonly trusted root CA. In such cases,\n      `/var/run/secrets/kubernetes.io/serviceaccount` is a good value. Multiple\n      paths can be provided by using the `:` separator.\n    name: SSL_CERT_DIR\n    type: string\n  - default: trusted-ca\n    description: The name of the ConfigMap to read CA bundle data from.\n    name: CA_TRUST_CONFIGMAP_NAME\n    type: string\n  - default: ca-bundle.crt\n    description: The name of the key in the ConfigMap that contains the CA bundle\n      data.\n    name: CA_TRUST_CONFIG_MAP_KEY\n    type: string\n  - default: \"true\"\n    description: Include rule titles and descriptions in the output. Set to `\"false\"`\n      to disable it.\n    name: INFO\n    type: string\n  - default: \"true\"\n    description: Fail the task if policy fails. Set to `\"false\"` to disable it.\n    name: STRICT\n    type: string\n  - default: /tekton/home\n    description: Value for the HOME environment variable.\n    name: HOMEDIR\n    type: string\n  - default: now\n    description: Run policy checks with the provided time.\n    name: EFFECTIVE_TIME\n    type: string\n  - default: \"\"\n    description: Merge additional Rego variables into the policy data. Use syntax\n      \"key=value,key2=value2...\"\n    name: EXTRA_RULE_DATA\n    type: string\n  - default: \"1\"\n    description: Number of parallel workers to use for policy evaluation.\n    name: WORKERS\n    type: string\n  - default: \"false\"\n    description: Reduce the Snapshot to only the component whose build caused the\n      Snapshot to be created\n    name: SINGLE_COMPONENT\n    type: string\n  - default: unknown\n    description: |\n      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\n    type: string\n  - default: \"\"\n    description: |\n      Kubernetes namespace where the SINGLE_COMPONENT_NAME is found. Only used when single component mode is enabled.\n    name: SINGLE_COMPONENT_CUSTOM_RESOURCE_NS\n    type: string\n  - default: 1s\n    description: Base duration for exponential backoff calculation (e.g., \"1s\", \"500ms\")\n    name: RETRY_DURATION\n    type: string\n  - default: \"2.0\"\n    description: Exponential backoff multiplier (e.g., \"2.0\", \"1.5\")\n    name: RETRY_FACTOR\n    type: string\n  - default: \"0.1\"\n    description: Randomness factor for backoff calculation (0.0-1.0, e.g., \"0.1\",\n      \"0.2\")\n    name: RETRY_JITTER\n    type: string\n  - default: \"3\"\n    description: Maximum number of retry attempts\n    name: RETRY_MAX_RETRY\n    type: string\n  - default: 3s\n    description: Maximum wait time between retries (e.g., \"3s\", \"10s\")\n    name: RETRY_MAX_WAIT\n    type: string\n  results:\n  - description: Short summary of the policy evaluation for each image\n    name: TEST_OUTPUT\n    type: string\n  stepTemplate:\n    computeResources: {}\n    env:\n    - name: HOME\n      value: /tekton/home\n  steps:\n  - args:\n    - sigstore\n    - initialize\n    - --mirror\n    - \"\"\n    - --root\n    - /root.json\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: initialize-tuf\n    when:\n    - operator: notin\n      values:\n      - \"\"\n  - command:\n    - reduce-snapshot.sh\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    env:\n    - name: SNAPSHOT\n      value: '{\"components\":[{\"name\":\"\",\"containerImage\":\"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\":{}}],\"artifacts\":{}}'\n    - name: SINGLE_COMPONENT\n      value: \"false\"\n    - name: CUSTOM_RESOURCE\n      value: unknown\n    - name: CUSTOM_RESOURCE_NAMESPACE\n    - name: SNAPSHOT_PATH\n      value: /tekton/home/snapshot.json\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: reduce\n    onError: continue\n  - computeResources:\n      limits:\n        memory: 2Gi\n      requests:\n        cpu: 1800m\n        memory: 2Gi\n    env:\n    - name: POLICY_CONFIGURATION\n      value: ec-policy\n    - name: PUBLIC_KEY\n      value: k8s://chains-e2e-nsqz/cosign-public-key\n    - name: CERTIFICATE_IDENTITY\n    - name: CERTIFICATE_OIDC_ISSUER\n    - name: CERTIFICATE_IDENTITY_REGEXP\n    - name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    - name: REKOR_HOST\n    - name: IGNORE_REKOR\n      value: \"true\"\n    - name: WORKERS\n      value: \"1\"\n    - name: INFO\n      value: \"true\"\n    - name: EFFECTIVE_TIME\n      value: now\n    - name: EXTRA_RULE_DATA\n    - name: RETRY_MAX_WAIT\n      value: 3s\n    - name: RETRY_MAX_RETRY\n      value: \"3\"\n    - name: RETRY_DURATION\n      value: 1s\n    - name: RETRY_FACTOR\n      value: \"2.0\"\n    - name: RETRY_JITTER\n      value: \"0.1\"\n    - name: HOMEDIR\n      value: /tekton/home\n    - name: SSL_CERT_DIR\n      value: /tekton-custom-certs:/etc/ssl/certs:/etc/pki/tls/certs:/system/etc/security/cacerts:/var/run/secrets/kubernetes.io/serviceaccount\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: validate\n    onError: continue\n    script: |\n      #!/bin/bash\n      set -euo pipefail\n\n      cmd_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\n      if [ -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        )\n      else\n        # Assume traditional signing secret verification\n        cmd_args+=(\n          --public-key=\"${PUBLIC_KEY}\"\n          --ignore-rekor=\"${IGNORE_REKOR}\"\n        )\n      fi\n\n      cmd_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        --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\n      # Execute Conforma with constructed arguments\n      exec ec \"${cmd_args[@]}\"\n    volumeMounts:\n    - mountPath: /etc/pki/tls/certs/ca-custom-bundle.crt\n      name: trusted-ca\n      readOnly: true\n      subPath: ca-bundle.crt\n  - args:\n    - jq . /tekton/home/report-json.json | awk '{gsub(/^ +/, \"\"); acc += length; if\n      (acc \u003e= 8000) { printf \"\\n\"; acc=length } printf $0 }'\n    command:\n    - sh\n    - -c\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: report-json\n    onError: continue\n  - args:\n    - .\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: summary\n    onError: continue\n  - args:\n    - version\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: version\n  - args:\n    - '{policy: .policy, key: .key, \"effective-time\": .[\"effective-time\"]}'\n    - /tekton/home/report-json.json\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: show-config\n  - args:\n    - /tekton/home/text-report.txt\n    command:\n    - cat\n    computeResources: {}\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: detailed-report\n    onError: continue\n  - args:\n    - --argjson\n    - strict\n    - \"false\"\n    - -e\n    - |\n      .result == \"SUCCESS\" or .result == \"WARNING\" or ($strict | not)\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: assert\n  volumes:\n  - configMap:\n      items:\n      - key: ca-bundle.crt\n        path: ca-bundle.crt\n      name: trusted-ca\n      optional: true\n    name: trusted-ca\n  workspaces:\n  - description: The workspace where the snapshot spec json file resides\n    name: data\n    optional: true\n\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-initialize-tuf':\n----- START -----2026/06/29 11:46:04 INFO Step was skipped due to when expressions were evaluated to false.\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-reduce':\n----- START -----Single Component mode? false\n{\n  \"components\": [\n    {\n      \"name\": \"\",\n      \"containerImage\": \"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\n      \"source\": {}\n    }\n  ],\n  \"artifacts\": {}\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-validate':\n----- START ---------- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-report-json':\n----- START -----{\"success\": false,\"components\": [{\"name\": \"\",\"containerImage\": \"quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\": {},\"violations\": [{\"msg\": \"No test data found\",\"metadata\": {\"code\": \"test.test_data_found\",\"collections\": [\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma expects to find test result data. To exclude this rule add \\\"test.test_data_found\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"Confirm at least one task in the build pipeline contains a result named TEST_OUTPUT.\",\"title\": \"Test data found in task results\"}}],\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"test.rule_data_provided\",\"collections\": [\"redhat\",\"policy_data\"],\"description\": \"Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_tests_results`, `failed_tests_results`, `informative_tests`, `erred_tests_results`, `skipped_tests_results`, and `warned_tests_results`.\",\"title\": \"Rule data provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"test.test_all_images\",\"collections\": [\"redhat\"],\"description\": \"Ensure that task producing the IMAGES_PROCESSED result contains the digests of the built image.\",\"effective_on\": \"2024-05-29T00:00:00Z\",\"title\": \"Image digest is present in IMAGES_PROCESSED result\"}}],\"success\": false,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIQC3QyIFTGa6sgFme5IEeWbWT7UgGvivY2r8OhmAHVUD8gIgYX5MtgVWYAq2wPpoU+ymd0JESwNe9vAeZA48tbo5r6w=\"},{\"keyid\": \"\",\"sig\": \"MEYCIQDCtuShicMm3Jdiu5bIXGQg5Jl/7ZYgDgGb91YJ4qhUTAIhAIhniEKkzwNumIwNDsNw+5Fmu9tLD/8ZW6EXT0FEX027\"},{\"keyid\": \"\",\"sig\": \"MEUCIE1wpQmdGOPS3MJdE83ZtDemA3lC/N97wiv4k8nTnCLbAiEA8QbXfY+5i2FDdGCcn5UztcH/1LhT1DiErdrZNJzZ/yE=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:p/N1gcM0+crKuYuWkMpunLQiIz6aAACjyRFQnSHwmIY\",\"sig\": \"MEUCIQDQsAeUOEJmPpZ0ehKO7Tr6kNsxCFRLPSYbDoe7zSkyzwIgMOKOJQ1SyKHA2UhrLP03Ekreb0AvirmumjygTQwPE+0=\"}]}]}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"test\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:46:04.597766235Z\"}----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-summary':\n----- START -----{\n  \"timestamp\": \"1782733570\",\n  \"namespace\": \"\",\n  \"successes\": 5,\n  \"failures\": 1,\n  \"warnings\": 0,\n  \"result\": \"FAILURE\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-version':\n----- START -----Version            v0.9.25\nSource ID          b345847182602d9a5ce9e957fa76fe02575c8018\nChange date        2026-04-27 12:52:43 +0000 UTC (8 weeks ago)\nECC                v0.1.7\nOPA                v1.15.2\nConftest           v0.68.2\nCosign             v3.0.4\nSigstore           v1.10.4\nRekor              v1.5.0\nTekton Pipeline    v1.9.2\nKubernetes Client  v0.35.0\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-show-config':\n----- START -----{\n  \"policy\": {\n    \"name\": \"Default\",\n    \"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\n    \"sources\": [\n      {\n        \"name\": \"Default\",\n        \"policy\": [\n          \"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"\n        ],\n        \"data\": [\n          \"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\n          \"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\n          \"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\n          \"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"\n        ],\n        \"config\": {\n          \"include\": [\n            \"test\"\n          ]\n        }\n      }\n    ],\n    \"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"\n  },\n  \"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\n  \"effective-time\": \"2026-06-29T11:46:04.597766235Z\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-detailed-report':\n----- START -----Success: false\nResult: FAILURE\nViolations: 1, Warnings: 0, Successes: 5\nComponent: \nImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n\nResults:\n✕ [Violation] test.test_data_found\n  ImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n  Reason: No test data found\n  Title: Test data found in task results\n  Description: Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma\n  expects to find test result data. To exclude this rule add \"test.test_data_found\" to the `exclude` section of the policy\n  configuration.\n  Solution: Confirm at least one task in the build pipeline contains a result named TEST_OUTPUT.\n\nFor more information about policy issues, see the policy documentation: https://conforma.dev/docs/policy/\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-53493a7dcec58abe98b1e4e4a04d7835-pod', container 'step-assert':\n----- START -----true\n----- END -----\nMake sure TaskRun verify-enterprise-contract of PipelineRun verify-enterprise-contract-run-wvc56 succeeded\nMake sure result for TaskRun \"verify-enterprise-contract\" succeeded\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 37,
              "Time": "2026-06-29T11:45:58.02275044Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 39,
              "Time": "2026-06-29T11:45:58.03340182Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 10651380,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 197
            },
            "TimelineLocation": {
              "Order": 40,
              "Time": "2026-06-29T11:45:58.033520923Z"
            },
            "Message": "does not pass when tests are not satisfied on non-strict mode",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 197
            },
            "TimelineLocation": {
              "Offset": 29084,
              "Order": 42,
              "Time": "2026-06-29T11:46:13.18823454Z"
            },
            "Message": "does not pass when tests are not satisfied on non-strict mode",
            "Duration": 15154713647,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 29084,
              "Order": 43,
              "Time": "2026-06-29T11:46:13.188483666Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 29084,
              "Order": 45,
              "Time": "2026-06-29T11:46:13.188567448Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 83782,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 225
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "fails when tests are not satisfied on strict mode",
        "State": "passed",
        "StartTime": "2026-06-29T11:46:13.189126601Z",
        "EndTime": "2026-06-29T11:46:29.355744506Z",
        "RunTime": 16166617915,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Creating Pipeline \"verify-enterprise-contract-run-nhg4k\"\nWaiting for pipeline \"verify-enterprise-contract-run-nhg4k\" to finish\n*** TaskRun status:\nartifacts: {}\ncompletionTime: \"2026-06-29T11:46:28Z\"\nconditions:\n- lastTransitionTime: \"2026-06-29T11:46:28Z\"\n  message: '\"step-assert\" exited with code 1: Error'\n  reason: StepFailed\n  status: \"False\"\n  type: Succeeded\npodName: verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod\nprovenance:\n  featureFlags:\n    awaitSidecarReadiness: true\n    coschedule: workspaces\n    enableAPIFields: alpha\n    enableParamEnum: true\n    enableProvenanceInStatus: true\n    enforceNonfalsifiability: none\n    maxResultSize: 4096\n    resultExtractionMethod: termination-message\n    runningInEnvWithInjectedSidecars: true\n    verificationNoMatchPolicy: ignore\n  refSource:\n    digest:\n      sha256: 7df8d121c09999d0376e189c1eb8a8263078aab697aa5ee966512f581427a6ce\n    entryPoint: verify-enterprise-contract\n    uri: quay.io/conforma/tekton-task\nresults:\n- name: TEST_OUTPUT\n  type: string\n  value: |\n    {\"timestamp\":\"1782733586\",\"namespace\":\"\",\"successes\":5,\"failures\":1,\"warnings\":0,\"result\":\"FAILURE\"}\nspanContext:\n  traceparent: 00-362be4ccc7ac39d282fc368b27f896f2-9b51d0ad6a75ec91-01\nstartTime: \"2026-06-29T11:46:13Z\"\nsteps:\n- container: step-initialize-tuf\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: initialize-tuf\n  provenance: {}\n  terminated:\n    containerID: cri-o://d8c8c206f5ed988bfa090a92fa3992d65c4305ec62dc8319ea252aeaba6cc0fa\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:19Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:19Z\"\n  terminationReason: Skipped\n- container: step-reduce\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: reduce\n  provenance: {}\n  terminated:\n    containerID: cri-o://ef3853077f6014ee931571646edd2002871d2b0571dea60a25e419f0685964dd\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:19Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:19Z\"\n  terminationReason: Completed\n- container: step-validate\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: validate\n  provenance: {}\n  terminated:\n    containerID: cri-o://c5a637f79f901b65767e9d17907e514858b23da6109e8677b60ff235d0b42da4\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:26Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:19Z\"\n  terminationReason: Completed\n- container: step-report-json\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: report-json\n  provenance: {}\n  terminated:\n    containerID: cri-o://4a5d674b5aeaf4e25a712c01ffbef0fd827b42ebb9cc836ab27bd3a7566cb88d\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:26Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:26Z\"\n  terminationReason: Completed\n- container: step-summary\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: summary\n  provenance: {}\n  terminated:\n    containerID: cri-o://72053bb09afeaf0116a1badd5f9569c5589e993508ab4e122f1aa048ed5f3046\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:26Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:26Z\"\n  terminationReason: Completed\n- container: step-version\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: version\n  provenance: {}\n  terminated:\n    containerID: cri-o://e4d8777fd8fc6708579918bf21d075740ae21afc37b26a360175b9cbb5ba0dae\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:27Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:26Z\"\n  terminationReason: Completed\n- container: step-show-config\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: show-config\n  provenance: {}\n  terminated:\n    containerID: cri-o://afb3d7438ba155a4f48cfd6a3cb69d07538fa354ed9871121caf51a1714508d4\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:27Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:27Z\"\n  terminationReason: Completed\n- container: step-detailed-report\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: detailed-report\n  provenance: {}\n  terminated:\n    containerID: cri-o://742a00856267eedb073998a194cb67519456b457509e97d89ecf70fe8825c416\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:27Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:27Z\"\n  terminationReason: Completed\n- container: step-assert\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: assert\n  provenance: {}\n  terminated:\n    containerID: cri-o://2a5c52d43b48d8f146625c2983351e0ed36bbbd95df74785a37236c581e9c7f6\n    exitCode: 1\n    finishedAt: \"2026-06-29T11:46:27Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733586\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":5,\\\"failures\\\":1,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Error\n    startedAt: \"2026-06-29T11:46:27Z\"\n  terminationReason: Error\ntaskSpec:\n  description: Verify the enterprise contract is met\n  params:\n  - description: |\n      Spec section of an ApplicationSnapshot resource. Not all fields of the\n      resource are required. A minimal example:\n\n      ```json\n        {\n          \"components\": [\n            {\n              \"containerImage\": \"quay.io/example/repo:latest\"\n            }\n          ]\n        }\n      ```\n\n      Each `containerImage` in the `components` array is validated.\n    name: IMAGES\n    type: string\n  - default: enterprise-contract-service/default\n    description: |\n      Name of the policy configuration (EnterpriseContractPolicy\n      resource) to use. `namespace/name` or `name` syntax supported. If\n      namespace is omitted the namespace where the task runs is used.\n      You can also specify a policy configuration using a git url, e.g.\n      `github.com/conforma/config//slsa3`.\n    name: POLICY_CONFIGURATION\n    type: string\n  - default: \"\"\n    description: Public key used to verify traditional long-lived signatures. Must\n      be a valid k8s cosign reference, e.g. k8s://my-space/my-secret where my-secret\n      contains the expected cosign.pub attribute. Required for traditional signing\n      key verification. Will be ignored if any of CERTIFICATE_IDENTITY, CERTIFICATE_IDENTITY_REGEXP,\n      CERTIFICATE_OIDC_ISSUER, or CERTIFICATE_OIDC_ISSUER_REGEXP are provided.\n    name: PUBLIC_KEY\n    type: string\n  - default: \"\"\n    description: Rekor host for transparency log lookups\n    name: REKOR_HOST\n    type: string\n  - default: \"\"\n    description: Expected identity in the signing certificate for keyless verification.\n      This should be the email or URI that was used when signing. You should provide\n      both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for keyless verification.\n      The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_IDENTITY\n    type: string\n  - default: \"\"\n    description: Expected OIDC issuer in the signing certificate for keyless verification.\n      This should match the issuer that provided the identity token used for signing.\n      You should provide both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for\n      keyless verification. The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_OIDC_ISSUER\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_IDENTITY but the value is a regexp that will\n      be matched. Note that CERTIFICATE_IDENTITY takes precedence over this if both\n      are present.\n    name: CERTIFICATE_IDENTITY_REGEXP\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_OIDC_ISSUER but a regexp that will be matched.\n      Note that CERTIFICATE_OIDC_ISSUER takes precedence over this if both are present.\n    name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    type: string\n  - default: \"false\"\n    description: Skip Rekor transparency log checks during validation. Compatible\n      with traditional signing secret signature checks only. If any of the CERTIFICATE_*\n      keyless verification params are present, this value is disregarded and Rekor\n      transparency log checks are included.\n    name: IGNORE_REKOR\n    type: string\n  - default: \"\"\n    description: TUF mirror URL. Provide a value when NOT using public sigstore deployment.\n    name: TUF_MIRROR\n    type: string\n  - default: \"\"\n    description: |\n      Path to a directory containing SSL certs to be used when communicating\n      with external services. This is useful when using the integrated registry\n      and a local instance of Rekor on a development cluster which may use\n      certificates issued by a not-commonly trusted root CA. In such cases,\n      `/var/run/secrets/kubernetes.io/serviceaccount` is a good value. Multiple\n      paths can be provided by using the `:` separator.\n    name: SSL_CERT_DIR\n    type: string\n  - default: trusted-ca\n    description: The name of the ConfigMap to read CA bundle data from.\n    name: CA_TRUST_CONFIGMAP_NAME\n    type: string\n  - default: ca-bundle.crt\n    description: The name of the key in the ConfigMap that contains the CA bundle\n      data.\n    name: CA_TRUST_CONFIG_MAP_KEY\n    type: string\n  - default: \"true\"\n    description: Include rule titles and descriptions in the output. Set to `\"false\"`\n      to disable it.\n    name: INFO\n    type: string\n  - default: \"true\"\n    description: Fail the task if policy fails. Set to `\"false\"` to disable it.\n    name: STRICT\n    type: string\n  - default: /tekton/home\n    description: Value for the HOME environment variable.\n    name: HOMEDIR\n    type: string\n  - default: now\n    description: Run policy checks with the provided time.\n    name: EFFECTIVE_TIME\n    type: string\n  - default: \"\"\n    description: Merge additional Rego variables into the policy data. Use syntax\n      \"key=value,key2=value2...\"\n    name: EXTRA_RULE_DATA\n    type: string\n  - default: \"1\"\n    description: Number of parallel workers to use for policy evaluation.\n    name: WORKERS\n    type: string\n  - default: \"false\"\n    description: Reduce the Snapshot to only the component whose build caused the\n      Snapshot to be created\n    name: SINGLE_COMPONENT\n    type: string\n  - default: unknown\n    description: |\n      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\n    type: string\n  - default: \"\"\n    description: |\n      Kubernetes namespace where the SINGLE_COMPONENT_NAME is found. Only used when single component mode is enabled.\n    name: SINGLE_COMPONENT_CUSTOM_RESOURCE_NS\n    type: string\n  - default: 1s\n    description: Base duration for exponential backoff calculation (e.g., \"1s\", \"500ms\")\n    name: RETRY_DURATION\n    type: string\n  - default: \"2.0\"\n    description: Exponential backoff multiplier (e.g., \"2.0\", \"1.5\")\n    name: RETRY_FACTOR\n    type: string\n  - default: \"0.1\"\n    description: Randomness factor for backoff calculation (0.0-1.0, e.g., \"0.1\",\n      \"0.2\")\n    name: RETRY_JITTER\n    type: string\n  - default: \"3\"\n    description: Maximum number of retry attempts\n    name: RETRY_MAX_RETRY\n    type: string\n  - default: 3s\n    description: Maximum wait time between retries (e.g., \"3s\", \"10s\")\n    name: RETRY_MAX_WAIT\n    type: string\n  results:\n  - description: Short summary of the policy evaluation for each image\n    name: TEST_OUTPUT\n    type: string\n  stepTemplate:\n    computeResources: {}\n    env:\n    - name: HOME\n      value: /tekton/home\n  steps:\n  - args:\n    - sigstore\n    - initialize\n    - --mirror\n    - \"\"\n    - --root\n    - /root.json\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: initialize-tuf\n    when:\n    - operator: notin\n      values:\n      - \"\"\n  - command:\n    - reduce-snapshot.sh\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    env:\n    - name: SNAPSHOT\n      value: '{\"components\":[{\"name\":\"\",\"containerImage\":\"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\":{}}],\"artifacts\":{}}'\n    - name: SINGLE_COMPONENT\n      value: \"false\"\n    - name: CUSTOM_RESOURCE\n      value: unknown\n    - name: CUSTOM_RESOURCE_NAMESPACE\n    - name: SNAPSHOT_PATH\n      value: /tekton/home/snapshot.json\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: reduce\n    onError: continue\n  - computeResources:\n      limits:\n        memory: 2Gi\n      requests:\n        cpu: 1800m\n        memory: 2Gi\n    env:\n    - name: POLICY_CONFIGURATION\n      value: ec-policy\n    - name: PUBLIC_KEY\n      value: k8s://chains-e2e-nsqz/cosign-public-key\n    - name: CERTIFICATE_IDENTITY\n    - name: CERTIFICATE_OIDC_ISSUER\n    - name: CERTIFICATE_IDENTITY_REGEXP\n    - name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    - name: REKOR_HOST\n    - name: IGNORE_REKOR\n      value: \"true\"\n    - name: WORKERS\n      value: \"1\"\n    - name: INFO\n      value: \"true\"\n    - name: EFFECTIVE_TIME\n      value: now\n    - name: EXTRA_RULE_DATA\n    - name: RETRY_MAX_WAIT\n      value: 3s\n    - name: RETRY_MAX_RETRY\n      value: \"3\"\n    - name: RETRY_DURATION\n      value: 1s\n    - name: RETRY_FACTOR\n      value: \"2.0\"\n    - name: RETRY_JITTER\n      value: \"0.1\"\n    - name: HOMEDIR\n      value: /tekton/home\n    - name: SSL_CERT_DIR\n      value: /tekton-custom-certs:/etc/ssl/certs:/etc/pki/tls/certs:/system/etc/security/cacerts:/var/run/secrets/kubernetes.io/serviceaccount\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: validate\n    onError: continue\n    script: |\n      #!/bin/bash\n      set -euo pipefail\n\n      cmd_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\n      if [ -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        )\n      else\n        # Assume traditional signing secret verification\n        cmd_args+=(\n          --public-key=\"${PUBLIC_KEY}\"\n          --ignore-rekor=\"${IGNORE_REKOR}\"\n        )\n      fi\n\n      cmd_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        --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\n      # Execute Conforma with constructed arguments\n      exec ec \"${cmd_args[@]}\"\n    volumeMounts:\n    - mountPath: /etc/pki/tls/certs/ca-custom-bundle.crt\n      name: trusted-ca\n      readOnly: true\n      subPath: ca-bundle.crt\n  - args:\n    - jq . /tekton/home/report-json.json | awk '{gsub(/^ +/, \"\"); acc += length; if\n      (acc \u003e= 8000) { printf \"\\n\"; acc=length } printf $0 }'\n    command:\n    - sh\n    - -c\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: report-json\n    onError: continue\n  - args:\n    - .\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: summary\n    onError: continue\n  - args:\n    - version\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: version\n  - args:\n    - '{policy: .policy, key: .key, \"effective-time\": .[\"effective-time\"]}'\n    - /tekton/home/report-json.json\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: show-config\n  - args:\n    - /tekton/home/text-report.txt\n    command:\n    - cat\n    computeResources: {}\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: detailed-report\n    onError: continue\n  - args:\n    - --argjson\n    - strict\n    - \"true\"\n    - -e\n    - |\n      .result == \"SUCCESS\" or .result == \"WARNING\" or ($strict | not)\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: assert\n  volumes:\n  - configMap:\n      items:\n      - key: ca-bundle.crt\n        path: ca-bundle.crt\n      name: trusted-ca\n      optional: true\n    name: trusted-ca\n  workspaces:\n  - description: The workspace where the snapshot spec json file resides\n    name: data\n    optional: true\n\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-initialize-tuf':\n----- START -----2026/06/29 11:46:19 INFO Step was skipped due to when expressions were evaluated to false.\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-reduce':\n----- START -----Single Component mode? false\n{\n  \"components\": [\n    {\n      \"name\": \"\",\n      \"containerImage\": \"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\n      \"source\": {}\n    }\n  ],\n  \"artifacts\": {}\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-validate':\n----- START ---------- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-report-json':\n----- START -----{\"success\": false,\"components\": [{\"name\": \"\",\"containerImage\": \"quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\": {},\"violations\": [{\"msg\": \"No test data found\",\"metadata\": {\"code\": \"test.test_data_found\",\"collections\": [\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma expects to find test result data. To exclude this rule add \\\"test.test_data_found\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"Confirm at least one task in the build pipeline contains a result named TEST_OUTPUT.\",\"title\": \"Test data found in task results\"}}],\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"test.rule_data_provided\",\"collections\": [\"redhat\",\"policy_data\"],\"description\": \"Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_tests_results`, `failed_tests_results`, `informative_tests`, `erred_tests_results`, `skipped_tests_results`, and `warned_tests_results`.\",\"title\": \"Rule data provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"test.test_all_images\",\"collections\": [\"redhat\"],\"description\": \"Ensure that task producing the IMAGES_PROCESSED result contains the digests of the built image.\",\"effective_on\": \"2024-05-29T00:00:00Z\",\"title\": \"Image digest is present in IMAGES_PROCESSED result\"}}],\"success\": false,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIQC3QyIFTGa6sgFme5IEeWbWT7UgGvivY2r8OhmAHVUD8gIgYX5MtgVWYAq2wPpoU+ymd0JESwNe9vAeZA48tbo5r6w=\"},{\"keyid\": \"\",\"sig\": \"MEYCIQDCtuShicMm3Jdiu5bIXGQg5Jl/7ZYgDgGb91YJ4qhUTAIhAIhniEKkzwNumIwNDsNw+5Fmu9tLD/8ZW6EXT0FEX027\"},{\"keyid\": \"\",\"sig\": \"MEUCIE1wpQmdGOPS3MJdE83ZtDemA3lC/N97wiv4k8nTnCLbAiEA8QbXfY+5i2FDdGCcn5UztcH/1LhT1DiErdrZNJzZ/yE=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:p/N1gcM0+crKuYuWkMpunLQiIz6aAACjyRFQnSHwmIY\",\"sig\": \"MEUCIQDQsAeUOEJmPpZ0ehKO7Tr6kNsxCFRLPSYbDoe7zSkyzwIgMOKOJQ1SyKHA2UhrLP03Ekreb0AvirmumjygTQwPE+0=\"}]}]}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"test\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:46:19.90624334Z\"}----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-summary':\n----- START -----{\n  \"timestamp\": \"1782733586\",\n  \"namespace\": \"\",\n  \"successes\": 5,\n  \"failures\": 1,\n  \"warnings\": 0,\n  \"result\": \"FAILURE\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-version':\n----- START -----Version            v0.9.25\nSource ID          b345847182602d9a5ce9e957fa76fe02575c8018\nChange date        2026-04-27 12:52:43 +0000 UTC (8 weeks ago)\nECC                v0.1.7\nOPA                v1.15.2\nConftest           v0.68.2\nCosign             v3.0.4\nSigstore           v1.10.4\nRekor              v1.5.0\nTekton Pipeline    v1.9.2\nKubernetes Client  v0.35.0\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-show-config':\n----- START -----{\n  \"policy\": {\n    \"name\": \"Default\",\n    \"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\n    \"sources\": [\n      {\n        \"name\": \"Default\",\n        \"policy\": [\n          \"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"\n        ],\n        \"data\": [\n          \"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\n          \"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\n          \"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\n          \"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"\n        ],\n        \"config\": {\n          \"include\": [\n            \"test\"\n          ]\n        }\n      }\n    ],\n    \"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"\n  },\n  \"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\n  \"effective-time\": \"2026-06-29T11:46:19.90624334Z\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-detailed-report':\n----- START -----Success: false\nResult: FAILURE\nViolations: 1, Warnings: 0, Successes: 5\nComponent: \nImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n\nResults:\n✕ [Violation] test.test_data_found\n  ImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n  Reason: No test data found\n  Title: Test data found in task results\n  Description: Ensure that at least one of the tasks in the pipeline includes a TEST_OUTPUT task result, which is where Conforma\n  expects to find test result data. To exclude this rule add \"test.test_data_found\" to the `exclude` section of the policy\n  configuration.\n  Solution: Confirm at least one task in the build pipeline contains a result named TEST_OUTPUT.\n\nFor more information about policy issues, see the policy documentation: https://conforma.dev/docs/policy/\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-63973de69fce92ff398e3c969dbcca20-pod', container 'step-assert':\n----- START -----false\n----- END -----\nMake sure TaskRun verify-enterprise-contract of PipelineRun verify-enterprise-contract-run-nhg4k failed\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 46,
              "Time": "2026-06-29T11:46:13.189231003Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 48,
              "Time": "2026-06-29T11:46:13.202552383Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 13321420,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 225
            },
            "TimelineLocation": {
              "Order": 49,
              "Time": "2026-06-29T11:46:13.202785478Z"
            },
            "Message": "fails when tests are not satisfied on strict mode",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 225
            },
            "TimelineLocation": {
              "Offset": 29012,
              "Order": 51,
              "Time": "2026-06-29T11:46:29.355567852Z"
            },
            "Message": "fails when tests are not satisfied on strict mode",
            "Duration": 16152782354,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 29012,
              "Order": 52,
              "Time": "2026-06-29T11:46:29.355707775Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 29012,
              "Order": 54,
              "Time": "2026-06-29T11:46:29.355741546Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 33771,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 251
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "fails when unexpected signature is used",
        "State": "passed",
        "StartTime": "2026-06-29T11:46:29.356229807Z",
        "EndTime": "2026-06-29T11:46:41.534874155Z",
        "RunTime": 12178644347,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Create an unexpected public signing key\nCreating Pipeline \"verify-enterprise-contract-run-g6l8q\"\nWaiting for pipeline \"verify-enterprise-contract-run-g6l8q\" to finish\n*** TaskRun status:\nartifacts: {}\ncompletionTime: \"2026-06-29T11:46:40Z\"\nconditions:\n- lastTransitionTime: \"2026-06-29T11:46:40Z\"\n  message: '\"step-assert\" exited with code 1: Error'\n  reason: StepFailed\n  status: \"False\"\n  type: Succeeded\npodName: verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod\nprovenance:\n  featureFlags:\n    awaitSidecarReadiness: true\n    coschedule: workspaces\n    enableAPIFields: alpha\n    enableParamEnum: true\n    enableProvenanceInStatus: true\n    enforceNonfalsifiability: none\n    maxResultSize: 4096\n    resultExtractionMethod: termination-message\n    runningInEnvWithInjectedSidecars: true\n    verificationNoMatchPolicy: ignore\n  refSource:\n    digest:\n      sha256: 7df8d121c09999d0376e189c1eb8a8263078aab697aa5ee966512f581427a6ce\n    entryPoint: verify-enterprise-contract\n    uri: quay.io/conforma/tekton-task\nresults:\n- name: TEST_OUTPUT\n  type: string\n  value: |\n    {\"timestamp\":\"1782733599\",\"namespace\":\"\",\"successes\":0,\"failures\":2,\"warnings\":0,\"result\":\"FAILURE\"}\nspanContext:\n  traceparent: 00-a04b4b4881c5b74c3320495d5990da18-8b28ba9e76c9d9a8-01\nstartTime: \"2026-06-29T11:46:29Z\"\nsteps:\n- container: step-initialize-tuf\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: initialize-tuf\n  provenance: {}\n  terminated:\n    containerID: cri-o://0d18a3d69a08633364997496957fddc472e214bccc9f189e0fbdb2fefff297b2\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:35Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:35Z\"\n  terminationReason: Skipped\n- container: step-reduce\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: reduce\n  provenance: {}\n  terminated:\n    containerID: cri-o://7f910cf582e27cdec4e7009fc57d5d581b31a6ca038c24c4dad9ad8bbc83a3f8\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:35Z\"\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:35Z\"\n  terminationReason: Completed\n- container: step-validate\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: validate\n  provenance: {}\n  terminated:\n    containerID: cri-o://2ddad60f56b90c8bd324ddc46ee9b814610c2583b7f5b8be013651ac021bb37d\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:35Z\"\n  terminationReason: Completed\n- container: step-report-json\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: report-json\n  provenance: {}\n  terminated:\n    containerID: cri-o://31017b691fbb82e2066ac64a7aefb936ddf6775f8a90fe3286c2dd5f166b2c8a\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:39Z\"\n  terminationReason: Completed\n- container: step-summary\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: summary\n  provenance: {}\n  terminated:\n    containerID: cri-o://c260ed5d7b5a9532494a3ca57d507456a10911cdcd876b5bb02815a883857c22\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:39Z\"\n  terminationReason: Completed\n- container: step-version\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: version\n  provenance: {}\n  terminated:\n    containerID: cri-o://7eed2ad52575d421388c88dcef866ae13b5533af3bc475f3dd5001afea2bdeca\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:39Z\"\n  terminationReason: Completed\n- container: step-show-config\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: show-config\n  provenance: {}\n  terminated:\n    containerID: cri-o://6c0768d9b8fffbb6c4d7512cfbc71344243146e95bb74c537054e772d6b25e76\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:39Z\"\n  terminationReason: Completed\n- container: step-detailed-report\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: detailed-report\n  provenance: {}\n  terminated:\n    containerID: cri-o://5a7295363b29da021cafec90c778579a526c82c1a64d7ff0854692902572383b\n    exitCode: 0\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Completed\n    startedAt: \"2026-06-29T11:46:39Z\"\n  terminationReason: Completed\n- container: step-assert\n  imageID: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n  name: assert\n  provenance: {}\n  terminated:\n    containerID: cri-o://affca8b35e049a97ff7d335aee21941d2911d70719bae2e84a9bafa17993a9f9\n    exitCode: 1\n    finishedAt: \"2026-06-29T11:46:39Z\"\n    message: '[{\"key\":\"TEST_OUTPUT\",\"value\":\"{\\\"timestamp\\\":\\\"1782733599\\\",\\\"namespace\\\":\\\"\\\",\\\"successes\\\":0,\\\"failures\\\":2,\\\"warnings\\\":0,\\\"result\\\":\\\"FAILURE\\\"}\\n\",\"type\":1}]'\n    reason: Error\n    startedAt: \"2026-06-29T11:46:39Z\"\n  terminationReason: Error\ntaskSpec:\n  description: Verify the enterprise contract is met\n  params:\n  - description: |\n      Spec section of an ApplicationSnapshot resource. Not all fields of the\n      resource are required. A minimal example:\n\n      ```json\n        {\n          \"components\": [\n            {\n              \"containerImage\": \"quay.io/example/repo:latest\"\n            }\n          ]\n        }\n      ```\n\n      Each `containerImage` in the `components` array is validated.\n    name: IMAGES\n    type: string\n  - default: enterprise-contract-service/default\n    description: |\n      Name of the policy configuration (EnterpriseContractPolicy\n      resource) to use. `namespace/name` or `name` syntax supported. If\n      namespace is omitted the namespace where the task runs is used.\n      You can also specify a policy configuration using a git url, e.g.\n      `github.com/conforma/config//slsa3`.\n    name: POLICY_CONFIGURATION\n    type: string\n  - default: \"\"\n    description: Public key used to verify traditional long-lived signatures. Must\n      be a valid k8s cosign reference, e.g. k8s://my-space/my-secret where my-secret\n      contains the expected cosign.pub attribute. Required for traditional signing\n      key verification. Will be ignored if any of CERTIFICATE_IDENTITY, CERTIFICATE_IDENTITY_REGEXP,\n      CERTIFICATE_OIDC_ISSUER, or CERTIFICATE_OIDC_ISSUER_REGEXP are provided.\n    name: PUBLIC_KEY\n    type: string\n  - default: \"\"\n    description: Rekor host for transparency log lookups\n    name: REKOR_HOST\n    type: string\n  - default: \"\"\n    description: Expected identity in the signing certificate for keyless verification.\n      This should be the email or URI that was used when signing. You should provide\n      both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for keyless verification.\n      The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_IDENTITY\n    type: string\n  - default: \"\"\n    description: Expected OIDC issuer in the signing certificate for keyless verification.\n      This should match the issuer that provided the identity token used for signing.\n      You should provide both CERTIFICATE_OIDC_ISSUER and CERTIFICATE_IDENTITY for\n      keyless verification. The PUBLIC_KEY param will be ignored if this is provided.\n    name: CERTIFICATE_OIDC_ISSUER\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_IDENTITY but the value is a regexp that will\n      be matched. Note that CERTIFICATE_IDENTITY takes precedence over this if both\n      are present.\n    name: CERTIFICATE_IDENTITY_REGEXP\n    type: string\n  - default: \"\"\n    description: Similar to CERTIFICATE_OIDC_ISSUER but a regexp that will be matched.\n      Note that CERTIFICATE_OIDC_ISSUER takes precedence over this if both are present.\n    name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    type: string\n  - default: \"false\"\n    description: Skip Rekor transparency log checks during validation. Compatible\n      with traditional signing secret signature checks only. If any of the CERTIFICATE_*\n      keyless verification params are present, this value is disregarded and Rekor\n      transparency log checks are included.\n    name: IGNORE_REKOR\n    type: string\n  - default: \"\"\n    description: TUF mirror URL. Provide a value when NOT using public sigstore deployment.\n    name: TUF_MIRROR\n    type: string\n  - default: \"\"\n    description: |\n      Path to a directory containing SSL certs to be used when communicating\n      with external services. This is useful when using the integrated registry\n      and a local instance of Rekor on a development cluster which may use\n      certificates issued by a not-commonly trusted root CA. In such cases,\n      `/var/run/secrets/kubernetes.io/serviceaccount` is a good value. Multiple\n      paths can be provided by using the `:` separator.\n    name: SSL_CERT_DIR\n    type: string\n  - default: trusted-ca\n    description: The name of the ConfigMap to read CA bundle data from.\n    name: CA_TRUST_CONFIGMAP_NAME\n    type: string\n  - default: ca-bundle.crt\n    description: The name of the key in the ConfigMap that contains the CA bundle\n      data.\n    name: CA_TRUST_CONFIG_MAP_KEY\n    type: string\n  - default: \"true\"\n    description: Include rule titles and descriptions in the output. Set to `\"false\"`\n      to disable it.\n    name: INFO\n    type: string\n  - default: \"true\"\n    description: Fail the task if policy fails. Set to `\"false\"` to disable it.\n    name: STRICT\n    type: string\n  - default: /tekton/home\n    description: Value for the HOME environment variable.\n    name: HOMEDIR\n    type: string\n  - default: now\n    description: Run policy checks with the provided time.\n    name: EFFECTIVE_TIME\n    type: string\n  - default: \"\"\n    description: Merge additional Rego variables into the policy data. Use syntax\n      \"key=value,key2=value2...\"\n    name: EXTRA_RULE_DATA\n    type: string\n  - default: \"1\"\n    description: Number of parallel workers to use for policy evaluation.\n    name: WORKERS\n    type: string\n  - default: \"false\"\n    description: Reduce the Snapshot to only the component whose build caused the\n      Snapshot to be created\n    name: SINGLE_COMPONENT\n    type: string\n  - default: unknown\n    description: |\n      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\n    type: string\n  - default: \"\"\n    description: |\n      Kubernetes namespace where the SINGLE_COMPONENT_NAME is found. Only used when single component mode is enabled.\n    name: SINGLE_COMPONENT_CUSTOM_RESOURCE_NS\n    type: string\n  - default: 1s\n    description: Base duration for exponential backoff calculation (e.g., \"1s\", \"500ms\")\n    name: RETRY_DURATION\n    type: string\n  - default: \"2.0\"\n    description: Exponential backoff multiplier (e.g., \"2.0\", \"1.5\")\n    name: RETRY_FACTOR\n    type: string\n  - default: \"0.1\"\n    description: Randomness factor for backoff calculation (0.0-1.0, e.g., \"0.1\",\n      \"0.2\")\n    name: RETRY_JITTER\n    type: string\n  - default: \"3\"\n    description: Maximum number of retry attempts\n    name: RETRY_MAX_RETRY\n    type: string\n  - default: 3s\n    description: Maximum wait time between retries (e.g., \"3s\", \"10s\")\n    name: RETRY_MAX_WAIT\n    type: string\n  results:\n  - description: Short summary of the policy evaluation for each image\n    name: TEST_OUTPUT\n    type: string\n  stepTemplate:\n    computeResources: {}\n    env:\n    - name: HOME\n      value: /tekton/home\n  steps:\n  - args:\n    - sigstore\n    - initialize\n    - --mirror\n    - \"\"\n    - --root\n    - /root.json\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: initialize-tuf\n    when:\n    - operator: notin\n      values:\n      - \"\"\n  - command:\n    - reduce-snapshot.sh\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    env:\n    - name: SNAPSHOT\n      value: '{\"components\":[{\"name\":\"\",\"containerImage\":\"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\":{}}],\"artifacts\":{}}'\n    - name: SINGLE_COMPONENT\n      value: \"false\"\n    - name: CUSTOM_RESOURCE\n      value: unknown\n    - name: CUSTOM_RESOURCE_NAMESPACE\n    - name: SNAPSHOT_PATH\n      value: /tekton/home/snapshot.json\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: reduce\n    onError: continue\n  - computeResources:\n      limits:\n        memory: 2Gi\n      requests:\n        cpu: 1800m\n        memory: 2Gi\n    env:\n    - name: POLICY_CONFIGURATION\n      value: ec-policy\n    - name: PUBLIC_KEY\n      value: k8s://chains-e2e-nsqz/dummy-public-key-fsugwrcjnp\n    - name: CERTIFICATE_IDENTITY\n    - name: CERTIFICATE_OIDC_ISSUER\n    - name: CERTIFICATE_IDENTITY_REGEXP\n    - name: CERTIFICATE_OIDC_ISSUER_REGEXP\n    - name: REKOR_HOST\n    - name: IGNORE_REKOR\n      value: \"true\"\n    - name: WORKERS\n      value: \"1\"\n    - name: INFO\n      value: \"true\"\n    - name: EFFECTIVE_TIME\n      value: now\n    - name: EXTRA_RULE_DATA\n    - name: RETRY_MAX_WAIT\n      value: 3s\n    - name: RETRY_MAX_RETRY\n      value: \"3\"\n    - name: RETRY_DURATION\n      value: 1s\n    - name: RETRY_FACTOR\n      value: \"2.0\"\n    - name: RETRY_JITTER\n      value: \"0.1\"\n    - name: HOMEDIR\n      value: /tekton/home\n    - name: SSL_CERT_DIR\n      value: /tekton-custom-certs:/etc/ssl/certs:/etc/pki/tls/certs:/system/etc/security/cacerts:/var/run/secrets/kubernetes.io/serviceaccount\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: validate\n    onError: continue\n    script: |\n      #!/bin/bash\n      set -euo pipefail\n\n      cmd_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\n      if [ -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        )\n      else\n        # Assume traditional signing secret verification\n        cmd_args+=(\n          --public-key=\"${PUBLIC_KEY}\"\n          --ignore-rekor=\"${IGNORE_REKOR}\"\n        )\n      fi\n\n      cmd_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        --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\n      # Execute Conforma with constructed arguments\n      exec ec \"${cmd_args[@]}\"\n    volumeMounts:\n    - mountPath: /etc/pki/tls/certs/ca-custom-bundle.crt\n      name: trusted-ca\n      readOnly: true\n      subPath: ca-bundle.crt\n  - args:\n    - jq . /tekton/home/report-json.json | awk '{gsub(/^ +/, \"\"); acc += length; if\n      (acc \u003e= 8000) { printf \"\\n\"; acc=length } printf $0 }'\n    command:\n    - sh\n    - -c\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: report-json\n    onError: continue\n  - args:\n    - .\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: summary\n    onError: continue\n  - args:\n    - version\n    command:\n    - ec\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: version\n  - args:\n    - '{policy: .policy, key: .key, \"effective-time\": .[\"effective-time\"]}'\n    - /tekton/home/report-json.json\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: show-config\n  - args:\n    - /tekton/home/text-report.txt\n    command:\n    - cat\n    computeResources: {}\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: detailed-report\n    onError: continue\n  - args:\n    - --argjson\n    - strict\n    - \"true\"\n    - -e\n    - |\n      .result == \"SUCCESS\" or .result == \"WARNING\" or ($strict | not)\n    - /tekton/results/TEST_OUTPUT\n    command:\n    - jq\n    computeResources:\n      limits:\n        memory: 256Mi\n      requests:\n        cpu: 100m\n        memory: 256Mi\n    image: quay.io/conforma/cli@sha256:2f5bed7fd51f678ea960aaf5bed033412b7d207a83bb1b02b108be5ca71a058d\n    name: assert\n  volumes:\n  - configMap:\n      items:\n      - key: ca-bundle.crt\n        path: ca-bundle.crt\n      name: trusted-ca\n      optional: true\n    name: trusted-ca\n  workspaces:\n  - description: The workspace where the snapshot spec json file resides\n    name: data\n    optional: true\n\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-initialize-tuf':\n----- START -----2026/06/29 11:46:35 INFO Step was skipped due to when expressions were evaluated to false.\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-reduce':\n----- START -----Single Component mode? false\n{\n  \"components\": [\n    {\n      \"name\": \"\",\n      \"containerImage\": \"quay.io/redhat-appstudio-qe/test-images:buildah-demo-xvsujenlfw@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\n      \"source\": {}\n    }\n  ],\n  \"artifacts\": {}\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-validate':\n----- START ---------- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-report-json':\n----- START -----{\"success\": false,\"components\": [{\"name\": \"\",\"containerImage\": \"quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\",\"source\": {},\"violations\": [{\"msg\": \"No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: accepted signatures do not match threshold, Found: 0, Expected 1\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"No image signatures found matching the given public key. Verify the correct public key was provided, and a signature was created. Error: no matching signatures: invalid signature when validating ASN.1 encoded signature\\n invalid signature when validating ASN.1 encoded signature\\n invalid signature when validating ASN.1 encoded signature\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}}],\"success\": false}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENZxkE/d0fKvJ51dXHQmxXaRMTtVz\\nBQWcmJD/7pcMDEmBcmk8O1yUPIiFj5TMZqabjS9CQQN+jKHG+Bfi0BYlHg==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"slsa_provenance_available\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/dummy-public-key-fsugwrcjnp\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:46:35.856830731Z\"}----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-summary':\n----- START -----{\n  \"timestamp\": \"1782733599\",\n  \"namespace\": \"\",\n  \"successes\": 0,\n  \"failures\": 2,\n  \"warnings\": 0,\n  \"result\": \"FAILURE\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-version':\n----- START -----Version            v0.9.25\nSource ID          b345847182602d9a5ce9e957fa76fe02575c8018\nChange date        2026-04-27 12:52:43 +0000 UTC (8 weeks ago)\nECC                v0.1.7\nOPA                v1.15.2\nConftest           v0.68.2\nCosign             v3.0.4\nSigstore           v1.10.4\nRekor              v1.5.0\nTekton Pipeline    v1.9.2\nKubernetes Client  v0.35.0\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-show-config':\n----- START -----{\n  \"policy\": {\n    \"name\": \"Default\",\n    \"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\n    \"sources\": [\n      {\n        \"name\": \"Default\",\n        \"policy\": [\n          \"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"\n        ],\n        \"data\": [\n          \"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\n          \"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\n          \"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\n          \"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"\n        ],\n        \"config\": {\n          \"include\": [\n            \"slsa_provenance_available\"\n          ]\n        }\n      }\n    ],\n    \"publicKey\": \"k8s://chains-e2e-nsqz/dummy-public-key-fsugwrcjnp\"\n  },\n  \"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENZxkE/d0fKvJ51dXHQmxXaRMTtVz\\nBQWcmJD/7pcMDEmBcmk8O1yUPIiFj5TMZqabjS9CQQN+jKHG+Bfi0BYlHg==\\n-----END PUBLIC KEY-----\\n\",\n  \"effective-time\": \"2026-06-29T11:46:35.856830731Z\"\n}\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-detailed-report':\n----- START -----Success: false\nResult: FAILURE\nViolations: 2, Warnings: 0, Successes: 0\nComponent: \nImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n\nResults:\n✕ [Violation] builtin.attestation.signature_check\n  ImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n  Reason: No image attestations found matching the given public key. Verify the correct public key was provided, and one or more\n  attestations were created. Error: no matching attestations: accepted signatures do not match threshold, Found: 0, Expected 1\n  Title: Attestation signature check passed\n  Description: The attestation signature matches available signing materials.\n\n✕ [Violation] builtin.image.signature_check\n  ImageRef: quay.io/redhat-appstudio-qe/test-images@sha256:0ff3f472aaebfe3a313b1b18cb6a55251cc3babdbc0e3d5274e1cba929865ac4\n  Reason: No image signatures found matching the given public key. Verify the correct public key was provided, and a signature was\n  created. Error: no matching signatures: invalid signature when validating ASN.1 encoded signature\n   invalid signature when validating ASN.1 encoded signature\n   invalid signature when validating ASN.1 encoded signature\n  Title: Image signature check passed\n  Description: The image signature matches available signing materials.\n\nFor more information about policy issues, see the policy documentation: https://conforma.dev/docs/policy/\n----- END -----\n*** Logs from pod 'verify-enterprise-contract-42b67cdf6749231263e44796f32d2d43-pod', container 'step-assert':\n----- START -----false\n----- END -----\nMake sure TaskRun verify-enterprise-contract of PipelineRun verify-enterprise-contract-run-g6l8q failed\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 55,
              "Time": "2026-06-29T11:46:29.356335229Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 57,
              "Time": "2026-06-29T11:46:29.36832176Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 11986530,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 251
            },
            "TimelineLocation": {
              "Order": 58,
              "Time": "2026-06-29T11:46:29.368441922Z"
            },
            "Message": "fails when unexpected signature is used",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 251
            },
            "TimelineLocation": {
              "Offset": 28116,
              "Order": 60,
              "Time": "2026-06-29T11:46:41.53467737Z"
            },
            "Message": "fails when unexpected signature is used",
            "Duration": 12166235458,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 28116,
              "Order": 61,
              "Time": "2026-06-29T11:46:41.534834624Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 28116,
              "Order": 63,
              "Time": "2026-06-29T11:46:41.534871495Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 36870,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task",
          "ec-cli command"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 278
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null,
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 279
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies ec cli has error handling",
        "State": "passed",
        "StartTime": "2026-06-29T11:46:41.535284774Z",
        "EndTime": "2026-06-29T11:46:55.628476769Z",
        "RunTime": 14093192005,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Creating Pipeline \"verify-enterprise-contract-run-nfqds\"\nWaiting for pipeline \"verify-enterprise-contract-run-nfqds\" to finish\n*** Logs from pod 'verify-enterprise-contract-3a5fd7c2273ff6a05c66cdbcd0685a5f-pod', container 'step-report-json':\n----- START -----{\"success\": false,\"components\": [{\"name\": \"-sha256:bd819da15920ef731002630e2b2d49e03b3209ee5edae6c74f2094bb9825b7cf-arm64\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:bd819da15920ef731002630e2b2d49e03b3209ee5edae6c74f2094bb9825b7cf\",\"source\": {},\"violations\": [{\"msg\": \"No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: accepted signatures do not match threshold, Found: 0, Expected 1\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"No image signatures found matching the given public key. Verify the correct public key was provided, and a signature was created. Error: no matching signatures: invalid signature when validating ASN.1 encoded signature\\n invalid signature when validating ASN.1 encoded signature\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}}],\"success\": false},{\"name\": \"-sha256:4b8339806ff0774bdfc73676c57c6985fd311d8c8d0ea3062d13c00136f19414-amd64\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:4b8339806ff0774bdfc73676c57c6985fd311d8c8d0ea3062d13c00136f19414\",\"source\": {},\"violations\": [{\"msg\": \"No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: accepted signatures do not match threshold, Found: 0, Expected 1\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"No image signatures found matching the given public key. Verify the correct public key was provided, and a signature was created. Error: no matching signatures: invalid signature when validating ASN.1 encoded signature\\n invalid signature when validating ASN.1 encoded signature\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}}],\"success\": false},{\"name\": \"\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:0e61e9c81f2e5f05c82aa07135835be5c14e5d4fb7e49734cc581c3856875c8d\",\"source\": {},\"violations\": [{\"msg\": \"No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: accepted signatures do not match threshold, Found: 0, Expected 1\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"No image signatures found matching the given public key. Verify the correct public key was provided, and a signature was created. Error: no matching signatures: invalid signature when validating ASN.1 encoded signature\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}}],\"success\": false}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/PRR0FOXSrtPD0kDehzEywW5+cXQ\\nMXUp52G70MZZ62SyL95Fz6LSHNW5gKSF4wrg12LH59ZY3AYNZKyfqDfxiQ==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"slsa_provenance_available\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/cosign-public-key\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:46:48.454731342Z\"}----- END -----\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 64,
              "Time": "2026-06-29T11:46:41.535394346Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 66,
              "Time": "2026-06-29T11:46:41.547300095Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 11905769,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 279
            },
            "TimelineLocation": {
              "Order": 67,
              "Time": "2026-06-29T11:46:41.547558691Z"
            },
            "Message": "verifies ec cli has error handling",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 279
            },
            "TimelineLocation": {
              "Offset": 5006,
              "Order": 69,
              "Time": "2026-06-29T11:46:55.628285925Z"
            },
            "Message": "verifies ec cli has error handling",
            "Duration": 14080727194,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 5006,
              "Order": 70,
              "Time": "2026-06-29T11:46:55.628441058Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 5006,
              "Order": 72,
              "Time": "2026-06-29T11:46:55.628473659Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 32601,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task",
          "ec-cli command"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 278
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null,
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 301
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies ec validate accepts a list of image references",
        "State": "passed",
        "StartTime": "2026-06-29T11:46:55.628892418Z",
        "EndTime": "2026-06-29T11:47:22.757452174Z",
        "RunTime": 27128559756,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Update public key to verify golden images\nCreating Pipeline \"verify-enterprise-contract-run-wkb4l\"\nWaiting for pipeline \"verify-enterprise-contract-run-wkb4l\" to finish\n*** Logs from pod 'verify-enterprise-contract-4f08be729b76691c2afa56e2b471b61f-pod', container 'step-report-json':\n----- START -----{\"success\": true,\"components\": [{\"name\": \"-sha256:bd819da15920ef731002630e2b2d49e03b3209ee5edae6c74f2094bb9825b7cf-arm64\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:bd819da15920ef731002630e2b2d49e03b3209ee5edae6c74f2094bb9825b7cf\",\"source\": {},\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.known_attestation_type\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.pipelinerun_attestation_found\"],\"description\": \"Confirm the attestation found for the image has a known attestation type.\",\"title\": \"Known attestation type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.pipelinerun_attestation_found\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"description\": \"Confirm at least one PipelineRun attestation is present.\",\"title\": \"PipelineRun attestation found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.allowed_builder_ids_provided\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed builder IDs provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_accepted\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \\\"https://tekton.dev/chains/v2\\\".\",\"title\": \"SLSA Builder ID is known and accepted\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_found\",\"collections\": [\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set.\",\"title\": \"SLSA Builder ID found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_script_used\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.\",\"title\": \"Build task contains steps\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_task_image_results_found\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.\",\"title\": \"Build task set image digest and url task results\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.subject_build_task_matches\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.\",\"title\": \"Provenance subject matches build task image result\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.allowed_predicate_types_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed predicate types provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.attestation_predicate_type_accepted\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.\",\"title\": \"Expected attestation predicate type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.attested_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Attestation contains source reference.\",\"title\": \"Source reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.expected_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the provided source code reference is the one being attested.\",\"title\": \"Expected source code reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.rule_data_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.\",\"title\": \"Rule data provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_format_okay\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.\",\"title\": \"Materials have uri and digest\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_include_git_sha\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.\",\"title\": \"Materials include git commit shas\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_uri_is_git_repo\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.\",\"title\": \"Material uri is a git repo\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.pipeline_has_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that at least one Task is present in the PipelineRun attestation.\",\"title\": \"Pipeline run includes at least one task\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.successful_pipeline_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"tasks.pipeline_has_tasks\"],\"description\": \"Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.\",\"title\": \"Successful pipeline tasks\"}}],\"success\": true,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEYCIQDAFKFnOSV+ZO53btaeKYBj9ME2NdgwhZHBvpe+FdPrKgIhALpDGT56tbbpn+Y7xX7I6G9Ggm3UD0MYEZYgZ/Jf0n7s\"},{\"keyid\": \"\",\"sig\": \"MEYCIQCwccUeCezmpPt6+gFQUb625+udjgjabwf3JZKGyt7iuAIhAMSTjScJPNed9vmKj/eLIE4zuKkw+dD1CGOcSlHEYGqi\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEUCIFDe/HK4zGEf6ReCdi9lKIHt+F3RAQVbVz+9njVgeByoAiEA07g5JSnXBDpV2QlW7s4GuY7DoGVO8rwgOzJDsFR4Vhg=\"}]}]},{\"name\": \"-sha256:4b8339806ff0774bdfc73676c57c6985fd311d8c8d0ea3062d13c00136f19414-amd64\",\n\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:4b8339806ff0774bdfc73676c57c6985fd311d8c8d0ea3062d13c00136f19414\",\"source\": {},\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.known_attestation_type\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.pipelinerun_attestation_found\"],\"description\": \"Confirm the attestation found for the image has a known attestation type.\",\"title\": \"Known attestation type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.pipelinerun_attestation_found\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"description\": \"Confirm at least one PipelineRun attestation is present.\",\"title\": \"PipelineRun attestation found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.allowed_builder_ids_provided\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed builder IDs provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_accepted\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \\\"https://tekton.dev/chains/v2\\\".\",\"title\": \"SLSA Builder ID is known and accepted\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_found\",\"collections\": [\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set.\",\"title\": \"SLSA Builder ID found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_script_used\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.\",\"title\": \"Build task contains steps\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_task_image_results_found\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.\",\"title\": \"Build task set image digest and url task results\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.subject_build_task_matches\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.\",\"title\": \"Provenance subject matches build task image result\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.allowed_predicate_types_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed predicate types provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.attestation_predicate_type_accepted\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.\",\"title\": \"Expected attestation predicate type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.attested_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Attestation contains source reference.\",\"title\": \"Source reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.expected_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the provided source code reference is the one being attested.\",\"title\": \"Expected source code reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.rule_data_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.\",\"title\": \"Rule data provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_format_okay\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.\",\"title\": \"Materials have uri and digest\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_include_git_sha\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.\",\"title\": \"Materials include git commit shas\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_uri_is_git_repo\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.\",\"title\": \"Material uri is a git repo\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.pipeline_has_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that at least one Task is present in the PipelineRun attestation.\",\"title\": \"Pipeline run includes at least one task\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.successful_pipeline_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"tasks.pipeline_has_tasks\"],\"description\": \"Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.\",\"title\": \"Successful pipeline tasks\"}}],\"success\": true,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIDClKcqP9YPbxNqrjMmnHiaOfanitDdnBlhFmjQ6BLtJAiEArcCsnbdruYcO3+U0I5lWaU61uOUyU+wfbEj0L+ZR+L0=\"},{\"keyid\": \"\",\"sig\": \"MEUCIQCpjCHf1LOrOwwyEkcivoYaDzQBLYDerGUXEJvjlVBnmgIgG5Zk2eQpGhuw2sfOQZbwrB8d3fp5JdZcemQw426vGwg=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEUCIFDe/HK4zGEf6ReCdi9lKIHt+F3RAQVbVz+9njVgeByoAiEA07g5JSnXBDpV2QlW7s4GuY7DoGVO8rwgOzJDsFR4Vhg=\"}]}]},{\"name\": \"\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:304040ca1911aa4d911bd7c6d6d07193c57dc49dbc43e63828b42ab204fb1b25\",\"source\": {},\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.known_attestation_type\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\n\"depends_on\": [\"attestation_type.pipelinerun_attestation_found\"],\"description\": \"Confirm the attestation found for the image has a known attestation type.\",\"title\": \"Known attestation type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.pipelinerun_attestation_found\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"description\": \"Confirm at least one PipelineRun attestation is present.\",\"title\": \"PipelineRun attestation found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.allowed_builder_ids_provided\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed builder IDs provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_accepted\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \\\"https://tekton.dev/chains/v2\\\".\",\"title\": \"SLSA Builder ID is known and accepted\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_found\",\"collections\": [\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set.\",\"title\": \"SLSA Builder ID found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_script_used\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.\",\"title\": \"Build task contains steps\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_task_image_results_found\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.\",\"title\": \"Build task set image digest and url task results\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.subject_build_task_matches\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.\",\"title\": \"Provenance subject matches build task image result\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.allowed_predicate_types_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed predicate types provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.attestation_predicate_type_accepted\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.\",\"title\": \"Expected attestation predicate type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.attested_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Attestation contains source reference.\",\"title\": \"Source reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.expected_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the provided source code reference is the one being attested.\",\"title\": \"Expected source code reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.rule_data_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.\",\"title\": \"Rule data provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_format_okay\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.\",\"title\": \"Materials have uri and digest\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_include_git_sha\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.\",\"title\": \"Materials include git commit shas\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_uri_is_git_repo\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.\",\"title\": \"Material uri is a git repo\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.pipeline_has_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that at least one Task is present in the PipelineRun attestation.\",\"title\": \"Pipeline run includes at least one task\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.successful_pipeline_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"tasks.pipeline_has_tasks\"],\"description\": \"Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.\",\"title\": \"Successful pipeline tasks\"}}],\"success\": true,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIQD86lmOqCovYZDPKm0XxxsLgDQcFIFAv+QZxrFSHmCvQAIgTd1I005ox8MfABqsAen6PZEyg2MCEQNBCx1NLS3V0JQ=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1beta1/TaskRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEUCIQDcgZIwEkLFqD7U9HrobgEC8Jo7wm+xJ5AoyO3qg+aj8QIgb9xDpjYGRMmpVk+QATeVKlHonzBiu51HtT3J+lQXPXc=\"}]},{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1beta1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEYCIQDKSihaAR/zAhJhR5GCqleDvfUUtvRw61vk0YeTBAnOSQIhAKa09B4yEfaSJronmWBFbu5cVPNxm17CMl/PElEz1POa\"}]}]},{\"name\": \"\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:0e61e9c81f2e5f05c82aa07135835be5c14e5d4fb7e49734cc581c3856875c8d\",\"source\": {},\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.known_attestation_type\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.pipelinerun_attestation_found\"],\n\"description\": \"Confirm the attestation found for the image has a known attestation type.\",\"title\": \"Known attestation type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"attestation_type.pipelinerun_attestation_found\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"description\": \"Confirm at least one PipelineRun attestation is present.\",\"title\": \"PipelineRun attestation found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.allowed_builder_ids_provided\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_builder_ids` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed builder IDs provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_accepted\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set to one of the values in the `allowed_builder_ids` rule data, e.g. \\\"https://tekton.dev/chains/v2\\\".\",\"title\": \"SLSA Builder ID is known and accepted\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_build_service.slsa_builder_id_found\",\"collections\": [\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the attestation attribute predicate.builder.id is set.\",\"title\": \"SLSA Builder ID found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_script_used\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicate.buildConfig.tasks.steps attribute for the task responsible for building and pushing the image is not empty.\",\"title\": \"Build task contains steps\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.build_task_image_results_found\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm that a build task exists and it has the expected IMAGE_DIGEST and IMAGE_URL task results.\",\"title\": \"Build task set image digest and url task results\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_build_scripted_build.subject_build_task_matches\",\"collections\": [\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify the subject of the attestations matches the IMAGE_DIGEST and IMAGE_URL values from the build task.\",\"title\": \"Provenance subject matches build task image result\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.allowed_predicate_types_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the `allowed_predicate_types` rule data was provided, since it is required by the policy rules in this package.\",\"title\": \"Allowed predicate types provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_provenance_available.attestation_predicate_type_accepted\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the predicateType field of the attestation indicates the in-toto SLSA Provenance format was used to attest the PipelineRun.\",\"title\": \"Expected attestation predicate type found\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.attested_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Attestation contains source reference.\",\"title\": \"Source reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.expected_source_code_reference\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Verify that the provided source code reference is the one being attested.\",\"title\": \"Expected source code reference\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_correlated.rule_data_provided\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\",\"policy_data\"],\"description\": \"Confirm the expected rule data keys have been provided in the expected format. The keys are `supported_vcs` and `supported_digests`.\",\"title\": \"Rule data provided\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_format_okay\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Confirm at least one entry in the predicate.materials array of the attestation contains the expected attributes: uri and digest.sha1.\",\"title\": \"Materials have uri and digest\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_include_git_sha\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that each entry in the predicate.materials array with a SHA-1 digest includes a valid Git commit SHA.\",\"title\": \"Materials include git commit shas\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"slsa_source_version_controlled.materials_uri_is_git_repo\",\"collections\": [\"minimal\",\"slsa3\",\"redhat\",\"redhat_rpms\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure each entry in the predicate.materials array with a SHA-1 digest includes a valid Git URI.\",\"title\": \"Material uri is a git repo\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.pipeline_has_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"attestation_type.known_attestation_type\"],\"description\": \"Ensure that at least one Task is present in the PipelineRun attestation.\",\"title\": \"Pipeline run includes at least one task\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"tasks.successful_pipeline_tasks\",\"collections\": [\"minimal\",\"redhat\",\"redhat_rpms\",\"slsa3\"],\"depends_on\": [\"tasks.pipeline_has_tasks\"],\"description\": \"Ensure that all of the Tasks in the Pipeline completed successfully. Note that skipped Tasks are not taken into account and do not influence the outcome.\",\"title\": \"Successful pipeline tasks\"}}],\"success\": true,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIH1WSpsKcqzY11HkZUBkW2EtnAsuE1DXjFSvEMiekoYhAiEA8DWjnDJelQVizV67I8B3hE7HzqVdoitHQYtE52UYnfU=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEUCIFDe/HK4zGEf6ReCdi9lKIHt+F3RAQVbVz+9njVgeByoAiEA07g5JSnXBDpV2QlW7s4GuY7DoGVO8rwgOzJDsFR4Vhg=\"}]}]}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZP/0htjhVt2y0ohjgtIIgICOtQtA\\nnaYJRuLprwIv6FDhZ5yFjYUEtsmoNcW7rx2KM6FOXGsCX3BNc7qhHELT+g==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\n\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"exclude\": [\"slsa_source_correlated.source_code_reference_provided\"],\"include\": [\"@slsa3\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/golden-image-public-keytmaubayqyg\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:47:10.847238485Z\"}----- END -----\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 73,
              "Time": "2026-06-29T11:46:55.62899595Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 75,
              "Time": "2026-06-29T11:46:55.64003469Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 11038739,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 301
            },
            "TimelineLocation": {
              "Order": 76,
              "Time": "2026-06-29T11:46:55.640151532Z"
            },
            "Message": "verifies ec validate accepts a list of image references",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 301
            },
            "TimelineLocation": {
              "Offset": 32846,
              "Order": 78,
              "Time": "2026-06-29T11:47:22.75726994Z"
            },
            "Message": "verifies ec validate accepts a list of image references",
            "Duration": 27117118387,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 32846,
              "Order": 79,
              "Time": "2026-06-29T11:47:22.757405523Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 32846,
              "Order": 81,
              "Time": "2026-06-29T11:47:22.757449104Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 43581,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task",
          "Release Policy"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 344
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null,
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 345
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies redhat products pass the redhat policy rule collection before release ",
        "State": "passed",
        "StartTime": "2026-06-29T11:47:22.757971145Z",
        "EndTime": "2026-06-29T11:47:58.865950626Z",
        "RunTime": 36107979450,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Update public key to verify golden images\nCreating Pipeline \"verify-enterprise-contract-run-4d65r\"\nWaiting for pipeline \"verify-enterprise-contract-run-4d65r\" to finish\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 82,
              "Time": "2026-06-29T11:47:22.758132909Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 84,
              "Time": "2026-06-29T11:47:22.772799204Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 14666295,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 345
            },
            "TimelineLocation": {
              "Order": 85,
              "Time": "2026-06-29T11:47:22.772945938Z"
            },
            "Message": "verifies redhat products pass the redhat policy rule collection before release ",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 345
            },
            "TimelineLocation": {
              "Offset": 169,
              "Order": 87,
              "Time": "2026-06-29T11:47:58.8657027Z"
            },
            "Message": "verifies redhat products pass the redhat policy rule collection before release ",
            "Duration": 36092756722,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 169,
              "Order": 88,
              "Time": "2026-06-29T11:47:58.865917025Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 169,
              "Order": 90,
              "Time": "2026-06-29T11:47:58.865947615Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 30591,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task",
          "Release Policy"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 344
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null,
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 382
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies the release policy: Task are trusted",
        "State": "passed",
        "StartTime": "2026-06-29T11:47:58.866481018Z",
        "EndTime": "2026-06-29T11:48:14.975265218Z",
        "RunTime": 16108784201,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Update public key to verify golden images\nCreating Pipeline \"verify-enterprise-contract-run-gv7x8\"\nWaiting for pipeline \"verify-enterprise-contract-run-gv7x8\" to finish\n*** Logs from pod 'verify-enterprise-contract-6c36e1a26435fe2c616f70c5cb799a2a-pod', container 'step-report-json':\n----- START -----{\"success\": false,\"components\": [{\"name\": \"\",\"containerImage\": \"quay.io/konflux-ci/ec-golden-image@sha256:304040ca1911aa4d911bd7c6d6d07193c57dc49dbc43e63828b42ab204fb1b25\",\"source\": {},\"violations\": [{\"msg\": \"PipelineTask \\\"build-container\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-buildah:0.1@sha256:c3712257615d206ef40013bf1c5c681670fc8f7fd6aac9fa4c86f7afeff627ef. Please upgrade the task version to: sha256:73628c0497b9d1fb068dffb997cf7bea57ed6dfa04e892abf1d6fc7f6828050a\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:buildah\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"buildah\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"clair-scan\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-clair-scan:0.1@sha256:fba8170329ab00b864ee7d16e0358df4c4386880e10894fd7bbbb1457112477b. Please upgrade the task version to: sha256:d3af2290595378de7f8bc73b54aa7a5fac793090e2cef4f1822d31e18a64761f\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:clair-scan\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"clair-scan\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"clamav-scan\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-clamav-scan:0.1@sha256:28b425322aa84f988c6c4f8d503787b3fb301668b2ad6728846b8f8c45ba012b. Please upgrade the task version to: sha256:1b186d53eeab12f0ae1b7aa333e9cf2b2c9dcc9751f5e940ca935a168bba5a7d\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:clamav-scan\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"clamav-scan\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"deprecated-base-image-check\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-deprecated-image-check:0.1@sha256:28d724dd6f6c365b2a839d9e52baac91559fd78c160774769c1ec724301f78d4. Please upgrade the task version to: sha256:409efc4464663225f96518776b3811c31ea4e988a18493a3114eedf01e0a0a17\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:deprecated-image-check\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"deprecated-image-check\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"clone-repository\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-git-clone:0.1@sha256:f4e37778cba00296606ddfbc1c58181330899cafcaa1ee41c75a7cf8bed312f0. Please upgrade the task version to: sha256:39efcb7d049d84feccce65e589996a89b19ab7c9f504015c3792e3daee697da3\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:git-clone\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"git-clone\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"init\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-init:0.1@sha256:5ce77110e2a49407a69a7922042dc0859f7e8f5f75dc0cd0bcc2d17860469bdb. Please upgrade the task version to: sha256:60e0a74b7f4b1166cb62672d6b6f262b4284b20ade9157a387b4a52283ccada8\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:init\\\" to the `exclude` section of the policy configuration.\",\n\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"init\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"sanity-inspect-image\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-sanity-inspect-image:0.1@sha256:fd4efd9d12eea3a8d47532c4226e685618845d0ba95abb98e008020243d96301. Please upgrade the task version to: sha256:b9ad0ed56be21c9e3c8e2e636275f92d887e57681c718cd36f117eb6fa547824\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:sanity-inspect-image\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"sanity-inspect-image\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"sanity-label-check\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-sanity-label-check:0.1@sha256:534770bf7a7c10277ab5f9c1e7b766abbffb343cc864dd9545aecc5278257dc3. Please upgrade the task version to: sha256:dd49667be76c81264a7fb28e3b43f72c527507e5691720c6262575255cb60689\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:sanity-label-check\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"sanity-label-check\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"sanity-optional-label-check\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-sanity-label-check:0.1@sha256:534770bf7a7c10277ab5f9c1e7b766abbffb343cc864dd9545aecc5278257dc3. Please upgrade the task version to: sha256:dd49667be76c81264a7fb28e3b43f72c527507e5691720c6262575255cb60689\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:sanity-label-check\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"sanity-label-check\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"sbom-json-check\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-sbom-json-check:0.1@sha256:ce6a0932da9b41080108284d1366fc2de8374fca5137500138e16ad9e04610c6. Please upgrade the task version to: sha256:32a7b681f947179b4df11f2e9f05f27478001247e519fa0b1a211cbf9562a205\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:sbom-json-check\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"sbom-json-check\",\"title\": \"Tasks are trusted\"}},{\"msg\": \"PipelineTask \\\"show-summary\\\" uses an untrusted task reference: oci://quay.io/redhat-appstudio-tekton-catalog/task-summary:0.1@sha256:c0f66b28c338426774e34a8d4a00349fbab798b19df5841a95727148d5ef3c65. Please upgrade the task version to: sha256:4d7a2201ce4cb6dca8a48f4d9d4e02d5d3b57ef8eb99009675f1a34f2923ae49\",\"metadata\": {\"code\": \"trusted_task.trusted\",\"collections\": [\"redhat\"],\"description\": \"Check the trust of the Tekton Tasks used in the build Pipeline. There are two modes in which trust is verified. The first mode is used if Trusted Artifacts are enabled. In this case, a chain of trust is established for all the Tasks involved in creating an artifact. If the chain contains an untrusted Task, then a violation is emitted. The second mode is used as a fallback when Trusted Artifacts are not enabled. In this case, **all** Tasks in the build Pipeline must be trusted. To exclude this rule add \\\"trusted_task.trusted:summary\\\" to the `exclude` section of the policy configuration.\",\"solution\": \"If using Trusted Artifacts, be sure every Task in the build Pipeline responsible for producing a Trusted Artifact is trusted. Otherwise, ensure **all** Tasks in the build Pipeline are trusted. Note that trust is eventually revoked from Tasks when newer versions are made available.\",\"term\": \"summary\",\"title\": \"Tasks are trusted\"}}],\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}}],\"success\": false,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEUCIQD86lmOqCovYZDPKm0XxxsLgDQcFIFAv+QZxrFSHmCvQAIgTd1I005ox8MfABqsAen6PZEyg2MCEQNBCx1NLS3V0JQ=\"}],\"attestations\": [{\n\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1beta1/TaskRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEUCIQDcgZIwEkLFqD7U9HrobgEC8Jo7wm+xJ5AoyO3qg+aj8QIgb9xDpjYGRMmpVk+QATeVKlHonzBiu51HtT3J+lQXPXc=\"}]},{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"tekton.dev/v1beta1/PipelineRun\",\"signatures\": [{\"keyid\": \"SHA256:IhiN7gY+Z3uSSd7tmj6w5Zfhqafzdhm3DZjIvGc6iYY\",\"sig\": \"MEYCIQDKSihaAR/zAhJhR5GCqleDvfUUtvRw61vk0YeTBAnOSQIhAKa09B4yEfaSJronmWBFbu5cVPNxm17CMl/PElEz1POa\"}]}]}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZP/0htjhVt2y0ohjgtIIgICOtQtA\\nnaYJRuLprwIv6FDhZ5yFjYUEtsmoNcW7rx2KM6FOXGsCX3BNc7qhHELT+g==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"trusted_task.trusted\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/golden-image-public-keygxogclwmqh\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:48:05.361703155Z\"}----- END -----\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 91,
              "Time": "2026-06-29T11:47:58.86658987Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 93,
              "Time": "2026-06-29T11:47:58.880162157Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 13572317,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 382
            },
            "TimelineLocation": {
              "Order": 94,
              "Time": "2026-06-29T11:47:58.880395212Z"
            },
            "Message": "verifies the release policy: Task are trusted",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 382
            },
            "TimelineLocation": {
              "Offset": 18313,
              "Order": 96,
              "Time": "2026-06-29T11:48:14.975023183Z"
            },
            "Message": "verifies the release policy: Task are trusted",
            "Duration": 16094627971,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 18313,
              "Order": 97,
              "Time": "2026-06-29T11:48:14.975209337Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 18313,
              "Order": 99,
              "Time": "2026-06-29T11:48:14.975259618Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 50281,
            "NodeType": "AfterEach"
          }
        ]
      },
      {
        "ContainerHierarchyTexts": [
          "[enterprise-contract-suite Conforma E2E tests]",
          "test creating and signing an image and task",
          "verify-enterprise-contract task",
          "Release Policy"
        ],
        "ContainerHierarchyLocations": [
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/pkg/framework/describe.go",
            "LineNumber": 33
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 65
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 127
          },
          {
            "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
            "LineNumber": 344
          }
        ],
        "ContainerHierarchyLabels": [
          [
            "ec"
          ],
          [
            "pipeline"
          ],
          null,
          null
        ],
        "ContainerHierarchySemVerConstraints": [
          null,
          null,
          null,
          null
        ],
        "ContainerHierarchyComponentSemVerConstraints": [
          {},
          {},
          {},
          {}
        ],
        "LeafNodeType": "It",
        "LeafNodeLocation": {
          "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
          "LineNumber": 422
        },
        "LeafNodeLabels": null,
        "LeafNodeSemVerConstraints": null,
        "LeafNodeText": "verifies the release policy: Task references are pinned",
        "State": "passed",
        "StartTime": "2026-06-29T11:48:14.975697798Z",
        "EndTime": "2026-06-29T11:48:31.083706746Z",
        "RunTime": 16108008949,
        "ParallelProcess": 10,
        "NumAttempts": 1,
        "MaxFlakeAttempts": 0,
        "MaxMustPassRepeatedly": 0,
        "CapturedGinkgoWriterOutput": "Update public \u003ckey to verify unpinned task image\nCreating Pipeline \"verify-enterprise-contract-run-9vnkj\"\nWaiting for pipeline \"verify-enterprise-contract-run-9vnkj\" to finish\n*** Logs from pod 'verify-enterprise-contract-027e6bceeb50916347190ba582b2b5dd-pod', container 'step-report-json':\n----- START -----{\"success\": true,\"components\": [{\"name\": \"\",\"containerImage\": \"quay.io/redhat-appstudio-qe/enterprise-contract-tests@sha256:c1a2330b0117c4ccd642ba95539a499ae54f0282b124f0514ee57b274d674f10\",\"source\": {},\"warnings\": [{\"msg\": \"Pipeline task \\\"build-container\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"buildah\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"clamav-scan\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"clamav-scan\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"appstudio-configure-build\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"configure-build\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"conftest-clair\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"conftest-clair\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"deprecated-base-image-check\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"deprecated-image-check\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"get-clair-results\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"get-clair-scan\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"clone-repository\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"git-clone\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"hacbs-test-evaluation\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"hacbs-test-evaluation\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"appstudio-init\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-1@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"init\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"sanity-inspect-image\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"sanity-inspect-image\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"sanity-label-check\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\n\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"sanity-label-check\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"sanity-optional-label-check\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"sanity-label-check\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"sast-go\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"sast-go\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"sast-java-sec-check\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"sast-java-sec-check\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"sast-snyk-check\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"sast-snyk-check\",\"title\": \"Task references are pinned\"}},{\"msg\": \"Pipeline task \\\"show-summary\\\" uses an unpinned task reference, oci://quay.io/redhat-appstudio/appstudio-tasks:8be37c13984bc3f8af4d6314d87b1ec5e494b6ca-2@\",\"metadata\": {\"code\": \"trusted_task.pinned\",\"collections\": [\"redhat\",\"redhat_rpms\"],\"description\": \"Check if all Tekton Tasks use a Task definition by a pinned reference. When using the git resolver, a commit ID is expected for the revision parameter. When using the bundles resolver, the bundle parameter is expected to include an image reference with a digest.\",\"solution\": \"Update the Pipeline definition so that all Task references have a pinned value as mentioned in the description.\",\"term\": \"summary\",\"title\": \"Task references are pinned\"}}],\"successes\": [{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.signature_check\",\"description\": \"The attestation signature matches available signing materials.\",\"title\": \"Attestation signature check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.attestation.syntax_check\",\"description\": \"The attestation has correct syntax.\",\"title\": \"Attestation syntax check passed\"}},{\"msg\": \"Pass\",\"metadata\": {\"code\": \"builtin.image.signature_check\",\"description\": \"The image signature matches available signing materials.\",\"title\": \"Image signature check passed\"}}],\"success\": true,\"signatures\": [{\"keyid\": \"\",\"sig\": \"MEYCIQD0M+eFk8KPeOHvC6GNIQkaJGZvtOvvDqBvzi+qYgiS2gIhAP7stpq7Nl9vpF4tjqLC7/gr6t5yXc9Y353Btfe3DcEM\"},{\"keyid\": \"\",\"sig\": \"MEUCIDkj9PKADlbayhD4DIUm5SRw2pCzSTeak1dJHAZOyQyQAiEApp4BQneeSKSbKbojFEzeJbVTPGBQrA7QnTzTblnU7nE=\"}],\"attestations\": [{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"https://tekton.dev/attestations/chains@v2\",\"signatures\": [{\"keyid\": \"SHA256:w1ABTR6Lt6NlJapY8sIR8F2BvXZ6qn2q+GrC+jWwpqE\",\"sig\": \"MEQCICXkO7VwYxRHIYd+EbSeIvN+tKMyM4YSZkbUewMSefclAiBCoWnkdF5X4z6rY2YnOlwF5NrrPJh4f/tIvGJe1E3HIQ==\"}]},{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"https://tekton.dev/attestations/chains@v2\",\"signatures\": [{\"keyid\": \"SHA256:w1ABTR6Lt6NlJapY8sIR8F2BvXZ6qn2q+GrC+jWwpqE\",\"sig\": \"MEUCIQCmcnxF+boyOwR1RSLnZHUJgGtuQ5y0pm+hBjAhyb9TOwIgTtn/WYNIDWeW9WEALawsVBBtcsdeG91wuwIHpYo2zpc=\"}]},{\"type\": \"https://in-toto.io/Statement/v0.1\",\"predicateType\": \"https://slsa.dev/provenance/v0.2\",\"predicateBuildType\": \"https://tekton.dev/attestations/chains/pipelinerun@v2\",\"signatures\": [{\"keyid\": \"SHA256:w1ABTR6Lt6NlJapY8sIR8F2BvXZ6qn2q+GrC+jWwpqE\",\"sig\": \"MEUCIQCrK8Zvo5I45A0j/gvxmsJV30nb6/iQxQVeOMhELH964AIgXm12BtB+JHO5YWoFZAAAR+yMrpgeNBvn5vvVLYoYpHA=\"}]}]}],\"key\": \"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPfwkY/ru2JRd6FSqIp7lT3gzjaEC\\nEAg+paWtlme2KNcostCsmIbwz+bc2aFV+AxCOpRjRpp3vYrbS5KhkmgC1Q==\\n-----END PUBLIC KEY-----\\n\",\"policy\": {\"name\": \"Default\",\"description\": \"Includes rules for levels 1, 2 \u0026 3 of SLSA v0.1. This is the default config used for new Konflux applications. Source: https://github.com/conforma/config/blob/main/default/policy.yaml\",\"sources\": [{\"name\": \"Default\",\"policy\": [\"oci::quay.io/enterprise-contract/ec-release-policy:konflux@sha256:614408c473895bc7263173ccadcbf782e0c3c7c0a8c10851e6b0c94b5ea448c1\"],\"data\": [\"git::github.com/release-engineering/rhtap-ec-policy//data?ref=e7ebca9822d7378140b7207c7bc7062fa883dd5f\",\"oci::quay.io/konflux-ci/tekton-catalog/data-acceptable-bundles:latest@sha256:b31c561ad8179e9330c3781535b10c1ab1b01fead164e768fbc51304afa2e441\",\"oci::quay.io/konflux-ci/konflux-vanguard/data-acceptable-bundles:latest@sha256:0b31c7bc77a7463a1bc52f3d3625ef0e0e75443da7fd2de8005d7885282138ea\",\"oci::quay.io/konflux-ci/integration-service-catalog/data-acceptable-bundles:latest@sha256:7b00455045ea3873a72caeb1e7ac7d036bd53963a26409891a4cc9d0d242b9fc\"],\"config\": {\"include\": [\"trusted_task.pinned\"]}}],\"publicKey\": \"k8s://chains-e2e-nsqz/unpinned-task-bundle-public-keyeiwucdggir\"},\"ec-version\": \"v0.9.25\",\"effective-time\": \"2026-06-29T11:48:21.417904808Z\"}----- END -----\n",
        "SpecEvents": [
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 100,
              "Time": "2026-06-29T11:48:14.975816741Z"
            },
            "Message": "verify-enterprise-contract task",
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 154
            },
            "TimelineLocation": {
              "Order": 102,
              "Time": "2026-06-29T11:48:14.98946471Z"
            },
            "Message": "verify-enterprise-contract task",
            "Duration": 13647969,
            "NodeType": "BeforeEach"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 422
            },
            "TimelineLocation": {
              "Order": 103,
              "Time": "2026-06-29T11:48:14.989630454Z"
            },
            "Message": "verifies the release policy: Task references are pinned",
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 422
            },
            "TimelineLocation": {
              "Offset": 15417,
              "Order": 105,
              "Time": "2026-06-29T11:48:31.083537993Z"
            },
            "Message": "verifies the release policy: Task references are pinned",
            "Duration": 16093907529,
            "NodeType": "It"
          },
          {
            "SpecEventType": "Node",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 15417,
              "Order": 106,
              "Time": "2026-06-29T11:48:31.083670446Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "NodeType": "AfterEach"
          },
          {
            "SpecEventType": "Node (End)",
            "CodeLocation": {
              "FileName": "/tmp/tmp.2RNFuf6Ple/tests/enterprise-contract/contract.go",
              "LineNumber": 29
            },
            "TimelineLocation": {
              "Offset": 15417,
              "Order": 108,
              "Time": "2026-06-29T11:48:31.083704266Z"
            },
            "Message": "[enterprise-contract-suite Conforma E2E tests]",
            "Duration": 33820,
            "NodeType": "AfterEach"
          }
        ]
      }
    ]
  }
]
