{
  "repository": "juspay/hyperswitch",
  "ref": "9f47e0e004f5fcbabe7af5b315157cd94302ed40",
  "methods": [
    {
      "slug": "formal",
      "title": "Formal verification and model checking"
    },
    {
      "slug": "static_analysis",
      "title": "Static analysis"
    },
    {
      "slug": "testing",
      "title": "Testing"
    },
    {
      "slug": "formatting",
      "title": "Formatting and hygiene"
    },
    {
      "slug": "supply_chain",
      "title": "Supply chain"
    },
    {
      "slug": "unclassified",
      "title": "Unclassified"
    }
  ],
  "verifications": [
    {
      "tool": "cargo-check",
      "method": "static_analysis",
      "commands": [
        "cargo check --features release",
        "cargo check",
        "cargo check {{ check_flags }} --no-default-features --features ${FEATURES} -- {{ FLAGS }}",
        "cargo check {{ check_flags }} --no-default-features --features ${FEATURES} {{ FLAGS }}"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/CI-pr.yml",
          "locator": "jobs.check-msrv.steps[9] (Run cargo check)"
        },
        {
          "path": ".github/workflows/CI-push.yml",
          "locator": "jobs.check-msrv.steps[11] (Run cargo check)"
        },
        {
          "path": "Makefile",
          "locator": "target check (line 26)"
        },
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        }
      ],
      "upstream": "https://github.com/rust-lang/cargo",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "clippy",
      "method": "static_analysis",
      "commands": [
        "cargo clippy --all-features --all-targets -- -D warnings",
        "cargo clippy {{ check_flags }} --no-default-features --features ${FEATURES} {{ FLAGS }}",
        "cargo clippy {{ check_flags }} --no-default-features --features ${FEATURES} -- {{ v2_lints }} {{ FLAGS }}"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "Makefile",
          "locator": "target clippy (line 61)"
        },
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        },
        {
          "path": ".clippy.toml",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/rust-lang/rust-clippy",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "eslint",
      "method": "static_analysis",
      "commands": [
        "eslint ."
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "cypress-tests/package.json",
          "locator": "devDependencies: eslint"
        },
        {
          "path": "cypress-tests/eslint.config.js",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/eslint/eslint",
      "docs": "https://eslint.org/docs/latest/use/command-line-interface#exit-codes",
      "exit_codes": {
        "0": "no errors",
        "1": "linting errors found",
        "2": "configuration problem or internal error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "tsc",
      "method": "static_analysis",
      "commands": [
        "tsc"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.build:ts"
        },
        {
          "path": "cypress-tests/package.json",
          "locator": "devDependencies: typescript"
        }
      ],
      "upstream": "https://github.com/microsoft/TypeScript",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "cargo-hack",
      "method": "testing",
      "commands": [
        "cargo hack check --workspace --each-feature --all-targets --exclude-features v2 payment_v2"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "Makefile",
          "locator": "target hack (line 105)"
        }
      ],
      "upstream": "https://github.com/taiki-e/cargo-hack",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "cargo-test",
      "method": "testing",
      "commands": [
        "cargo test --all-features",
        "cargo nextest run"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "Makefile",
          "locator": "target test (line 85)"
        },
        {
          "path": "Makefile",
          "locator": "target nextest (line 94)"
        }
      ],
      "upstream": "https://github.com/rust-lang/cargo",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "prettier",
      "method": "formatting",
      "commands": [
        "prettier --config .prettierrc . --write",
        "prettier --config .prettierrc . --check"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.format"
        },
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.format:check"
        },
        {
          "path": "cypress-tests-v2/package.json",
          "locator": "devDependencies: prettier"
        },
        {
          "path": "cypress-tests/package.json",
          "locator": "devDependencies: prettier"
        },
        {
          "path": "cypress-tests-v2/.prettierrc.json",
          "locator": "config file"
        },
        {
          "path": "cypress-tests/.prettierrc",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/prettier/prettier",
      "docs": "https://prettier.io/docs/cli#exit-codes",
      "exit_codes": {
        "0": "everything formatted",
        "1": "something was not formatted (--check)",
        "2": "prettier error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "rustfmt",
      "method": "formatting",
      "commands": [
        "cargo fmt --all --check",
        "cargo fmt --all",
        "cargo fmt --all $(if $(call eq,$(dry_run),yes),-- --check,)",
        "cargo fmt {{ fmt_flags }} {{ FLAGS }}"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/CI-pr.yml",
          "locator": "jobs.formatting.steps[4] (Check formatting for forked pull requests)"
        },
        {
          "path": ".github/workflows/CI-pr.yml",
          "locator": "jobs.formatting.steps[5] (Run formatter)"
        },
        {
          "path": ".github/workflows/CI-push.yml",
          "locator": "jobs.formatting.steps[2] (Check formatting)"
        },
        {
          "path": "Makefile",
          "locator": "target fmt (line 53)"
        },
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        },
        {
          "path": ".rustfmt.toml",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/rust-lang/rustfmt",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cargo run --package router --no-default-features --features ${FEATURES}"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cog verify $COMMIT_MESSAGE"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pr-convention-checks.yml",
          "locator": "jobs.pr_title_conventional_commit_check.steps[3] (Verify commit message follows conventional commit standards)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cog verify $TITLE"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/pr-convention-checks.yml",
          "locator": "jobs.pr_title_conventional_commit_check.steps[2] (Verify PR title follows conventional commit standards)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cypress run --e2e"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "cypress-tests-v2/package.json",
          "locator": "scripts.cypress-e2e"
        },
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.cypress-e2e"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "local dest=cypress-tests/mitm-proxy/captures/${connector}"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.mitm-cassette-replay-cypress-tests.steps[17] (Download cassettes from S3)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "local gpg_path=/tmp/${connector}-${type}-cassettes.tar.gz.gpg"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.mitm-cassette-replay-cypress-tests.steps[17] (Download cassettes from S3)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "local src=${CONNECTOR_MOCK_DATA_S3_BUCKET_URI}/${connector}/${type}.tar.gz.gpg"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.mitm-cassette-replay-cypress-tests.steps[17] (Download cassettes from S3)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "local tar_path=/tmp/${connector}-${type}-cassettes.tar.gz"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.mitm-cassette-replay-cypress-tests.steps[17] (Download cassettes from S3)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "local type=$2"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.mitm-cassette-replay-cypress-tests.steps[17] (Download cassettes from S3)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "metadata --all-features --format-version 1 --no-deps"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node scripts/run-cypress.js"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.cypress:specs"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "nohup bash cypress-tests/mitm-proxy/start_replay.sh > $EXPR/mitm-replay.log 2>&1 &"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.mitm-cassette-replay-cypress-tests.steps[22] (Start mitmproxy replay)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "sort ) as $package_ids"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "swagger-cli validate ./api-reference/v1/openapi_spec_v1.json"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/validate-openapi-spec.yml",
          "locator": "jobs.validate_json.steps[9] (Validate the JSON file)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "swagger-cli validate ./api-reference/v2/openapi_spec_v2.json"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/validate-openapi-spec.yml",
          "locator": "jobs.validate_json.steps[10] (Validate the JSON file for V2)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tsx cypress/e2e/configs/mock-server/mockserver.ts"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/cypress-tests-runner.yml",
          "locator": "jobs.runner_alpha.steps[16] (Start mock servers for alpha connectors)"
        },
        {
          "path": "cypress-tests/package.json",
          "locator": "scripts.mockserver"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "unique"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "justfile",
          "locator": "recipe fmt (line 8)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
