{
  "repository": "firecrawl/firecrawl",
  "ref": "830fb0fb06c33360ad014e970338b263fd6723b5",
  "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": "clippy",
      "method": "static_analysis",
      "commands": [
        "cargo clippy --all-targets -- -D warnings -A clippy::needless_borrows_for_generic_args -A clippy::redundant_closure -A clippy::large_enum_variant -A clippy::extra_unused_lifetimes"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-rust-sdk.yml",
          "locator": "jobs.test.steps[5] (Run clippy)"
        }
      ],
      "upstream": "https://github.com/rust-lang/rust-clippy",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "go-vet",
      "method": "static_analysis",
      "commands": [
        "go vet ./..."
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/publish-go-sdk.yml",
          "locator": "jobs.publish.steps[2] (Build and vet)"
        },
        {
          "path": ".github/workflows/test-go-html-to-md-service.yml",
          "locator": "jobs.build-vet-test.steps[3] (Vet)"
        },
        {
          "path": ".github/workflows/test-go-sdk.yml",
          "locator": "jobs.build-and-vet.steps[3] (Vet)"
        }
      ],
      "upstream": "https://github.com/golang/go",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pylint",
      "method": "static_analysis",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "apps/python-sdk/.pylintrc",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/pylint-dev/pylint",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": true
    },
    {
      "tool": "cargo-test",
      "method": "testing",
      "commands": [
        "cargo test --lib"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/publish-rust-sdk.yml",
          "locator": "jobs.build.steps[7] (Run tests)"
        },
        {
          "path": ".github/workflows/test-rust-sdk.yml",
          "locator": "jobs.test.steps[6] (Run unit tests (mocked))"
        }
      ],
      "upstream": "https://github.com/rust-lang/cargo",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "ci-matrix",
      "method": "testing",
      "commands": [
        "self-host (engine: 2, proxy: 2, search: 1, ai: 1, nuq: 1, include: 1)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.strategy.matrix"
        }
      ],
      "upstream": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "go-test",
      "method": "testing",
      "commands": [
        "go test ./...",
        "go test -race ./..."
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-go-html-to-md-service.yml",
          "locator": "jobs.build-vet-test.steps[4] (Test)"
        },
        {
          "path": ".github/workflows/test-go-sdk.yml",
          "locator": "jobs.build-and-vet.steps[4] (Test)"
        }
      ],
      "upstream": "https://github.com/golang/go",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "node-test",
      "method": "testing",
      "commands": [
        "node --test .github/scripts/**/*.test.mjs"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-ci-scripts.yml",
          "locator": "jobs.test.steps[2] (Run node:test suites)"
        }
      ],
      "upstream": "https://github.com/nodejs/node",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "pytest",
      "method": "testing",
      "commands": [
        "pytest firecrawl/__tests__/unit -q"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-python-sdk.yml",
          "locator": "jobs.unit.steps[3] (Run unit tests)"
        }
      ],
      "upstream": "https://github.com/pytest-dev/pytest",
      "docs": "https://docs.pytest.org/en/stable/reference/exit-codes.html",
      "exit_codes": {
        "0": "all tests passed",
        "1": "some tests failed",
        "2": "interrupted by the user",
        "3": "internal error",
        "4": "command line usage error",
        "5": "no tests were collected"
      },
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "vitest",
      "method": "testing",
      "commands": [
        "vitest run src/services/alexandria/access.test.ts src/services/alexandria/terms.test.ts src/lib/exchange.test.ts src/__tests__/routes/exchange-agent-managed-key.routes.test.ts --maxWorkers=1 --reporter=default",
        "vitest run src/services/monitoring/runner.finalization.test.ts src/services/monitoring/runner.reservation.test.ts src/services/monitoring/store.finalization.test.ts src/services/monitoring/scheduler.test.ts --reporter=default",
        "vitest run src/services/autumn/__tests__/autumn.service.test.ts --reporter=default",
        "vitest run src/services/autumn/__tests__/usage.test.ts src/controllers/v2/__tests__/credit-usage-historical.test.ts --reporter=default",
        "vitest run src/services/billing/__tests__/batch_billing.test.ts --reporter=default"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[24] (Run Exchange terms compatibility regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[25] (Run monitor finalization regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[26] (Run Autumn billing service regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[27] (Run historical credit usage regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[28] (Run billing batch regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[29] (Run MCP credits billing regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[30] (Run safeFetch SSRF guard regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[31] (Run browser session DELETE regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[32] (Run browser options regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[33] (Run search safe filter regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[34] (Run crawl status cursor regression tests)"
        },
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[35] (Run agent interop auth and concurrency regression tests)"
        }
      ],
      "upstream": "https://github.com/vitest-dev/vitest",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "rustfmt",
      "method": "formatting",
      "commands": [
        "cargo fmt --check"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-rust-sdk.yml",
          "locator": "jobs.test.steps[3] (Check formatting)"
        },
        {
          "path": "apps/api/native/rustfmt.toml",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/rust-lang/rustfmt",
      "docs": null,
      "exit_codes": {},
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "prettier",
      "method": "formatting",
      "commands": [],
      "triggers": [],
      "evidence": [
        {
          "path": "apps/api/.prettierrc",
          "locator": "config file"
        },
        {
          "path": "apps/test-site/.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": true
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "Test"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[50] (Publish test report)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "cargo package --no-verify --allow-dirty"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/publish-rust-sdk.yml",
          "locator": "jobs.publish.steps[3] (Check the crate matches the build)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "declare -A AUDIT_FILES=("
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[9] (Report audit failures)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "declare -A AUDIT_OUTCOMES=("
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[9] (Report audit failures)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "dotnet test --no-build --configuration Release --logger \"trx"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-dotnet-sdk.yml",
          "locator": "jobs.build-and-test.steps[4] (Run unit tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "mix test"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/publish-elixir-sdk.yml",
          "locator": "jobs.regenerate.steps[4] (Test regenerated code)"
        },
        {
          "path": ".github/workflows/test-elixir-sdk.yml",
          "locator": "jobs.test.steps[4] (Run unit tests)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node .github/scripts/audit-ci-vuln-scan.mjs"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit-claude-remediation.yml",
          "locator": "jobs.scan.steps[3] (Scan default branch audit failures)"
        },
        {
          "path": ".github/workflows/npm-audit-claude-remediation.yml",
          "locator": "jobs.remediate.steps[3] (Rescan default branch audit failures)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tee /tmp/audit-outputs/api.txt"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[4] (Audit API Packages)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tee /tmp/audit-outputs/js-sdk-firecrawl.txt"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[7] (Audit JavaScript SDK Firecrawl Packages)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tee /tmp/audit-outputs/js-sdk.txt"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[6] (Audit JavaScript SDK Packages)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tee /tmp/audit-outputs/playwright-service.txt"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[5] (Audit Playwright Service Packages)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tee /tmp/audit-outputs/test-site.txt"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/npm-audit.yml",
          "locator": "jobs.audit.steps[8] (Audit Test Site Packages)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "tests = len(failed) + len(passed) + len(skipped)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/test-server.yml",
          "locator": "jobs.self-host.steps[50] (Publish test report)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
