diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 860366394..5f8d5aa7d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,18 +70,6 @@ jobs: fi echo "OK: All Python files carry the required SPDX header" - secrets: - name: Secret scan - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v6 - with: - python-version: "3.12" - enable-cache: true - - name: detect-secrets - run: uv run --isolated --no-project --with pre-commit pre-commit run detect-secrets --all-files - rust: name: Rust runs-on: ubuntu-latest @@ -209,7 +197,7 @@ jobs: ci-success: name: CI Success if: always() - needs: [lint, spdx-headers, secrets, rust, typecheck, test, slim-install-smoke] + needs: [lint, spdx-headers, rust, typecheck, test, slim-install-smoke] runs-on: ubuntu-latest steps: - name: Verify all jobs succeeded diff --git a/.hooks/detect_nvidia_api_key.py b/.hooks/detect_nvidia_api_key.py deleted file mode 100644 index 83dbda4a9..000000000 --- a/.hooks/detect_nvidia_api_key.py +++ /dev/null @@ -1,39 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -"""detect-secrets plugin for literal NVIDIA_API_KEY assignments.""" - -from __future__ import annotations - -import re -from collections.abc import Generator - -from detect_secrets.plugins.base import BasePlugin - - -class NvidiaApiKeyDetector(BasePlugin): - """Detects hard-coded NVIDIA_API_KEY values, including low-entropy literals.""" - - secret_type = "NVIDIA API Key" # pragma: allowlist secret - - _assignment = re.compile( - r""" - (?|::)\s* - (?P["']?) - (?P[^"'\s,;#()[\]{}]+) - (?P=quote) - (?=$|\s|[,;#]) - """, - flags=re.IGNORECASE | re.VERBOSE, - ) - - def analyze_string(self, string: str) -> Generator[str]: - """Yields literal NVIDIA_API_KEY values while allowing env/secret references.""" - for match in self._assignment.finditer(string): - secret = match.group("secret") - if secret.startswith(("$", "{", "<")): - continue - yield f"NVIDIA_API_KEY={secret}" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2d0a91f06..44520b79b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,17 +11,6 @@ repos: additional_dependencies: - "@commitlint/config-conventional@20.4.1" - - repo: https://github.com/Yelp/detect-secrets - rev: v1.5.0 - hooks: - - id: detect-secrets - name: detect-secrets (strict) - args: - - --baseline - - .secrets.baseline - - --no-verify - stages: [pre-commit] - - repo: local hooks: - id: spdx-headers diff --git a/.secrets.baseline b/.secrets.baseline deleted file mode 100644 index c5156f989..000000000 --- a/.secrets.baseline +++ /dev/null @@ -1,1193 +0,0 @@ -{ - "version": "1.5.0", - "plugins_used": [ - { - "name": "ArtifactoryDetector" - }, - { - "name": "AWSKeyDetector" - }, - { - "name": "AzureStorageKeyDetector" - }, - { - "name": "Base64HighEntropyString", - "limit": 4.5 - }, - { - "name": "BasicAuthDetector" - }, - { - "name": "CloudantDetector" - }, - { - "name": "DiscordBotTokenDetector" - }, - { - "name": "GitHubTokenDetector" - }, - { - "name": "GitLabTokenDetector" - }, - { - "name": "HexHighEntropyString", - "limit": 3.0 - }, - { - "name": "IbmCloudIamDetector" - }, - { - "name": "IbmCosHmacDetector" - }, - { - "name": "IPPublicDetector" - }, - { - "name": "JwtTokenDetector" - }, - { - "name": "KeywordDetector", - "keyword_exclude": "" - }, - { - "name": "MailchimpDetector" - }, - { - "name": "NpmDetector" - }, - { - "name": "NvidiaApiKeyDetector", - "path": "file://.hooks/detect_nvidia_api_key.py" - }, - { - "name": "OpenAIDetector" - }, - { - "name": "PrivateKeyDetector" - }, - { - "name": "PypiTokenDetector" - }, - { - "name": "SendGridDetector" - }, - { - "name": "SlackDetector" - }, - { - "name": "SoftlayerDetector" - }, - { - "name": "SquareOAuthDetector" - }, - { - "name": "StripeDetector" - }, - { - "name": "TelegramBotTokenDetector" - }, - { - "name": "TwilioKeyDetector" - } - ], - "filters_used": [ - { - "path": "detect_secrets.filters.allowlist.is_line_allowlisted" - }, - { - "path": "detect_secrets.filters.common.is_baseline_file", - "filename": ".secrets.baseline" - }, - { - "path": "detect_secrets.filters.heuristic.is_indirect_reference" - }, - { - "path": "detect_secrets.filters.heuristic.is_likely_id_string" - }, - { - "path": "detect_secrets.filters.heuristic.is_lock_file" - }, - { - "path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string" - }, - { - "path": "detect_secrets.filters.heuristic.is_potential_uuid" - }, - { - "path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign" - }, - { - "path": "detect_secrets.filters.heuristic.is_sequential_string" - }, - { - "path": "detect_secrets.filters.heuristic.is_swagger_file" - }, - { - "path": "detect_secrets.filters.heuristic.is_templated_secret" - } - ], - "results": { - ".agents/skills/run-pre-merge-checks/SKILL.md": [ - { - "type": "NVIDIA API Key", - "filename": ".agents/skills/run-pre-merge-checks/SKILL.md", - "hashed_secret": "53cb971a0ff606ab61cacef174113ed51d83a95c", - "is_verified": false, - "line_number": 96 - } - ], - ".agents/skills/switchyard-testing-ci/SKILL.md": [ - { - "type": "NVIDIA API Key", - "filename": ".agents/skills/switchyard-testing-ci/SKILL.md", - "hashed_secret": "b642311b769eb71abee8feb20c6fccf4df2590e5", - "is_verified": false, - "line_number": 34 - }, - { - "type": "NVIDIA API Key", - "filename": ".agents/skills/switchyard-testing-ci/SKILL.md", - "hashed_secret": "a0b03e165dc9d7b76f6f04c969dc2c80f2bcf207", - "is_verified": false, - "line_number": 126 - } - ], - ".github/workflows/getting-started.yml": [ - { - "type": "Secret Keyword", - "filename": ".github/workflows/getting-started.yml", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 63 - }, - { - "type": "Secret Keyword", - "filename": ".github/workflows/getting-started.yml", - "hashed_secret": "35188bb026d29646649697a020aa4803df869146", - "is_verified": false, - "line_number": 64 - }, - { - "type": "NVIDIA API Key", - "filename": ".github/workflows/getting-started.yml", - "hashed_secret": "dc7bf574194d8a25836c6714b168ab13246765ae", - "is_verified": false, - "line_number": 64 - }, - { - "type": "Secret Keyword", - "filename": ".github/workflows/getting-started.yml", - "hashed_secret": "fd9a45bc0b07706d849cf85021ecf9123fa83d82", - "is_verified": false, - "line_number": 65 - } - ], - ".github/workflows/readme.yml": [ - { - "type": "Secret Keyword", - "filename": ".github/workflows/readme.yml", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 61 - }, - { - "type": "Secret Keyword", - "filename": ".github/workflows/readme.yml", - "hashed_secret": "35188bb026d29646649697a020aa4803df869146", - "is_verified": false, - "line_number": 62 - }, - { - "type": "NVIDIA API Key", - "filename": ".github/workflows/readme.yml", - "hashed_secret": "dc7bf574194d8a25836c6714b168ab13246765ae", - "is_verified": false, - "line_number": 62 - }, - { - "type": "Secret Keyword", - "filename": ".github/workflows/readme.yml", - "hashed_secret": "fd9a45bc0b07706d849cf85021ecf9123fa83d82", - "is_verified": false, - "line_number": 63 - } - ], - "AGENTS.md": [ - { - "type": "Secret Keyword", - "filename": "AGENTS.md", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 248 - }, - { - "type": "Secret Keyword", - "filename": "AGENTS.md", - "hashed_secret": "a219d7693c25cd2d93313512e200ff3eb374d281", - "is_verified": false, - "line_number": 249 - } - ], - "CONTRIBUTING.md": [ - { - "type": "Secret Keyword", - "filename": "CONTRIBUTING.md", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 162 - } - ], - "DEVELOPMENT.md": [ - { - "type": "Secret Keyword", - "filename": "DEVELOPMENT.md", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 98 - } - ], - "INSTALLATION.md": [ - { - "type": "Secret Keyword", - "filename": "INSTALLATION.md", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 121 - } - ], - "README.md": [ - { - "type": "Secret Keyword", - "filename": "README.md", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 165 - } - ], - "crates/switchyard-components-v2/src/profiles/stage_router.rs": [ - { - "type": "Secret Keyword", - "filename": "crates/switchyard-components-v2/src/profiles/stage_router.rs", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 1341 - } - ], - "crates/switchyard-components-v2/tests/stage_router_profile.rs": [ - { - "type": "Secret Keyword", - "filename": "crates/switchyard-components-v2/tests/stage_router_profile.rs", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 273 - } - ], - "crates/switchyard-components/tests/adversarial_random_routing.rs": [ - { - "type": "Secret Keyword", - "filename": "crates/switchyard-components/tests/adversarial_random_routing.rs", - "hashed_secret": "e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4", - "is_verified": false, - "line_number": 172 - } - ], - "docs/cli_reference.md": [ - { - "type": "Secret Keyword", - "filename": "docs/cli_reference.md", - "hashed_secret": "a219d7693c25cd2d93313512e200ff3eb374d281", - "is_verified": false, - "line_number": 189 - }, - { - "type": "Secret Keyword", - "filename": "docs/cli_reference.md", - "hashed_secret": "414cb2d928610e260b1b00de84c809d2adef2480", - "is_verified": false, - "line_number": 561 - } - ], - "examples/minimal.py": [ - { - "type": "Secret Keyword", - "filename": "examples/minimal.py", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 16 - } - ], - "examples/secrets.template.json": [ - { - "type": "Secret Keyword", - "filename": "examples/secrets.template.json", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 1 - } - ], - "examples/utils.py": [ - { - "type": "Secret Keyword", - "filename": "examples/utils.py", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 94 - } - ], - "switchyard/cli/launch_command.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/cli/launch_command.py", - "hashed_secret": "829c3804401b0727f70f73d4415e162400cbe57b", - "is_verified": false, - "line_number": 385 - } - ], - "switchyard/cli/launchers/codex_cli_launcher.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/cli/launchers/codex_cli_launcher.py", - "hashed_secret": "d045e8d5ed6f12c9fab9e0ae33f52105390afb7d", - "is_verified": false, - "line_number": 273 - } - ], - "switchyard/cli/launchers/openclaw_launcher.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/cli/launchers/openclaw_launcher.py", - "hashed_secret": "94374a0a5390c46dd288058cc0d38509ccb2360e", - "is_verified": false, - "line_number": 112 - }, - { - "type": "Secret Keyword", - "filename": "switchyard/cli/launchers/openclaw_launcher.py", - "hashed_secret": "d045e8d5ed6f12c9fab9e0ae33f52105390afb7d", - "is_verified": false, - "line_number": 113 - } - ], - "switchyard/lib/llm_client.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/lib/llm_client.py", - "hashed_secret": "ce63842cd0b4e6d3609512c6e0e81b0626dbdbb2", - "is_verified": false, - "line_number": 68 - } - ], - "switchyard/lib/proxy_context.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/lib/proxy_context.py", - "hashed_secret": "70ca3ed5e568a3c9180bbb4496f1a2072e4ef36f", - "is_verified": false, - "line_number": 43 - } - ], - "switchyard/lib/request_metadata.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/lib/request_metadata.py", - "hashed_secret": "d045e8d5ed6f12c9fab9e0ae33f52105390afb7d", - "is_verified": false, - "line_number": 25 - } - ], - "switchyard/server/verify.py": [ - { - "type": "Secret Keyword", - "filename": "switchyard/server/verify.py", - "hashed_secret": "d045e8d5ed6f12c9fab9e0ae33f52105390afb7d", - "is_verified": false, - "line_number": 883 - } - ], - "tests/e2e/test_closed_book_proxy_integration.py": [ - { - "type": "Basic Auth Credentials", - "filename": "tests/e2e/test_closed_book_proxy_integration.py", - "hashed_secret": "28e2bca89d8c60c5115a5b9e6663519ec2c9903c", - "is_verified": false, - "line_number": 200 - } - ], - "tests/e2e/test_evict_reroute_e2e.py": [ - { - "type": "NVIDIA API Key", - "filename": "tests/e2e/test_evict_reroute_e2e.py", - "hashed_secret": "ca19e614b4b099e0cfb439394cba84ccab67f3fa", - "is_verified": false, - "line_number": 27 - }, - { - "type": "NVIDIA API Key", - "filename": "tests/e2e/test_evict_reroute_e2e.py", - "hashed_secret": "d5017482ed9020c9d63a7f5f5f386f11f8f22286", - "is_verified": false, - "line_number": 148 - } - ], - "tests/e2e/test_llm_classifier_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/e2e/test_llm_classifier_e2e.py", - "hashed_secret": "908ac152e54bb4ec31cc1d7d5b186da7a42f9568", - "is_verified": false, - "line_number": 304 - } - ], - "tests/e2e/test_passthrough_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/e2e/test_passthrough_e2e.py", - "hashed_secret": "05887762195ff01228438cdcfe6f328a2d0f2d7f", - "is_verified": false, - "line_number": 69 - } - ], - "tests/e2e/test_passthrough_responses_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/e2e/test_passthrough_responses_e2e.py", - "hashed_secret": "05887762195ff01228438cdcfe6f328a2d0f2d7f", - "is_verified": false, - "line_number": 74 - } - ], - "tests/e2e/test_planning_request_processor_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/e2e/test_planning_request_processor_e2e.py", - "hashed_secret": "908ac152e54bb4ec31cc1d7d5b186da7a42f9568", - "is_verified": false, - "line_number": 368 - } - ], - "tests/e2e/test_verify_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/e2e/test_verify_e2e.py", - "hashed_secret": "9f4b76d9d5f6ed80c3c2618afe80373f0779626e", - "is_verified": false, - "line_number": 200 - } - ], - "tests/getting_started/test_getting_started.py": [ - { - "type": "Secret Keyword", - "filename": "tests/getting_started/test_getting_started.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 139 - }, - { - "type": "Secret Keyword", - "filename": "tests/getting_started/test_getting_started.py", - "hashed_secret": "fd9a45bc0b07706d849cf85021ecf9123fa83d82", - "is_verified": false, - "line_number": 140 - } - ], - "tests/test_anthropic_native_llm_backend.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_anthropic_native_llm_backend.py", - "hashed_secret": "fd9a45bc0b07706d849cf85021ecf9123fa83d82", - "is_verified": false, - "line_number": 21 - } - ], - "tests/test_anthropic_probe.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_anthropic_probe.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 55 - } - ], - "tests/test_backend_format_resolver.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_backend_format_resolver.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 168 - } - ], - "tests/test_classifier_planner_chain.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_classifier_planner_chain.py", - "hashed_secret": "12ac671e9c31ee77dad7ea81b4bfd49b51e919ec", - "is_verified": false, - "line_number": 138 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_classifier_planner_chain.py", - "hashed_secret": "670e8130cc84d575d3ed407e895bfbd7599f100c", - "is_verified": false, - "line_number": 148 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_classifier_planner_chain.py", - "hashed_secret": "3fc3d4b4befbbaf125734ac8ec191ea838a42409", - "is_verified": false, - "line_number": 158 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_classifier_planner_chain.py", - "hashed_secret": "b5c6868909310cc70c0f3884c6f2246055bd174a", - "is_verified": false, - "line_number": 164 - } - ], - "tests/test_deterministic_routing_cache_wrapping.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_deterministic_routing_cache_wrapping.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 47 - } - ], - "tests/test_deterministic_routing_profile.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_deterministic_routing_profile.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 59 - } - ], - "tests/test_intake_cli_flags.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_intake_cli_flags.py", - "hashed_secret": "ae2dccd30280b862bc3ee22a16f4ad61d0dcd2e9", - "is_verified": false, - "line_number": 78 - } - ], - "tests/test_latency_service_health_metrics.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_health_metrics.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 51 - } - ], - "tests/test_latency_service_llm_backend.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_llm_backend.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 63 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_llm_backend.py", - "hashed_secret": "35188bb026d29646649697a020aa4803df869146", - "is_verified": false, - "line_number": 947 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_llm_backend.py", - "hashed_secret": "8294c1af1a5c47187ddf7f15c6fd13f0d4619bec", - "is_verified": false, - "line_number": 1009 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_llm_backend.py", - "hashed_secret": "3922bcd29ff79bae723278599532a5cfd75e9b9f", - "is_verified": false, - "line_number": 1244 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_llm_backend.py", - "hashed_secret": "d50bd504c3d7f5dae7d6bf0f06e18280954ba408", - "is_verified": false, - "line_number": 1319 - } - ], - "tests/test_latency_service_stats_metrics.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_latency_service_stats_metrics.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 42 - } - ], - "tests/test_launch_claude.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_launch_claude.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 273 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_claude.py", - "hashed_secret": "ae2dccd30280b862bc3ee22a16f4ad61d0dcd2e9", - "is_verified": false, - "line_number": 529 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_claude.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 580 - } - ], - "tests/test_launch_codex.py": [ - { - "type": "Base64 High Entropy String", - "filename": "tests/test_launch_codex.py", - "hashed_secret": "6687145a68311da1a41ce7cd9e709f7fc6138991", - "is_verified": false, - "line_number": 227 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_codex.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 334 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_codex.py", - "hashed_secret": "d045e8d5ed6f12c9fab9e0ae33f52105390afb7d", - "is_verified": false, - "line_number": 357 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_codex.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 610 - } - ], - "tests/test_launch_openclaw.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_launch_openclaw.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 402 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_openclaw.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 702 - } - ], - "tests/test_launch_route_builder.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_launch_route_builder.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 23 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_route_builder.py", - "hashed_secret": "450c76da55f01231662a8bb52d894f004c601b47", - "is_verified": false, - "line_number": 59 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_route_builder.py", - "hashed_secret": "0120d11ff7768fae12cd00ae5d7f101bcc733a3e", - "is_verified": false, - "line_number": 65 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_launch_route_builder.py", - "hashed_secret": "c3a785cf6adeb5eff0ec9b7316810facc5effc00", - "is_verified": false, - "line_number": 243 - } - ], - "tests/test_llm_classifier_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_llm_classifier_e2e.py", - "hashed_secret": "12ac671e9c31ee77dad7ea81b4bfd49b51e919ec", - "is_verified": false, - "line_number": 80 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_llm_classifier_e2e.py", - "hashed_secret": "3fc3d4b4befbbaf125734ac8ec191ea838a42409", - "is_verified": false, - "line_number": 92 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_llm_classifier_e2e.py", - "hashed_secret": "b5c6868909310cc70c0f3884c6f2246055bd174a", - "is_verified": false, - "line_number": 98 - } - ], - "tests/test_llm_client.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_llm_client.py", - "hashed_secret": "c77a24bfec49c5b2e2b22fab5369ff079fa4431a", - "is_verified": false, - "line_number": 63 - } - ], - "tests/test_outcome_metrics.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_outcome_metrics.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 209 - } - ], - "tests/test_passthrough_profile_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_passthrough_profile_e2e.py", - "hashed_secret": "68d02eebd4038811ea74aa98bd396ec8bc29a3b0", - "is_verified": false, - "line_number": 183 - } - ], - "tests/test_plan_execute_profile.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_plan_execute_profile.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 39 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_plan_execute_profile.py", - "hashed_secret": "13951588fd3325e25ed1e3b116d7009fb221c85e", - "is_verified": false, - "line_number": 259 - } - ], - "tests/test_plugin_routing_request_processor.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_plugin_routing_request_processor.py", - "hashed_secret": "9dbafbdde45c12777137d7b73ca9e8a86d993e71", - "is_verified": false, - "line_number": 281 - } - ], - "tests/test_profile_migration.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_profile_migration.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 307 - } - ], - "tests/test_proxy_event_loop.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_proxy_event_loop.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 230 - } - ], - "tests/test_python_profile_loader.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_python_profile_loader.py", - "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", - "is_verified": false, - "line_number": 165 - } - ], - "tests/test_random_routing_config.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_random_routing_config.py", - "hashed_secret": "465c92194cdce1b32e84e8b04c5a7449edf5f334", - "is_verified": false, - "line_number": 75 - } - ], - "tests/test_random_routing_llm_backend.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_random_routing_llm_backend.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 91 - } - ], - "tests/test_random_routing_presets.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_random_routing_presets.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 121 - } - ], - "tests/test_random_routing_profile.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_random_routing_profile.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 347 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_random_routing_profile.py", - "hashed_secret": "49fd535e63175a827aab3eff9ac58a9e82460ac9", - "is_verified": false, - "line_number": 396 - } - ], - "tests/test_rl_logging_e2e.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_rl_logging_e2e.py", - "hashed_secret": "829c3804401b0727f70f73d4415e162400cbe57b", - "is_verified": false, - "line_number": 39 - } - ], - "tests/test_route_bundle.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "b7145a527e53f49edf8d0dfde2397388bde307d3", - "is_verified": false, - "line_number": 92 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "bab8c24b2aed9fa8aa0898434c2c02805e1e8498", - "is_verified": false, - "line_number": 120 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "fbd6354972d19a21c55d9f569397b50602b6c99e", - "is_verified": false, - "line_number": 241 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "d8692452906c139cf16bc8cbb37026102dc978f9", - "is_verified": false, - "line_number": 246 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "36324ef1c39864bb3f4434ef71f3d8fe2a7be4aa", - "is_verified": false, - "line_number": 334 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "63a15f08cc656c7d6a095383051bf974750da505", - "is_verified": false, - "line_number": 339 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "e449e5bb663d63621f25ba82fb419387782120e3", - "is_verified": false, - "line_number": 783 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "c0ed1602c8d31fdc29a4e11eedd725778fdca908", - "is_verified": false, - "line_number": 792 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "829c3804401b0727f70f73d4415e162400cbe57b", - "is_verified": false, - "line_number": 969 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "59d6d82c4087ecd7141b9a3c2dc1ee4cdc27aeba", - "is_verified": false, - "line_number": 1318 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "918f32a837ac1a55756aabe04a8e6c696707da4e", - "is_verified": false, - "line_number": 1323 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "fe72967536aedcae9b1b1e4eaf2c53494e17a638", - "is_verified": false, - "line_number": 1350 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_bundle.py", - "hashed_secret": "2468398e45ffff540a52cbb98cd84e7c07d92832", - "is_verified": false, - "line_number": 1465 - } - ], - "tests/test_route_table.py": [ - { - "type": "Base64 High Entropy String", - "filename": "tests/test_route_table.py", - "hashed_secret": "6687145a68311da1a41ce7cd9e709f7fc6138991", - "is_verified": false, - "line_number": 119 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_route_table.py", - "hashed_secret": "7a4cf7768c2b4ce9fb245e0c2c10110258d239a7", - "is_verified": false, - "line_number": 189 - } - ], - "tests/test_routing_banner.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_routing_banner.py", - "hashed_secret": "a62f2225bf70bfaccbc7f1ef2a397836717377de", - "is_verified": false, - "line_number": 146 - } - ], - "tests/test_run_manifest.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_run_manifest.py", - "hashed_secret": "920025a944b7037f2c0ab7f2bb7746de0993a803", - "is_verified": false, - "line_number": 235 - } - ], - "tests/test_stage_router_pickers.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_stage_router_pickers.py", - "hashed_secret": "58801e3391955d7ee7d51ba293351c3176f5b682", - "is_verified": false, - "line_number": 76 - } - ], - "tests/test_stage_router_profile.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_stage_router_profile.py", - "hashed_secret": "766a6e8998aefe2117d62c2d48411e43161ffa11", - "is_verified": false, - "line_number": 53 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_stage_router_profile.py", - "hashed_secret": "764a55c03be338b684fc85b2336605342d3f4d6a", - "is_verified": false, - "line_number": 87 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_stage_router_profile.py", - "hashed_secret": "94aea60ba48c4e1711743f774291c8e653e0aceb", - "is_verified": false, - "line_number": 93 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_stage_router_profile.py", - "hashed_secret": "78427fc6cb8c9b8e955831b74962993f5decad22", - "is_verified": false, - "line_number": 98 - } - ], - "tests/test_stage_router_request_processor.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_stage_router_request_processor.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 27 - } - ], - "tests/test_stream_leak_repro.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_stream_leak_repro.py", - "hashed_secret": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", - "is_verified": false, - "line_number": 123 - } - ], - "tests/test_switchyard_rust_component_bindings.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_switchyard_rust_component_bindings.py", - "hashed_secret": "e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4", - "is_verified": false, - "line_number": 81 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_switchyard_rust_component_bindings.py", - "hashed_secret": "a62f2225bf70bfaccbc7f1ef2a397836717377de", - "is_verified": false, - "line_number": 245 - } - ], - "tests/test_telemetry.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_telemetry.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 94 - } - ], - "tests/test_upstream_error_passthrough.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_upstream_error_passthrough.py", - "hashed_secret": "48854c46907b8f99e4c4c711f3fb7336a93bc290", - "is_verified": false, - "line_number": 95 - } - ], - "tests/test_user_config.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_user_config.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 51 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_user_config.py", - "hashed_secret": "dafbac184f8181c1ee065f77673fa9ff6732151f", - "is_verified": false, - "line_number": 366 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_user_config.py", - "hashed_secret": "ee82dc5afbdde185b8b4fd4d177300b87c97da0f", - "is_verified": false, - "line_number": 379 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_user_config.py", - "hashed_secret": "1b8a6878472757aff534e4d8be594c3422c85c93", - "is_verified": false, - "line_number": 385 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_user_config.py", - "hashed_secret": "8ed1b64b9458f680811deea107475f442301354f", - "is_verified": false, - "line_number": 556 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_user_config.py", - "hashed_secret": "86b4a095a59f87e8e99747d032daba8927df5689", - "is_verified": false, - "line_number": 568 - } - ], - "tests/test_verify.py": [ - { - "type": "Secret Keyword", - "filename": "tests/test_verify.py", - "hashed_secret": "d045e8d5ed6f12c9fab9e0ae33f52105390afb7d", - "is_verified": false, - "line_number": 624 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_verify.py", - "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", - "is_verified": false, - "line_number": 815 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_verify.py", - "hashed_secret": "ae62e4a262e94ef3612d3323fe88daac60ccd673", - "is_verified": false, - "line_number": 1118 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_verify.py", - "hashed_secret": "5a4455bc4175677795a7705f298d460f93314658", - "is_verified": false, - "line_number": 1152 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_verify.py", - "hashed_secret": "0462a3a08b5ffbee410c5af117873a0a9580d2a6", - "is_verified": false, - "line_number": 1165 - }, - { - "type": "Secret Keyword", - "filename": "tests/test_verify.py", - "hashed_secret": "c0745ace1096f365f28b434a3134a31caf7666cd", - "is_verified": false, - "line_number": 1373 - } - ] - }, - "generated_at": "2026-07-09T16:39:36Z" -}