{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-3294502d064a4619", "name": "Possibly dead Python function: update_last_push", "shortDescription": {"text": "Possibly dead Python function: update_last_push"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bce6b7f3fe34190b", "name": "Possibly dead Python function: update_last_push", "shortDescription": {"text": "Possibly dead Python function: update_last_push"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f3ba041f0577f59", "name": "Possibly dead Python function: health_check", "shortDescription": {"text": "Possibly dead Python function: health_check"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa8cc43cc599e0ef", "name": "Possibly dead Python function: to_calldata", "shortDescription": {"text": "Possibly dead Python function: to_calldata"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2eceb3ea2f0833b", "name": "Possibly dead Python function: add_sync_methods", "shortDescription": {"text": "Possibly dead Python function: add_sync_methods"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4cbdaf9557f5d79c", "name": "Possibly dead Python function: build_erc4626_mapping", "shortDescription": {"text": "Possibly dead Python function: build_erc4626_mapping"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-789c17bb140f57e8", "name": "Possibly dead Python function: fetch_quantities", "shortDescription": {"text": "Possibly dead Python function: fetch_quantities"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c61eff7e8400bc96", "name": "Possibly dead Python function: extract_strike_price_and_option_type", "shortDescription": {"text": "Possibly dead Python function: extract_strike_price_and_option_type"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4eb8c47f522576d4", "name": "Possibly dead Python function: fetch_expiry_timestamp", "shortDescription": {"text": "Possibly dead Python function: fetch_expiry_timestamp"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39f3c924ea60ba2b", "name": "Possibly dead Python function: set_publisher", "shortDescription": {"text": "Possibly dead Python function: set_publisher"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cf2a88f204a791b", "name": "Possibly dead Python function: make_secret_key", "shortDescription": {"text": "Possibly dead Python function: make_secret_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09051d5e6ac51c9f", "name": "Possibly dead Python function: uint256_to_2_128", "shortDescription": {"text": "Possibly dead Python function: uint256_to_2_128"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acb2a514e46db15f", "name": "Possibly dead Python function: verify_randomness", "shortDescription": {"text": "Possibly dead Python function: verify_randomness"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-967d816be1bee19d", "name": "Possibly dead Python function: spot_entry_to_faucon_topic", "shortDescription": {"text": "Possibly dead Python function: spot_entry_to_faucon_topic"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcef21857951c0e6", "name": "Dockerfile runs as root: lambda/monitor-balances/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: lambda/monitor-balances/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fa87ff1f31afdcf", "name": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/lambda/python:3.11", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/lambda/python:3.11"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f4f054c9d8b29f4", "name": "Dockerfile runs as root: lambda/nostra-lp-pricer/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: lambda/nostra-lp-pricer/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-683309947b0b2123", "name": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/lambda/python:3.12-x86_64", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/lambda/python:3.12-x86_64"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6cc0bc6c1bef6e7", "name": "Dockerfile runs as root: price-pusher/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: price-pusher/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8458a2c4e4573ab", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-128a277c00a3d46d", "name": "Dockerfile runs as root: pragma-sdk/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: pragma-sdk/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0195dbf6253727df", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bullseye", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bullseye"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-989b1a411b9f565a", "name": "Dockerfile runs as root: infra/price-pusher/pragma/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: infra/price-pusher/pragma/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b7b2b6c67fbf29a4", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0db6f860f7c490a", "name": "Dockerfile runs as root: infra/price-pusher/onchain/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: infra/price-pusher/onchain/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfba48e9a4c24c9f", "name": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/docker/library/python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/docker/library/python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76d0ada7368acb0f", "name": "Dockerfile runs as root: infra/lmax-connector/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: infra/lmax-connector/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57a8c2e315a3e219", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ac70d92cbc50b21", "name": "Dockerfile runs as root: infra/checkpointer/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: infra/checkpointer/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9f44aa3bb984f5c", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b0a8523d7b8edfc", "name": "Dockerfile runs as root: lmax-connector/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: lmax-connector/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-693d770dc2c10f3b", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcbbfe4317e39dba", "name": "Dockerfile runs as root: checkpointer/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: checkpointer/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-babb701d8b837edf", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14d7ce6c4328583c", "name": "Dockerfile runs as root: vrf-listener/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: vrf-listener/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-12babff4b2274dcb", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4165dfa45dd137a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "pypa/gh-action-pypi-publish@release/v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9f80e31cc4a4432", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1623abe158fd226b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-473401e5c6115402", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a50467f36b413ec", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f54d0d3a389cb4de", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/setup-buildx-action@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a53bf972e19b52fd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "samuelcolvin/check-python-version@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ffa33751be3d771", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 39 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af3ef40c82d60114", "name": "Network/subprocess call without timeout or try/except \u2014 lambda/monitor-balances/app.py:84", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 lambda/monitor-balances/app.py:84"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f62a99fca4ed32b", "name": "Blocking `requests.get(...)` inside `async def _handler` \u2014 lambda/monitor-balances/app.py:84", "shortDescription": {"text": "Blocking `requests.get(...)` inside `async def _handler` \u2014 lambda/monitor-balances/app.py:84"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `requests.get(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f291c388fa639ca", "name": "Network/subprocess call without timeout or try/except \u2014 lambda/nostra-lp-pricer/app.py:36", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 lambda/nostra-lp-pricer/app.py:36"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-750420405f5354c9", "name": "Blocking `requests.get(...)` inside `async def _handler` \u2014 lambda/nostra-lp-pricer/app.py:36", "shortDescription": {"text": "Blocking `requests.get(...)` inside `async def _handler` \u2014 lambda/nostra-lp-pricer/app.py:36"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `requests.get(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4712e38deec81622", "name": "Commented-code block (8 lines) in price-pusher/price_pusher/core/pusher.py:150", "shortDescription": {"text": "Commented-code block (8 lines) in price-pusher/price_pusher/core/pusher.py:150"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6236cfdb87295c4d", "name": "Commented-code block (5 lines) in pragma-sdk/plot_xstrk_feed.py:1", "shortDescription": {"text": "Commented-code block (5 lines) in pragma-sdk/plot_xstrk_feed.py:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26f5466cf14d84be", "name": "Legacy-named symbol `sign_deploy_account_v1` in pragma-sdk/tests/integration/utils.py:50", "shortDescription": {"text": "Legacy-named symbol `sign_deploy_account_v1` in pragma-sdk/tests/integration/utils.py:50"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2435819d3476b34e", "name": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/client_test.py:63", "shortDescription": {"text": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/client_test.py:63"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9510aedd5187abd", "name": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/merkle_feed_test.py:59", "shortDescription": {"text": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/merkle_feed_test.py:59"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-436cf2e9588805cc", "name": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/vrf_test.py:84", "shortDescription": {"text": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/vrf_test.py:84"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e1c52160c69909c", "name": "Commented-code block (5 lines) in pragma-sdk/pragma_sdk/miden/client.py:19", "shortDescription": {"text": "Commented-code block (5 lines) in pragma-sdk/pragma_sdk/miden/client.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ca5c3782cc8cad5", "name": "Legacy-named symbol `sign_invoke_v1` in pragma-sdk/pragma_sdk/onchain/types/contract.py:56", "shortDescription": {"text": "Legacy-named symbol `sign_invoke_v1` in pragma-sdk/pragma_sdk/onchain/types/contract.py:56"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-501697a92b9a3272", "name": "Legacy-named symbol `prepare_invoke_v1` in pragma-sdk/pragma_sdk/onchain/mixins/randomness.py:102", "shortDescription": {"text": "Legacy-named symbol `prepare_invoke_v1` in pragma-sdk/pragma_sdk/onchain/mixins/randomness.py:102"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f57ef41b0fe385e4", "name": "Commented-code block (5 lines) in pragma-sdk/pragma_sdk/common/fetchers/fetchers/ekubo.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in pragma-sdk/pragma_sdk/common/fetchers/fetchers/ekubo.py:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a4f2647ed7751aa", "name": "Network/subprocess call without timeout or try/except \u2014 pragma-sdk/pragma_sdk/common/fetchers/fetchers/indexcoop.py:61", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 pragma-sdk/pragma_sdk/common/fetchers/fetchers/indexcoop.py:61"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f5d480dd3c83a3b", "name": "Stub function `get_expiry` (body is just `pass`/`return`) \u2014 pragma-sdk/pragma_sdk/common/types/entry.py:191", "shortDescription": {"text": "Stub function `get_expiry` (body is just `pass`/`return`) \u2014 pragma-sdk/pragma_sdk/common/types/entry.py:191"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b18146a564ca9bd", "name": "Legacy-named symbol `deploy_v1` in checkpointer/tests/integration/fixtures/contracts.py:35", "shortDescription": {"text": "Legacy-named symbol `deploy_v1` in checkpointer/tests/integration/fixtures/contracts.py:35"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4009885f3d39f7b0", "name": "Legacy-named symbol `deploy_v1` in vrf-listener/tests/integration/fixtures/clients.py:104", "shortDescription": {"text": "Legacy-named symbol `deploy_v1` in vrf-listener/tests/integration/fixtures/clients.py:104"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5089908d7ece372", "name": "Legacy-named symbol `deploy_v1` in vrf-listener/benchmark/deploy.py:69", "shortDescription": {"text": "Legacy-named symbol `deploy_v1` in vrf-listener/benchmark/deploy.py:69"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7acb8b9778f67cfe", "name": "Legacy-named symbol `invoke_v1` in vrf-listener/benchmark/client.py:86", "shortDescription": {"text": "Legacy-named symbol `invoke_v1` in vrf-listener/benchmark/client.py:86"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e92575daefb13e66", "name": "Legacy-named symbol `invoke_v1` in vrf-listener/benchmark/stress/stress_tester.py:292", "shortDescription": {"text": "Legacy-named symbol `invoke_v1` in vrf-listener/benchmark/stress/stress_tester.py:292"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0b17c8c07a7421d", "name": "8 env vars used in code but missing from .env.example", "shortDescription": {"text": "8 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BETTERUPTIME_ID`, `CHAT_ID`, `GCP_PROJECT_ID`, `IGNORE_PUBLISHERS`, `NETWORK`, `SECRET_NAME`, `TELEGRAM_BOT_USER_OAUTH_TOKEN`, `THRESHOLD_WEI`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nprice-pusher/price_pusher/fastapi_health_server.py:health_check, price-pusher/price_pusher/health_server.py:health_check\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npragma-sdk/pragma_sdk/onchain/types/types.py:to_list, pragma-sdk/pragma_sdk/onchain/types/types.py:to_list, pragma-sdk/pragma_sdk/onchain/types/types.py:to_list, pragma-sdk/pragma_sdk/onchain/types/types.py:to_list\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npragma-sdk/pragma_sdk/common/fetchers/fetcher_client.py:fetchers, pragma-sdk/pragma_sdk/common/fetchers/fetcher_client.py:fetchers, pragma-sdk/pragma_sdk/common/fetchers/fetcher_client.py:fetch\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npragma-sdk/pragma_sdk/common/fetchers/fetchers/bitstamp.py:fetch_pair, pragma-sdk/pragma_sdk/common/fetchers/fetchers/bitstamp.py:fetch, pragma-sdk/pragma_sdk/common/fetchers/fetchers/coinbase.py:fetch_pair, pragma-sdk/pragma_sdk/common/fetchers/fetchers/coinbase.py:fetch\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npragma-sdk/pragma_sdk/common/fetchers/fetchers/bybit.py:operate_usdt_hop, pragma-sdk/pragma_sdk/common/fetchers/fetchers/huobi.py:operate_usdt_hop, pragma-sdk/pragma_sdk/common/fetchers/fetchers/kucoin.py:operate_usdt_hop, pragma-sdk/pragma_sdk/common/fetchers/fetchers/bitget.py:operate_usdt_hop\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24362"}, "properties": {"repository": "astraly-labs/pragma-sdk", "repoUrl": "https://github.com/astraly-labs/pragma-sdk", "branch": "main"}, "results": [{"ruleId": "scanner-3294502d064a4619", "level": "note", "message": {"text": "Possibly dead Python function: update_last_push"}, "properties": {"repobilityId": "2644d88c2e76da77", "scanner": "scanner-primary", "fingerprint": "3294502d064a4619", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "price-pusher/price_pusher/fastapi_health_server.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bce6b7f3fe34190b", "level": "note", "message": {"text": "Possibly dead Python function: update_last_push"}, "properties": {"repobilityId": "2644d88c2e76da77", "scanner": "scanner-primary", "fingerprint": "bce6b7f3fe34190b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "price-pusher/price_pusher/health_server.py:29"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f3ba041f0577f59", "level": "note", "message": {"text": "Possibly dead Python function: health_check"}, "properties": {"repobilityId": "a08f81cc62fccf65", "scanner": "scanner-primary", "fingerprint": "8f3ba041f0577f59", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "price-pusher/price_pusher/health_server.py:35"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa8cc43cc599e0ef", "level": "note", "message": {"text": "Possibly dead Python function: to_calldata"}, "properties": {"repobilityId": "07c4c6b465dcf4de", "scanner": "scanner-primary", "fingerprint": "aa8cc43cc599e0ef", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/onchain/types/types.py:132"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e2eceb3ea2f0833b", "level": "note", "message": {"text": "Possibly dead Python function: add_sync_methods"}, "properties": {"repobilityId": "03d10cbd6eaf2d62", "scanner": "scanner-primary", "fingerprint": "e2eceb3ea2f0833b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/utils.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4cbdaf9557f5d79c", "level": "note", "message": {"text": "Possibly dead Python function: build_erc4626_mapping"}, "properties": {"repobilityId": "57931c5b039eb5a7", "scanner": "scanner-primary", "fingerprint": "4cbdaf9557f5d79c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/fetchers/fetchers/erc4626.py:290"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-789c17bb140f57e8", "level": "note", "message": {"text": "Possibly dead Python function: fetch_quantities"}, "properties": {"repobilityId": "46195eb0f2cbfdde", "scanner": "scanner-primary", "fingerprint": "789c17bb140f57e8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/fetchers/fetchers/indexcoop.py:59"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c61eff7e8400bc96", "level": "note", "message": {"text": "Possibly dead Python function: extract_strike_price_and_option_type"}, "properties": {"repobilityId": "966ff56aaca3279c", "scanner": "scanner-primary", "fingerprint": "c61eff7e8400bc96", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/fetchers/generic_fetchers/deribit/types.py:78"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4eb8c47f522576d4", "level": "note", "message": {"text": "Possibly dead Python function: fetch_expiry_timestamp"}, "properties": {"repobilityId": "e20a5b1a2aea0695", "scanner": "scanner-primary", "fingerprint": "4eb8c47f522576d4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/fetchers/future_fetchers/okx.py:23"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39f3c924ea60ba2b", "level": "note", "message": {"text": "Possibly dead Python function: set_publisher"}, "properties": {"repobilityId": "e4712fc059cf0bee", "scanner": "scanner-primary", "fingerprint": "39f3c924ea60ba2b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/types/entry.py:184"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6cf2a88f204a791b", "level": "note", "message": {"text": "Possibly dead Python function: make_secret_key"}, "properties": {"repobilityId": "eb85f98466ddf6d7", "scanner": "scanner-primary", "fingerprint": "6cf2a88f204a791b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/randomness/utils.py:14"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-09051d5e6ac51c9f", "level": "note", "message": {"text": "Possibly dead Python function: uint256_to_2_128"}, "properties": {"repobilityId": "1cc5b210063e0280", "scanner": "scanner-primary", "fingerprint": "09051d5e6ac51c9f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/randomness/utils.py:22"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-acb2a514e46db15f", "level": "note", "message": {"text": "Possibly dead Python function: verify_randomness"}, "properties": {"repobilityId": "312a2f4f85fbe8af", "scanner": "scanner-primary", "fingerprint": "acb2a514e46db15f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/pragma_sdk/common/randomness/utils.py:44"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-967d816be1bee19d", "level": "note", "message": {"text": "Possibly dead Python function: spot_entry_to_faucon_topic"}, "properties": {"repobilityId": "5533cadc5b0588b2", "scanner": "scanner-primary", "fingerprint": "967d816be1bee19d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lmax-connector/lmax_connector/main.py:29"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-fcef21857951c0e6", "level": "warning", "message": {"text": "Dockerfile runs as root: lambda/monitor-balances/Dockerfile"}, "properties": {"repobilityId": "5ebda766c723aa2e", "scanner": "scanner-primary", "fingerprint": "fcef21857951c0e6", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-7fa87ff1f31afdcf", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/lambda/python:3.11"}, "properties": {"repobilityId": "c25b7e18f9065f02", "scanner": "scanner-primary", "fingerprint": "7fa87ff1f31afdcf", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lambda/monitor-balances/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2f4f054c9d8b29f4", "level": "warning", "message": {"text": "Dockerfile runs as root: lambda/nostra-lp-pricer/Dockerfile"}, "properties": {"repobilityId": "f10cdc48c0d38ec1", "scanner": "scanner-primary", "fingerprint": "2f4f054c9d8b29f4", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-683309947b0b2123", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/lambda/python:3.12-x86_64"}, "properties": {"repobilityId": "c010133b4c2511df", "scanner": "scanner-primary", "fingerprint": "683309947b0b2123", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lambda/nostra-lp-pricer/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a6cc0bc6c1bef6e7", "level": "warning", "message": {"text": "Dockerfile runs as root: price-pusher/Dockerfile"}, "properties": {"repobilityId": "200cbf272d9a0a9b", "scanner": "scanner-primary", "fingerprint": "a6cc0bc6c1bef6e7", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-d8458a2c4e4573ab", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "494654cf434f7777", "scanner": "scanner-primary", "fingerprint": "d8458a2c4e4573ab", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "price-pusher/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-128a277c00a3d46d", "level": "warning", "message": {"text": "Dockerfile runs as root: pragma-sdk/Dockerfile"}, "properties": {"repobilityId": "2e751e9bcbfbc13e", "scanner": "scanner-primary", "fingerprint": "128a277c00a3d46d", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-0195dbf6253727df", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bullseye"}, "properties": {"repobilityId": "d2d611e5109fce9d", "scanner": "scanner-primary", "fingerprint": "0195dbf6253727df", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pragma-sdk/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-989b1a411b9f565a", "level": "warning", "message": {"text": "Dockerfile runs as root: infra/price-pusher/pragma/Dockerfile"}, "properties": {"repobilityId": "0309a984ab1c0a15", "scanner": "scanner-primary", "fingerprint": "989b1a411b9f565a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-b7b2b6c67fbf29a4", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "911beaaae2278231", "scanner": "scanner-primary", "fingerprint": "b7b2b6c67fbf29a4", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/price-pusher/pragma/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0db6f860f7c490a", "level": "warning", "message": {"text": "Dockerfile runs as root: infra/price-pusher/onchain/Dockerfile"}, "properties": {"repobilityId": "92600be7aa9c9496", "scanner": "scanner-primary", "fingerprint": "d0db6f860f7c490a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-bfba48e9a4c24c9f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: public.ecr.aws/docker/library/python:3.12-slim"}, "properties": {"repobilityId": "30b2b5e0f420c052", "scanner": "scanner-primary", "fingerprint": "bfba48e9a4c24c9f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/price-pusher/onchain/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76d0ada7368acb0f", "level": "warning", "message": {"text": "Dockerfile runs as root: infra/lmax-connector/Dockerfile"}, "properties": {"repobilityId": "ef7a1df3cc312438", "scanner": "scanner-primary", "fingerprint": "76d0ada7368acb0f", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-57a8c2e315a3e219", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "ca181adcf98bdfec", "scanner": "scanner-primary", "fingerprint": "57a8c2e315a3e219", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/lmax-connector/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ac70d92cbc50b21", "level": "warning", "message": {"text": "Dockerfile runs as root: infra/checkpointer/Dockerfile"}, "properties": {"repobilityId": "7e4a876b3ea48246", "scanner": "scanner-primary", "fingerprint": "9ac70d92cbc50b21", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-b9f44aa3bb984f5c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "fc099a9ae7cf0992", "scanner": "scanner-primary", "fingerprint": "b9f44aa3bb984f5c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/checkpointer/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b0a8523d7b8edfc", "level": "warning", "message": {"text": "Dockerfile runs as root: lmax-connector/Dockerfile"}, "properties": {"repobilityId": "b0cf5559cbf2376f", "scanner": "scanner-primary", "fingerprint": "5b0a8523d7b8edfc", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-693d770dc2c10f3b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "d6fa8f19d2298a94", "scanner": "scanner-primary", "fingerprint": "693d770dc2c10f3b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lmax-connector/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcbbfe4317e39dba", "level": "warning", "message": {"text": "Dockerfile runs as root: checkpointer/Dockerfile"}, "properties": {"repobilityId": "a9c78e2c56164d03", "scanner": "scanner-primary", "fingerprint": "bcbbfe4317e39dba", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-babb701d8b837edf", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "a169a10414d9f08b", "scanner": "scanner-primary", "fingerprint": "babb701d8b837edf", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checkpointer/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-14d7ce6c4328583c", "level": "warning", "message": {"text": "Dockerfile runs as root: vrf-listener/Dockerfile"}, "properties": {"repobilityId": "62b7204fd481c2e7", "scanner": "scanner-primary", "fingerprint": "14d7ce6c4328583c", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-12babff4b2274dcb", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "863e7c98d888dab8", "scanner": "scanner-primary", "fingerprint": "12babff4b2274dcb", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "vrf-listener/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-d4165dfa45dd137a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be6459e964833f93", "scanner": "scanner-primary", "fingerprint": "d4165dfa45dd137a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pre-release.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-d9f80e31cc4a4432", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8db1b48b40abece5", "scanner": "scanner-primary", "fingerprint": "d9f80e31cc4a4432", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pre-release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1623abe158fd226b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6924ac288c5e6c0b", "scanner": "scanner-primary", "fingerprint": "1623abe158fd226b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-test.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-1623abe158fd226b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f938a3ebd2f61b05", "scanner": "scanner-primary", "fingerprint": "1623abe158fd226b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-test.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-1623abe158fd226b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0046309a8c02725", "scanner": "scanner-primary", "fingerprint": "1623abe158fd226b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-test.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-1623abe158fd226b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f00d09cbc5bf8a13", "scanner": "scanner-primary", "fingerprint": "1623abe158fd226b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-test.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-473401e5c6115402", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "33fe4170bfea313e", "scanner": "scanner-primary", "fingerprint": "473401e5c6115402", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-test.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a50467f36b413ec", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f1cc69f7504aa95d", "scanner": "scanner-primary", "fingerprint": "1a50467f36b413ec", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tests.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-1a50467f36b413ec", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "818fe09647a7c97d", "scanner": "scanner-primary", "fingerprint": "1a50467f36b413ec", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tests.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "524cd7f22306d448", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f992a0f3a9da3b1a", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a60afc9f26129783", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-f54d0d3a389cb4de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a60afc9f26129783", "scanner": "scanner-primary", "fingerprint": "f54d0d3a389cb4de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c2cc41dacf1550b4", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-a53bf972e19b52fd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "26eca5024249c767", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-7ffa33751be3d771", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "491a3ad29cbaf189", "scanner": "scanner-primary", "fingerprint": "7ffa33751be3d771", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "a106e07042f8650c", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "51789479d940d76c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "4983f27e98de8096", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-af3ef40c82d60114", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 lambda/monitor-balances/app.py:84"}, "properties": {"repobilityId": "bc02293ccc1cded7", "scanner": "scanner-primary", "fingerprint": "af3ef40c82d60114", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f62a99fca4ed32b", "level": "error", "message": {"text": "Blocking `requests.get(...)` inside `async def _handler` \u2014 lambda/monitor-balances/app.py:84"}, "properties": {"repobilityId": "730faaa7116a49d2", "scanner": "scanner-primary", "fingerprint": "2f62a99fca4ed32b", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lambda/monitor-balances/app.py"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-8f291c388fa639ca", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 lambda/nostra-lp-pricer/app.py:36"}, "properties": {"repobilityId": "936d6d1ab91ba6ce", "scanner": "scanner-primary", "fingerprint": "8f291c388fa639ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-750420405f5354c9", "level": "error", "message": {"text": "Blocking `requests.get(...)` inside `async def _handler` \u2014 lambda/nostra-lp-pricer/app.py:36"}, "properties": {"repobilityId": "3a82a9b75a5ae783", "scanner": "scanner-primary", "fingerprint": "750420405f5354c9", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lambda/nostra-lp-pricer/app.py"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-4712e38deec81622", "level": "none", "message": {"text": "Commented-code block (8 lines) in price-pusher/price_pusher/core/pusher.py:150"}, "properties": {"repobilityId": "6a9db7931e0d2d31", "scanner": "scanner-primary", "fingerprint": "4712e38deec81622", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6236cfdb87295c4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in pragma-sdk/plot_xstrk_feed.py:1"}, "properties": {"repobilityId": "f095a2c3f065123a", "scanner": "scanner-primary", "fingerprint": "6236cfdb87295c4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26f5466cf14d84be", "level": "note", "message": {"text": "Legacy-named symbol `sign_deploy_account_v1` in pragma-sdk/tests/integration/utils.py:50"}, "properties": {"repobilityId": "f168bba8a2cd8e97", "scanner": "scanner-primary", "fingerprint": "26f5466cf14d84be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2435819d3476b34e", "level": "note", "message": {"text": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/client_test.py:63"}, "properties": {"repobilityId": "a65d0bba5318bbc2", "scanner": "scanner-primary", "fingerprint": "2435819d3476b34e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c9510aedd5187abd", "level": "note", "message": {"text": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/merkle_feed_test.py:59"}, "properties": {"repobilityId": "62c032399fb5917c", "scanner": "scanner-primary", "fingerprint": "c9510aedd5187abd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-436cf2e9588805cc", "level": "note", "message": {"text": "Legacy-named symbol `deploy_v1` in pragma-sdk/tests/integration/vrf_test.py:84"}, "properties": {"repobilityId": "61702718e7aeeff4", "scanner": "scanner-primary", "fingerprint": "436cf2e9588805cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2e1c52160c69909c", "level": "none", "message": {"text": "Commented-code block (5 lines) in pragma-sdk/pragma_sdk/miden/client.py:19"}, "properties": {"repobilityId": "cf0084476792c18c", "scanner": "scanner-primary", "fingerprint": "2e1c52160c69909c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ca5c3782cc8cad5", "level": "note", "message": {"text": "Legacy-named symbol `sign_invoke_v1` in pragma-sdk/pragma_sdk/onchain/types/contract.py:56"}, "properties": {"repobilityId": "1fa7612e892f7c67", "scanner": "scanner-primary", "fingerprint": "4ca5c3782cc8cad5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-501697a92b9a3272", "level": "note", "message": {"text": "Legacy-named symbol `prepare_invoke_v1` in pragma-sdk/pragma_sdk/onchain/mixins/randomness.py:102"}, "properties": {"repobilityId": "40e4d145b186a2e6", "scanner": "scanner-primary", "fingerprint": "501697a92b9a3272", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f57ef41b0fe385e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in pragma-sdk/pragma_sdk/common/fetchers/fetchers/ekubo.py:23"}, "properties": {"repobilityId": "08135c1a40b12aab", "scanner": "scanner-primary", "fingerprint": "f57ef41b0fe385e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a4f2647ed7751aa", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 pragma-sdk/pragma_sdk/common/fetchers/fetchers/indexcoop.py:61"}, "properties": {"repobilityId": "320d70d733e38ed9", "scanner": "scanner-primary", "fingerprint": "6a4f2647ed7751aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f5d480dd3c83a3b", "level": "note", "message": {"text": "Stub function `get_expiry` (body is just `pass`/`return`) \u2014 pragma-sdk/pragma_sdk/common/types/entry.py:191"}, "properties": {"repobilityId": "ecee316568b57405", "scanner": "scanner-primary", "fingerprint": "6f5d480dd3c83a3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-1b18146a564ca9bd", "level": "note", "message": {"text": "Legacy-named symbol `deploy_v1` in checkpointer/tests/integration/fixtures/contracts.py:35"}, "properties": {"repobilityId": "aaa8ff1a69ebceda", "scanner": "scanner-primary", "fingerprint": "1b18146a564ca9bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4009885f3d39f7b0", "level": "note", "message": {"text": "Legacy-named symbol `deploy_v1` in vrf-listener/tests/integration/fixtures/clients.py:104"}, "properties": {"repobilityId": "a54d0516d7208291", "scanner": "scanner-primary", "fingerprint": "4009885f3d39f7b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b5089908d7ece372", "level": "note", "message": {"text": "Legacy-named symbol `deploy_v1` in vrf-listener/benchmark/deploy.py:69"}, "properties": {"repobilityId": "51982e32a8364a97", "scanner": "scanner-primary", "fingerprint": "b5089908d7ece372", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7acb8b9778f67cfe", "level": "note", "message": {"text": "Legacy-named symbol `invoke_v1` in vrf-listener/benchmark/client.py:86"}, "properties": {"repobilityId": "0637e619876b4d12", "scanner": "scanner-primary", "fingerprint": "7acb8b9778f67cfe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e92575daefb13e66", "level": "note", "message": {"text": "Legacy-named symbol `invoke_v1` in vrf-listener/benchmark/stress/stress_tester.py:292"}, "properties": {"repobilityId": "b8e099716ee8436d", "scanner": "scanner-primary", "fingerprint": "e92575daefb13e66", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d0b17c8c07a7421d", "level": "note", "message": {"text": "8 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "17fe720e8247f9df", "scanner": "scanner-primary", "fingerprint": "d0b17c8c07a7421d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ade21f183c8f1c2f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "275f2300b83e3c46", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c8e27d7252669c7c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "eed3ce4fd86dee66", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8e43cfb168f1e81c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b9829257ca0ae444", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "fb14eab90005aea3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "9329aa74592796d6", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "059bf422ea20b895", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e4b4798e8fd26c92", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "3aa1424feb0bb1a7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "c170eec6e8d11fd1", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "211d9a9fbcabda93", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8c8daa4ea4dc4d3d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "92ca1bb87ae2a7dc", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d32be43487ba1f1c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "a51b6c6c803dacf1", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "6191cab80b9c69a5", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "192d5a078750584d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "0b4248c93c030f7c", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}