{"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-bf7a8df646839543", "name": "Possibly dead Python function: close_all_positions", "shortDescription": {"text": "Possibly dead Python function: close_all_positions"}, "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-3488dcb4817c7884", "name": "Possibly dead Python function: set_risk_monitor", "shortDescription": {"text": "Possibly dead Python function: set_risk_monitor"}, "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-76356181580e01d6", "name": "Possibly dead Python function: set_risk_monitor", "shortDescription": {"text": "Possibly dead Python function: set_risk_monitor"}, "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-80876d3819a7126b", "name": "Possibly dead Python function: remove_risk_monitor", "shortDescription": {"text": "Possibly dead Python function: remove_risk_monitor"}, "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-e240bd53e7e16664", "name": "Possibly dead Python function: prepare_real_trade", "shortDescription": {"text": "Possibly dead Python function: prepare_real_trade"}, "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-731e8c0b10c02a5b", "name": "Possibly dead Python function: check_conflict", "shortDescription": {"text": "Possibly dead Python function: check_conflict"}, "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-21063a1bda517747", "name": "Possibly dead Python function: import_kalshi_event", "shortDescription": {"text": "Possibly dead Python function: import_kalshi_event"}, "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-6a56e170b8dea53d", "name": "Possibly dead Python function: check_market_exists", "shortDescription": {"text": "Possibly dead Python function: check_market_exists"}, "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-184456c3b92a1f1a", "name": "Possibly dead Python function: update_settings", "shortDescription": {"text": "Possibly dead Python function: update_settings"}, "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-02613c4e04bd23b7", "name": "Possibly dead Python function: cancel_all_orders", "shortDescription": {"text": "Possibly dead Python function: cancel_all_orders"}, "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-666b36203b6476f2", "name": "Possibly dead Python function: create_alert", "shortDescription": {"text": "Possibly dead Python function: create_alert"}, "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-9877def3d84750b1", "name": "Possibly dead Python function: delete_alert", "shortDescription": {"text": "Possibly dead Python function: delete_alert"}, "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-975d2dbda085874d", "name": "Possibly dead Python function: register_webhook", "shortDescription": {"text": "Possibly dead Python function: register_webhook"}, "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-4aa0e901f0e94805", "name": "Possibly dead Python function: list_webhooks", "shortDescription": {"text": "Possibly dead Python function: list_webhooks"}, "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-e5a364dd50483507", "name": "Possibly dead Python function: delete_webhook", "shortDescription": {"text": "Possibly dead Python function: delete_webhook"}, "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-f08dfc4478fdc9cf", "name": "Possibly dead Python function: test_webhook", "shortDescription": {"text": "Possibly dead Python function: test_webhook"}, "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-cd75e0a22d1e74a4", "name": "Possibly dead Python function: approve_agent", "shortDescription": {"text": "Possibly dead Python function: approve_agent"}, "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-021e243bf9434b6f", "name": "Stray `console.log` in TS/JS \u2014 mcp/scripts/bundle-skills.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mcp/scripts/bundle-skills.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-050534287cd9b0ca", "name": "Stray `console.log` in TS/JS \u2014 mcp/src/mcp-server.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mcp/src/mcp-server.ts:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef46e886caada789", "name": "Stray `console.log` in TS/JS \u2014 simmer_sdk/scripts/sign-solana.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 simmer_sdk/scripts/sign-solana.js:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-029b33c54c0ea7fd", "name": "Insecure pattern 'node_child_process' in mcp/src/runtime-probe.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in mcp/src/runtime-probe.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbbe39a2fa204eb6", "name": "Insecure pattern 'node_child_process' in mcp/src/skill-runner.ts:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in mcp/src/skill-runner.ts:7"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3bccc4a6e2968d54", "name": "Insecure pattern 'node_child_process' in mcp/src/core/runner.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in mcp/src/core/runner.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40ec686832e43737", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@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": "low", "confidence": 1.0}}, {"id": "scanner-67b1b54c64eaf2cf", "name": "Very large file: skills/polymarket-weather-trader/weather_trader.py (1848 lines)", "shortDescription": {"text": "Very large file: skills/polymarket-weather-trader/weather_trader.py (1848 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4d07e2defb2dc15", "name": "Very large file: skills/polymarket-worldcup-copytrader/tests/test_copytrader.py (1119 lines)", "shortDescription": {"text": "Very large file: skills/polymarket-worldcup-copytrader/tests/test_copytrader.py (1119 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-802639f1782ce8d2", "name": "Very large file: skills/polymarket-fast-loop/fastloop_trader.py (1470 lines)", "shortDescription": {"text": "Very large file: skills/polymarket-fast-loop/fastloop_trader.py (1470 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95ab17f3c649453a", "name": "Very large file: skills/polymarket-worldcup-parlay-roller/tests/test_parlay_roller_trader.py (1319 lines)", "shortDescription": {"text": "Very large file: skills/polymarket-worldcup-parlay-roller/tests/test_parlay_roller_trader.py (1319 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b65bbcb08cba5b1", "name": "Very large file: skills/polymarket-copytrading/copytrading_trader.py (1238 lines)", "shortDescription": {"text": "Very large file: skills/polymarket-copytrading/copytrading_trader.py (1238 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd09515a76e7ddc8", "name": "Very large file: simmer_sdk/client.py (5806 lines)", "shortDescription": {"text": "Very large file: simmer_sdk/client.py (5806 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f57ac7772721cd9f", "name": "Very large file: simmer_sdk/signing.py (1540 lines)", "shortDescription": {"text": "Very large file: simmer_sdk/signing.py (1540 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3ed68815bca2f8c", "name": "Node manifest has dependencies but no lockfile: package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 1440 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-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d5bf56429808c59", "name": "Agent authority lacks a verifier contract: mcp/skills/autoresearch/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: mcp/skills/autoresearch/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02521e443da10f7b", "name": "Agent authority lacks a verifier contract: skills/prediction-trade-journal/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/prediction-trade-journal/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce349377f20034fc", "name": "Agent authority lacks a verifier contract: skills/polymarket-btc-up-down-trader/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-btc-up-down-trader/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2a5c0098dd542fb", "name": "Agent authority lacks a verifier contract: skills/polymarket-worldcup-copytrader/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-worldcup-copytrader/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75a33d3fc99ee53f", "name": "Agent authority lacks a verifier contract: skills/polymarket-elon-tweets/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-elon-tweets/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c85a0de5a50eac74", "name": "Agent instruction/config may expose a secret: skills/simmer-x402/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/simmer-x402/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d04be407f8f144e", "name": "Agent instruction contains unpinned remote install: skills/simmer-mcp-setup/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/simmer-mcp-setup/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-faf75cfa33ea60f1", "name": "Agent authority lacks a verifier contract: skills/polymarket-nothing-ever-happens/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-nothing-ever-happens/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5bfbcb1c3bdd55d6", "name": "Agent authority lacks a verifier contract: skills/polymarket-market-maker/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-market-maker/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e088b565a1c4dcca", "name": "Agent authority lacks a verifier contract: skills/polymarket-research/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-research/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70a62d279956caa8", "name": "Agent authority lacks a verifier contract: skills/polymarket-ai-divergence/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/polymarket-ai-divergence/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da886a9650b97ad7", "name": "Agent instruction contains unpinned remote install: skills/simmer-wallet-setup/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/simmer-wallet-setup/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0947bfaedcd6b2e", "name": "Agent authority lacks a verifier contract: simmer_sdk/backtest/demo/backtest-demo-favorites/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: simmer_sdk/backtest/demo/backtest-demo-favorites/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88e6f82a2058c62c", "name": "Legacy-named symbol `test_ows_sign_typed_tx_rejects_legacy` in tests/test_ows_utils.py:215", "shortDescription": {"text": "Legacy-named symbol `test_ows_sign_typed_tx_rejects_legacy` in tests/test_ows_utils.py:215"}, "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-065fe84ee2e1ac09", "name": "Legacy-named symbol `test_default_pre_cutover_signs_v1` in tests/test_polymarket_v2.py:61", "shortDescription": {"text": "Legacy-named symbol `test_default_pre_cutover_signs_v1` in tests/test_polymarket_v2.py:61"}, "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-99543a20f2fdee9d", "name": "Commented-code block (5 lines) in tests/test_client_constructors.py:28", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_client_constructors.py:28"}, "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-1d44c93e293e4454", "name": "Legacy-named symbol `test_polymarket_v2` in tests/test_poly_1271_signing.py:8", "shortDescription": {"text": "Legacy-named symbol `test_polymarket_v2` in tests/test_poly_1271_signing.py:8"}, "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-fa942ea1f0cdcf54", "name": "Commented-code block (7 lines) in tests/test_poly_1271_signing.py:758", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_poly_1271_signing.py:758"}, "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-bbb99913ff9bf7d4", "name": "Commented-code block (6 lines) in mcp/tests/mcp-protocol.test.ts:109", "shortDescription": {"text": "Commented-code block (6 lines) in mcp/tests/mcp-protocol.test.ts:109"}, "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-dbc2c06a966a8082", "name": "`fetch()` without try/.catch or AbortSignal \u2014 mcp/src/api.ts:375", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mcp/src/api.ts:375"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c592b354f6371e10", "name": "Commented-code block (8 lines) in skills/polymarket-weather-trader/weather_trader.py:185", "shortDescription": {"text": "Commented-code block (8 lines) in skills/polymarket-weather-trader/weather_trader.py:185"}, "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-1e8f7cf9bff9ae44", "name": "Commented-code block (6 lines) in skills/polymarket-btc-up-down-trader/strategy.py:787", "shortDescription": {"text": "Commented-code block (6 lines) in skills/polymarket-btc-up-down-trader/strategy.py:787"}, "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-536a82dd7e37b344", "name": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-btc-up-down-trader/strategy.py:46", "shortDescription": {"text": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-btc-up-down-trader/strategy.py:46"}, "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-f18c7813e9373fbc", "name": "Commented-code block (5 lines) in skills/polymarket-worldcup-copytrader/copytrader.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in skills/polymarket-worldcup-copytrader/copytrader.py:69"}, "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-35f460e111e03be7", "name": "Commented-code block (7 lines) in skills/polymarket-fast-loop/fastloop_trader.py:596", "shortDescription": {"text": "Commented-code block (7 lines) in skills/polymarket-fast-loop/fastloop_trader.py:596"}, "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-e7a57ecd399bd4b5", "name": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-fast-loop/fastloop_trader.py:41", "shortDescription": {"text": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-fast-loop/fastloop_trader.py:41"}, "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-ad14483511a3f48b", "name": "Commented-code block (5 lines) in skills/polymarket-mert-sniper/mert_sniper.py:599", "shortDescription": {"text": "Commented-code block (5 lines) in skills/polymarket-mert-sniper/mert_sniper.py:599"}, "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-11cf51913a0a6042", "name": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-fast-scaler/fast_scaler.py:49", "shortDescription": {"text": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-fast-scaler/fast_scaler.py:49"}, "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-9ca325e8d2aa6c55", "name": "Commented-code block (5 lines) in skills/polymarket-worldcup-parlay-roller/parlay_roller_trader.py:471", "shortDescription": {"text": "Commented-code block (5 lines) in skills/polymarket-worldcup-parlay-roller/parlay_roller_trader.py:471"}, "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-356b96c4fda4622c", "name": "Commented-code block (7 lines) in skills/polymarket-market-maker/market_maker.py:258", "shortDescription": {"text": "Commented-code block (7 lines) in skills/polymarket-market-maker/market_maker.py:258"}, "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-a759dba1a7cb2395", "name": "Commented-code block (6 lines) in skills/polymarket-copytrading/copytrading_trader.py:75", "shortDescription": {"text": "Commented-code block (6 lines) in skills/polymarket-copytrading/copytrading_trader.py:75"}, "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-7a6b6c725d548c52", "name": "Commented-code block (5 lines) in simmer_sdk/client.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in simmer_sdk/client.py:85"}, "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-c12a9f57ac857e11", "name": "Commented-code block (5 lines) in simmer_sdk/hyperliquid_signing.py:248", "shortDescription": {"text": "Commented-code block (5 lines) in simmer_sdk/hyperliquid_signing.py:248"}, "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-84c3d72875998e74", "name": "Commented-code block (7 lines) in simmer_sdk/ows_utils.py:288", "shortDescription": {"text": "Commented-code block (7 lines) in simmer_sdk/ows_utils.py:288"}, "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-fa0c17579e6c9b23", "name": "Commented-code block (9 lines) in simmer_sdk/dw_redeem.py:266", "shortDescription": {"text": "Commented-code block (9 lines) in simmer_sdk/dw_redeem.py:266"}, "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-ea5848f3ee08c7ab", "name": "Commented-code block (5 lines) in simmer_sdk/sizing.py:161", "shortDescription": {"text": "Commented-code block (5 lines) in simmer_sdk/sizing.py:161"}, "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-d58ba514b84102d0", "name": "Legacy-named symbol `py_clob_client_v2` in simmer_sdk/signing.py:7", "shortDescription": {"text": "Legacy-named symbol `py_clob_client_v2` in simmer_sdk/signing.py:7"}, "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-7fb6bf1589bdead6", "name": "Commented-code block (6 lines) in simmer_sdk/signing.py:749", "shortDescription": {"text": "Commented-code block (6 lines) in simmer_sdk/signing.py:749"}, "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-9d75c094f169c506", "name": "Legacy-named symbol `ctf_exchange_v2` in simmer_sdk/approvals.py:81", "shortDescription": {"text": "Legacy-named symbol `ctf_exchange_v2` in simmer_sdk/approvals.py:81"}, "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-6b31a21b2f6e993e", "name": "Network/subprocess call without timeout or try/except \u2014 simmer_sdk/backtest/demo/backtest-demo-favorites/favorites_demo.", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 simmer_sdk/backtest/demo/backtest-demo-favorites/favorites_demo.py:55"}, "fullDescription": {"text": "`requests.post(...)` 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-2e09a75d8d2605f2", "name": "Commented-code block (6 lines) in simmer_sdk/backtest/replay/duckdb_store.py:158", "shortDescription": {"text": "Commented-code block (6 lines) in simmer_sdk/backtest/replay/duckdb_store.py:158"}, "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-f4c3c9ad310dd76e", "name": "Commented-code block (7 lines) in simmer_sdk/backtest/replay/engine.py:89", "shortDescription": {"text": "Commented-code block (7 lines) in simmer_sdk/backtest/replay/engine.py:89"}, "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-be9f161a2ec006e3", "name": "Commented-code block (7 lines) in simmer_sdk/backtest/replay/server.py:58", "shortDescription": {"text": "Commented-code block (7 lines) in simmer_sdk/backtest/replay/server.py:58"}, "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-36cd74f385870a30", "name": "Commented-code block (5 lines) in simmer_sdk/backtest/replay/harness.py:74", "shortDescription": {"text": "Commented-code block (5 lines) in simmer_sdk/backtest/replay/harness.py:74"}, "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-8afefec3d9eea4de", "name": "Commented-code block (9 lines) in simmer_sdk/backtest/replay/candles_service.py:140", "shortDescription": {"text": "Commented-code block (9 lines) in simmer_sdk/backtest/replay/candles_service.py:140"}, "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-fcef77aa1d007587", "name": "Commented-code block (9 lines) in simmer_sdk/backtest/replay/feeds/binance.py:282", "shortDescription": {"text": "Commented-code block (9 lines) in simmer_sdk/backtest/replay/feeds/binance.py:282"}, "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-643a63f5c86b65b6", "name": "Commented-code block (5 lines) in simmer_sdk/regime/gate.py:226", "shortDescription": {"text": "Commented-code block (5 lines) in simmer_sdk/regime/gate.py:226"}, "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-8bc2e0ad6d595394", "name": "Commented-code block (5 lines) in simmer_sdk/risk/oracle_engineering.py:190", "shortDescription": {"text": "Commented-code block (5 lines) in simmer_sdk/risk/oracle_engineering.py:190"}, "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-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:\nskills/polymarket-weather-trader/weather_trader.py:log_trade, skills/polymarket-weather-trader/weather_trader.py:log, skills/polymarket-elon-tweets/elon_tweets.py:log_trade, skills/polymarket-elon-tweets/elon_tweets.py:log\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-380b7cb95b387b9c", "name": "Near-duplicate function bodies in 11 places", "shortDescription": {"text": "Near-duplicate function bodies in 11 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nskills/polymarket-weather-trader/weather_trader.py:get_client, skills/polymarket-btc-up-down-trader/strategy.py:get_client, skills/polymarket-signal-sniper/signal_sniper.py:get_client, skills/polymarket-elon-tweets/elon_tweets.py:get_client\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:\nskills/polymarket-weather-trader/weather_trader.py:fetch_json, skills/polymarket-elon-tweets/elon_tweets.py:fetch_json, skills/kalshi-weather-trader/weather_trader.py:fetch_json\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-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:\nskills/polymarket-weather-trader/weather_trader.py:get_noaa_forecast_for_station, skills/polymarket-weather-trader/weather_trader.py:get_noaa_forecast\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-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nskills/polymarket-signal-sniper/scripts/status.py:main, skills/polymarket-elon-tweets/scripts/status.py:main, skills/polymarket-mert-sniper/scripts/status.py:main, skills/simmer-skill-builder/scripts/status.py:main\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:\nskills/polymarket-fast-loop/fastloop_trader.py:get_positions, skills/polymarket-mert-sniper/mert_sniper.py:get_positions, skills/kalshi-weather-trader/weather_trader.py:get_positions, skills/polymarket-ai-divergence/ai_divergence.py:get_positions\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-31ab406329dad8cc", "name": "FastAPI POST `import_market` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:195", "shortDescription": {"text": "FastAPI POST `import_market` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:195"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4129af8613a722f", "name": "FastAPI POST `trade` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:241", "shortDescription": {"text": "FastAPI POST `trade` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:241"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-33819ab9e4ea90a9", "name": "FastAPI DELETE `cancel_order` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:293", "shortDescription": {"text": "FastAPI DELETE `cancel_order` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:293"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d98be23e69a549da", "name": "FastAPI POST `set_monitor` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:325", "shortDescription": {"text": "FastAPI POST `set_monitor` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:325"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f726ae408dff9f2c", "name": "FastAPI POST `redeem` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:333", "shortDescription": {"text": "FastAPI POST `redeem` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:333"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4b5e814ba86e6d6", "name": "Dangling fetch: GET https://registry.npmjs.org/simmer-mcp/latest (mcp/src/mcp-server.ts:161)", "shortDescription": {"text": "Dangling fetch: GET https://registry.npmjs.org/simmer-mcp/latest (mcp/src/mcp-server.ts:161)"}, "fullDescription": {"text": "`mcp/src/mcp-server.ts:161` calls `GET https://registry.npmjs.org/simmer-mcp/latest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/registry.npmjs.org/simmer-mcp/latest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0426259f2c89db7", "name": "Unused endpoint: GET /api/sdk/health", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/health"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1be5802c48a6ed97", "name": "Unused endpoint: GET /api/sdk/agents/me", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/agents/me"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/agents/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0af482ae20dfd9f", "name": "Unused endpoint: GET /api/sdk/markets", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/markets"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/markets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a58f79753bedce44", "name": "Unused endpoint: GET /api/sdk/fast-markets", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/fast-markets"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/fast-markets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35b20f45bdc67889", "name": "Unused endpoint: GET /api/sdk/markets/importable", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/markets/importable"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/markets/importable` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03e70637b0df6596", "name": "Unused endpoint: POST /api/sdk/markets/import", "shortDescription": {"text": "Unused endpoint: POST /api/sdk/markets/import"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `POST /api/sdk/markets/import` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c999f0da9ce10b0", "name": "Unused endpoint: GET /api/sdk/context/{market_id}", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/context/{market_id}"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/context/{market_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5f95a311aa37d2d", "name": "Unused endpoint: GET /api/sdk/markets/{market_id}/history", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/markets/{market_id}/history"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/markets/{market_id}/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f665f629b95d1da", "name": "Unused endpoint: GET /api/sdk/positions", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/positions"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/positions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2c0189c07a8a84a", "name": "Unused endpoint: POST /api/sdk/trade", "shortDescription": {"text": "Unused endpoint: POST /api/sdk/trade"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `POST /api/sdk/trade` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a84c525c2cdb4bc", "name": "Unused endpoint: GET /api/sdk/orders/open", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/orders/open"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/orders/open` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d11c8b47fbb403ad", "name": "Unused endpoint: DELETE /api/sdk/orders/{order_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/sdk/orders/{order_id}"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `DELETE /api/sdk/orders/{order_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de8752e52d0f5e89", "name": "Unused endpoint: GET /api/sdk/portfolio", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/portfolio"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/portfolio` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2438351e03a0e35", "name": "Unused endpoint: GET /api/sdk/briefing", "shortDescription": {"text": "Unused endpoint: GET /api/sdk/briefing"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/sdk/briefing` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c5c644e535bdce1", "name": "Unused endpoint: POST /api/sdk/positions/{market_id}/monitor", "shortDescription": {"text": "Unused endpoint: POST /api/sdk/positions/{market_id}/monitor"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `POST /api/sdk/positions/{market_id}/monitor` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-505fe16591a8b9d1", "name": "Unused endpoint: POST /api/sdk/redeem", "shortDescription": {"text": "Unused endpoint: POST /api/sdk/redeem"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `POST /api/sdk/redeem` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7837a06db3c858c2", "name": "Unused endpoint: GET /api/replay-data/candles", "shortDescription": {"text": "Unused endpoint: GET /api/replay-data/candles"}, "fullDescription": {"text": "`simmer_sdk/backtest/replay/server.py` declares `GET /api/replay-data/candles` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20086"}, "properties": {"repository": "SpartanLabsXyz/simmer-sdk", "repoUrl": "https://github.com/SpartanLabsXyz/simmer-sdk", "branch": "main"}, "results": [{"ruleId": "scanner-bf7a8df646839543", "level": "note", "message": {"text": "Possibly dead Python function: close_all_positions"}, "properties": {"repobilityId": "5c87cf6ecb42247c", "scanner": "scanner-primary", "fingerprint": "bf7a8df646839543", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/humanplane_integration.py:156"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3488dcb4817c7884", "level": "note", "message": {"text": "Possibly dead Python function: set_risk_monitor"}, "properties": {"repobilityId": "0c4531552fd584ea", "scanner": "scanner-primary", "fingerprint": "3488dcb4817c7884", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-signal-sniper/signal_sniper.py:478"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76356181580e01d6", "level": "note", "message": {"text": "Possibly dead Python function: set_risk_monitor"}, "properties": {"repobilityId": "0c4531552fd584ea", "scanner": "scanner-primary", "fingerprint": "76356181580e01d6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-copytrading/copytrading_trader.py:246"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-80876d3819a7126b", "level": "note", "message": {"text": "Possibly dead Python function: remove_risk_monitor"}, "properties": {"repobilityId": "16ce5207dcf03544", "scanner": "scanner-primary", "fingerprint": "80876d3819a7126b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-copytrading/copytrading_trader.py:265"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e240bd53e7e16664", "level": "note", "message": {"text": "Possibly dead Python function: prepare_real_trade"}, "properties": {"repobilityId": "f8cda3c9468d708f", "scanner": "scanner-primary", "fingerprint": "e240bd53e7e16664", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:2307"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-731e8c0b10c02a5b", "level": "note", "message": {"text": "Possibly dead Python function: check_conflict"}, "properties": {"repobilityId": "e7dd70e067cc752d", "scanner": "scanner-primary", "fingerprint": "731e8c0b10c02a5b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:2523"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-21063a1bda517747", "level": "note", "message": {"text": "Possibly dead Python function: import_kalshi_event"}, "properties": {"repobilityId": "38515650371faae3", "scanner": "scanner-primary", "fingerprint": "21063a1bda517747", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:2714"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a56e170b8dea53d", "level": "note", "message": {"text": "Possibly dead Python function: check_market_exists"}, "properties": {"repobilityId": "dda055caccd04dac", "scanner": "scanner-primary", "fingerprint": "6a56e170b8dea53d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:2808"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-184456c3b92a1f1a", "level": "note", "message": {"text": "Possibly dead Python function: update_settings"}, "properties": {"repobilityId": "8bd5294fcbc4930b", "scanner": "scanner-primary", "fingerprint": "184456c3b92a1f1a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:3315"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02613c4e04bd23b7", "level": "note", "message": {"text": "Possibly dead Python function: cancel_all_orders"}, "properties": {"repobilityId": "84a1b024fc5b9202", "scanner": "scanner-primary", "fingerprint": "02613c4e04bd23b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:3484"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-666b36203b6476f2", "level": "note", "message": {"text": "Possibly dead Python function: create_alert"}, "properties": {"repobilityId": "36196a0d420d6770", "scanner": "scanner-primary", "fingerprint": "666b36203b6476f2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:4049"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9877def3d84750b1", "level": "note", "message": {"text": "Possibly dead Python function: delete_alert"}, "properties": {"repobilityId": "429bf80d7c373478", "scanner": "scanner-primary", "fingerprint": "9877def3d84750b1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:4115"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-975d2dbda085874d", "level": "note", "message": {"text": "Possibly dead Python function: register_webhook"}, "properties": {"repobilityId": "39bcb26f8c82e108", "scanner": "scanner-primary", "fingerprint": "975d2dbda085874d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:4152"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4aa0e901f0e94805", "level": "note", "message": {"text": "Possibly dead Python function: list_webhooks"}, "properties": {"repobilityId": "13a7733d8d71a8a1", "scanner": "scanner-primary", "fingerprint": "4aa0e901f0e94805", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:4189"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e5a364dd50483507", "level": "note", "message": {"text": "Possibly dead Python function: delete_webhook"}, "properties": {"repobilityId": "431afb7629a8f78d", "scanner": "scanner-primary", "fingerprint": "e5a364dd50483507", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:4203"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f08dfc4478fdc9cf", "level": "note", "message": {"text": "Possibly dead Python function: test_webhook"}, "properties": {"repobilityId": "6b3fe035bf602e02", "scanner": "scanner-primary", "fingerprint": "f08dfc4478fdc9cf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/client.py:4218"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd75e0a22d1e74a4", "level": "note", "message": {"text": "Possibly dead Python function: approve_agent"}, "properties": {"repobilityId": "dbd2a41f6fb8cdf4", "scanner": "scanner-primary", "fingerprint": "cd75e0a22d1e74a4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/hyperliquid_venue.py:178"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-021e243bf9434b6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mcp/scripts/bundle-skills.ts:67"}, "properties": {"repobilityId": "5b385ca220bc522d", "scanner": "scanner-primary", "fingerprint": "021e243bf9434b6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-050534287cd9b0ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mcp/src/mcp-server.ts:34"}, "properties": {"repobilityId": "303797e0bed4d74d", "scanner": "scanner-primary", "fingerprint": "050534287cd9b0ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef46e886caada789", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 simmer_sdk/scripts/sign-solana.js:67"}, "properties": {"repobilityId": "45e529bc555fea61", "scanner": "scanner-primary", "fingerprint": "ef46e886caada789", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-029b33c54c0ea7fd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in mcp/src/runtime-probe.ts:1"}, "properties": {"repobilityId": "b272c0bc9580d5a9", "scanner": "scanner-primary", "fingerprint": "029b33c54c0ea7fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp/src/runtime-probe.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bbbe39a2fa204eb6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in mcp/src/skill-runner.ts:7"}, "properties": {"repobilityId": "983cc8f425dad3e2", "scanner": "scanner-primary", "fingerprint": "bbbe39a2fa204eb6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp/src/skill-runner.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-3bccc4a6e2968d54", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in mcp/src/core/runner.ts:3"}, "properties": {"repobilityId": "78e6fa9178af7322", "scanner": "scanner-primary", "fingerprint": "3bccc4a6e2968d54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp/src/core/runner.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-40ec686832e43737", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5e6a2188d62545e7", "scanner": "scanner-primary", "fingerprint": "40ec686832e43737", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish-mcp.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-67b1b54c64eaf2cf", "level": "note", "message": {"text": "Very large file: skills/polymarket-weather-trader/weather_trader.py (1848 lines)"}, "properties": {"repobilityId": "9fb164a160d7f430", "scanner": "scanner-primary", "fingerprint": "67b1b54c64eaf2cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4d07e2defb2dc15", "level": "note", "message": {"text": "Very large file: skills/polymarket-worldcup-copytrader/tests/test_copytrader.py (1119 lines)"}, "properties": {"repobilityId": "4068f21c5be57e69", "scanner": "scanner-primary", "fingerprint": "d4d07e2defb2dc15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-802639f1782ce8d2", "level": "note", "message": {"text": "Very large file: skills/polymarket-fast-loop/fastloop_trader.py (1470 lines)"}, "properties": {"repobilityId": "fbe10e099291653e", "scanner": "scanner-primary", "fingerprint": "802639f1782ce8d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-95ab17f3c649453a", "level": "note", "message": {"text": "Very large file: skills/polymarket-worldcup-parlay-roller/tests/test_parlay_roller_trader.py (1319 lines)"}, "properties": {"repobilityId": "d78ccef03a22e92d", "scanner": "scanner-primary", "fingerprint": "95ab17f3c649453a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0b65bbcb08cba5b1", "level": "note", "message": {"text": "Very large file: skills/polymarket-copytrading/copytrading_trader.py (1238 lines)"}, "properties": {"repobilityId": "64f71da349f8f4fa", "scanner": "scanner-primary", "fingerprint": "0b65bbcb08cba5b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd09515a76e7ddc8", "level": "note", "message": {"text": "Very large file: simmer_sdk/client.py (5806 lines)"}, "properties": {"repobilityId": "4708a1fb811a5bb8", "scanner": "scanner-primary", "fingerprint": "fd09515a76e7ddc8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f57ac7772721cd9f", "level": "note", "message": {"text": "Very large file: simmer_sdk/signing.py (1540 lines)"}, "properties": {"repobilityId": "8d3582a316f3e2bf", "scanner": "scanner-primary", "fingerprint": "f57ac7772721cd9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3ed68815bca2f8c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "properties": {"repobilityId": "7edae0550c126386", "scanner": "scanner-primary", "fingerprint": "b3ed68815bca2f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "83a7f12832dd6d54", "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": "0e2c0ad5be2d6dd0", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "f0b93eda94e562e4", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "5fc5a5de69c6cec5", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-3d5bf56429808c59", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: mcp/skills/autoresearch/SKILL.md"}, "properties": {"repobilityId": "357515ae85cb80cc", "scanner": "scanner-primary", "fingerprint": "3d5bf56429808c59", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp/skills/autoresearch/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02521e443da10f7b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/prediction-trade-journal/SKILL.md"}, "properties": {"repobilityId": "b0ef12497cc29c81", "scanner": "scanner-primary", "fingerprint": "02521e443da10f7b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/prediction-trade-journal/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce349377f20034fc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-btc-up-down-trader/SKILL.md"}, "properties": {"repobilityId": "4f5794f97a310aba", "scanner": "scanner-primary", "fingerprint": "ce349377f20034fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-btc-up-down-trader/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c2a5c0098dd542fb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-worldcup-copytrader/SKILL.md"}, "properties": {"repobilityId": "3ba082ae1eacdc2b", "scanner": "scanner-primary", "fingerprint": "c2a5c0098dd542fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-worldcup-copytrader/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75a33d3fc99ee53f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-elon-tweets/SKILL.md"}, "properties": {"repobilityId": "d0f6914f55bd522c", "scanner": "scanner-primary", "fingerprint": "75a33d3fc99ee53f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-elon-tweets/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c85a0de5a50eac74", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/simmer-x402/SKILL.md"}, "properties": {"repobilityId": "de21916d57dc1365", "scanner": "scanner-primary", "fingerprint": "c85a0de5a50eac74", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/simmer-x402/SKILL.md"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-9d04be407f8f144e", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/simmer-mcp-setup/SKILL.md"}, "properties": {"repobilityId": "2295c7e4188d647c", "scanner": "scanner-primary", "fingerprint": "9d04be407f8f144e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/simmer-mcp-setup/SKILL.md"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-faf75cfa33ea60f1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-nothing-ever-happens/SKILL.md"}, "properties": {"repobilityId": "87b22d8337bd5f6d", "scanner": "scanner-primary", "fingerprint": "faf75cfa33ea60f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-nothing-ever-happens/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5bfbcb1c3bdd55d6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-market-maker/SKILL.md"}, "properties": {"repobilityId": "dff2d03118d02b5b", "scanner": "scanner-primary", "fingerprint": "5bfbcb1c3bdd55d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-market-maker/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e088b565a1c4dcca", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-research/SKILL.md"}, "properties": {"repobilityId": "77c0494eba3ce5dc", "scanner": "scanner-primary", "fingerprint": "e088b565a1c4dcca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-research/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-70a62d279956caa8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/polymarket-ai-divergence/SKILL.md"}, "properties": {"repobilityId": "401e8cfb99d0bce0", "scanner": "scanner-primary", "fingerprint": "70a62d279956caa8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/polymarket-ai-divergence/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da886a9650b97ad7", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/simmer-wallet-setup/SKILL.md"}, "properties": {"repobilityId": "0f9ec53d8aab5e22", "scanner": "scanner-primary", "fingerprint": "da886a9650b97ad7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/simmer-wallet-setup/SKILL.md"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-d0947bfaedcd6b2e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: simmer_sdk/backtest/demo/backtest-demo-favorites/SKILL.md"}, "properties": {"repobilityId": "b62357f469de29f2", "scanner": "scanner-primary", "fingerprint": "d0947bfaedcd6b2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/backtest/demo/backtest-demo-favorites/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-88e6f82a2058c62c", "level": "note", "message": {"text": "Legacy-named symbol `test_ows_sign_typed_tx_rejects_legacy` in tests/test_ows_utils.py:215"}, "properties": {"repobilityId": "7acefdb2308af362", "scanner": "scanner-primary", "fingerprint": "88e6f82a2058c62c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-065fe84ee2e1ac09", "level": "note", "message": {"text": "Legacy-named symbol `test_default_pre_cutover_signs_v1` in tests/test_polymarket_v2.py:61"}, "properties": {"repobilityId": "cbc5806e53971e64", "scanner": "scanner-primary", "fingerprint": "065fe84ee2e1ac09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-99543a20f2fdee9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_client_constructors.py:28"}, "properties": {"repobilityId": "119abb5814e65f3c", "scanner": "scanner-primary", "fingerprint": "99543a20f2fdee9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d44c93e293e4454", "level": "note", "message": {"text": "Legacy-named symbol `test_polymarket_v2` in tests/test_poly_1271_signing.py:8"}, "properties": {"repobilityId": "d4a9f2853da0174f", "scanner": "scanner-primary", "fingerprint": "1d44c93e293e4454", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa942ea1f0cdcf54", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_poly_1271_signing.py:758"}, "properties": {"repobilityId": "656a93d2e207b270", "scanner": "scanner-primary", "fingerprint": "fa942ea1f0cdcf54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbb99913ff9bf7d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in mcp/tests/mcp-protocol.test.ts:109"}, "properties": {"repobilityId": "132457f6e4256b62", "scanner": "scanner-primary", "fingerprint": "bbb99913ff9bf7d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbc2c06a966a8082", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mcp/src/api.ts:375"}, "properties": {"repobilityId": "542b3bedd862b7cd", "scanner": "scanner-primary", "fingerprint": "dbc2c06a966a8082", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c592b354f6371e10", "level": "none", "message": {"text": "Commented-code block (8 lines) in skills/polymarket-weather-trader/weather_trader.py:185"}, "properties": {"repobilityId": "a220dd8e0cab5688", "scanner": "scanner-primary", "fingerprint": "c592b354f6371e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e8f7cf9bff9ae44", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/polymarket-btc-up-down-trader/strategy.py:787"}, "properties": {"repobilityId": "ef4e755661c84699", "scanner": "scanner-primary", "fingerprint": "1e8f7cf9bff9ae44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-536a82dd7e37b344", "level": "note", "message": {"text": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-btc-up-down-trader/strategy.py:46"}, "properties": {"repobilityId": "e3bd696e13e62663", "scanner": "scanner-primary", "fingerprint": "536a82dd7e37b344", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-f18c7813e9373fbc", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/polymarket-worldcup-copytrader/copytrader.py:69"}, "properties": {"repobilityId": "aae37cbe615b858e", "scanner": "scanner-primary", "fingerprint": "f18c7813e9373fbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35f460e111e03be7", "level": "none", "message": {"text": "Commented-code block (7 lines) in skills/polymarket-fast-loop/fastloop_trader.py:596"}, "properties": {"repobilityId": "17dc2c5adf243194", "scanner": "scanner-primary", "fingerprint": "35f460e111e03be7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7a57ecd399bd4b5", "level": "note", "message": {"text": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-fast-loop/fastloop_trader.py:41"}, "properties": {"repobilityId": "26789fff4873a74a", "scanner": "scanner-primary", "fingerprint": "e7a57ecd399bd4b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-ad14483511a3f48b", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/polymarket-mert-sniper/mert_sniper.py:599"}, "properties": {"repobilityId": "009d541c09568c9d", "scanner": "scanner-primary", "fingerprint": "ad14483511a3f48b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11cf51913a0a6042", "level": "note", "message": {"text": "Stub function `log_trade` (body is just `pass`/`return`) \u2014 skills/polymarket-fast-scaler/fast_scaler.py:49"}, "properties": {"repobilityId": "ca473351baa078df", "scanner": "scanner-primary", "fingerprint": "11cf51913a0a6042", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-9ca325e8d2aa6c55", "level": "none", "message": {"text": "Commented-code block (5 lines) in skills/polymarket-worldcup-parlay-roller/parlay_roller_trader.py:471"}, "properties": {"repobilityId": "7150fcc8ea35ee63", "scanner": "scanner-primary", "fingerprint": "9ca325e8d2aa6c55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-356b96c4fda4622c", "level": "none", "message": {"text": "Commented-code block (7 lines) in skills/polymarket-market-maker/market_maker.py:258"}, "properties": {"repobilityId": "57f68d3ea9b6dd56", "scanner": "scanner-primary", "fingerprint": "356b96c4fda4622c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a759dba1a7cb2395", "level": "none", "message": {"text": "Commented-code block (6 lines) in skills/polymarket-copytrading/copytrading_trader.py:75"}, "properties": {"repobilityId": "e3a2ce01a32a6e2d", "scanner": "scanner-primary", "fingerprint": "a759dba1a7cb2395", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a6b6c725d548c52", "level": "none", "message": {"text": "Commented-code block (5 lines) in simmer_sdk/client.py:85"}, "properties": {"repobilityId": "ed7901f6f5b1820d", "scanner": "scanner-primary", "fingerprint": "7a6b6c725d548c52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c12a9f57ac857e11", "level": "none", "message": {"text": "Commented-code block (5 lines) in simmer_sdk/hyperliquid_signing.py:248"}, "properties": {"repobilityId": "0cfda22b32031663", "scanner": "scanner-primary", "fingerprint": "c12a9f57ac857e11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84c3d72875998e74", "level": "none", "message": {"text": "Commented-code block (7 lines) in simmer_sdk/ows_utils.py:288"}, "properties": {"repobilityId": "53aa86e2cd820060", "scanner": "scanner-primary", "fingerprint": "84c3d72875998e74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa0c17579e6c9b23", "level": "none", "message": {"text": "Commented-code block (9 lines) in simmer_sdk/dw_redeem.py:266"}, "properties": {"repobilityId": "f80a2044581e7194", "scanner": "scanner-primary", "fingerprint": "fa0c17579e6c9b23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea5848f3ee08c7ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in simmer_sdk/sizing.py:161"}, "properties": {"repobilityId": "1f921e9facb4c359", "scanner": "scanner-primary", "fingerprint": "ea5848f3ee08c7ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d58ba514b84102d0", "level": "note", "message": {"text": "Legacy-named symbol `py_clob_client_v2` in simmer_sdk/signing.py:7"}, "properties": {"repobilityId": "2c6b6021cc6775a2", "scanner": "scanner-primary", "fingerprint": "d58ba514b84102d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7fb6bf1589bdead6", "level": "none", "message": {"text": "Commented-code block (6 lines) in simmer_sdk/signing.py:749"}, "properties": {"repobilityId": "52e392f4c7fe96d3", "scanner": "scanner-primary", "fingerprint": "7fb6bf1589bdead6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d75c094f169c506", "level": "note", "message": {"text": "Legacy-named symbol `ctf_exchange_v2` in simmer_sdk/approvals.py:81"}, "properties": {"repobilityId": "9eaed8fe10d54849", "scanner": "scanner-primary", "fingerprint": "9d75c094f169c506", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6b31a21b2f6e993e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 simmer_sdk/backtest/demo/backtest-demo-favorites/favorites_demo.py:55"}, "properties": {"repobilityId": "44b21452223b3d40", "scanner": "scanner-primary", "fingerprint": "6b31a21b2f6e993e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2e09a75d8d2605f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in simmer_sdk/backtest/replay/duckdb_store.py:158"}, "properties": {"repobilityId": "4e4a04d8c99d262f", "scanner": "scanner-primary", "fingerprint": "2e09a75d8d2605f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4c3c9ad310dd76e", "level": "none", "message": {"text": "Commented-code block (7 lines) in simmer_sdk/backtest/replay/engine.py:89"}, "properties": {"repobilityId": "2f1b1f88242e38e8", "scanner": "scanner-primary", "fingerprint": "f4c3c9ad310dd76e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be9f161a2ec006e3", "level": "none", "message": {"text": "Commented-code block (7 lines) in simmer_sdk/backtest/replay/server.py:58"}, "properties": {"repobilityId": "957798af5525a1cc", "scanner": "scanner-primary", "fingerprint": "be9f161a2ec006e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36cd74f385870a30", "level": "none", "message": {"text": "Commented-code block (5 lines) in simmer_sdk/backtest/replay/harness.py:74"}, "properties": {"repobilityId": "f726d1faa11257ea", "scanner": "scanner-primary", "fingerprint": "36cd74f385870a30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8afefec3d9eea4de", "level": "none", "message": {"text": "Commented-code block (9 lines) in simmer_sdk/backtest/replay/candles_service.py:140"}, "properties": {"repobilityId": "5ec3f2ff7ac39ac0", "scanner": "scanner-primary", "fingerprint": "8afefec3d9eea4de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcef77aa1d007587", "level": "none", "message": {"text": "Commented-code block (9 lines) in simmer_sdk/backtest/replay/feeds/binance.py:282"}, "properties": {"repobilityId": "964bd1c3409b8f67", "scanner": "scanner-primary", "fingerprint": "fcef77aa1d007587", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-643a63f5c86b65b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in simmer_sdk/regime/gate.py:226"}, "properties": {"repobilityId": "20b5e7f62702480f", "scanner": "scanner-primary", "fingerprint": "643a63f5c86b65b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bc2e0ad6d595394", "level": "none", "message": {"text": "Commented-code block (5 lines) in simmer_sdk/risk/oracle_engineering.py:190"}, "properties": {"repobilityId": "117c888c8515b050", "scanner": "scanner-primary", "fingerprint": "8bc2e0ad6d595394", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "f97286e7a9baf167", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-380b7cb95b387b9c", "level": "note", "message": {"text": "Near-duplicate function bodies in 11 places"}, "properties": {"repobilityId": "b51b411560e427ce", "scanner": "scanner-primary", "fingerprint": "380b7cb95b387b9c", "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": "28c68cfe2670327d", "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": "d0ff094fcbdf99ee", "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": "8653eb89d31f5a92", "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": "96bf95a3a7291552", "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": "a4561febe0414684", "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": "749dc38af26d19b6", "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": "9d9bdcda785182b5", "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": "11aaf112132c9d6c", "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": "98a187bd415acc8e", "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": "653f241908d623f7", "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": "90f2e3a4dd621251", "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": "b82bbd185ba634cd", "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": "8794b607c28b9a7e", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "f457fd214a828623", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "7d54e4f8b262e189", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "305ecac088ca0a9c", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "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": "644d8bf1a3efd781", "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": "60ec530eba9613cf", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-31ab406329dad8cc", "level": "error", "message": {"text": "FastAPI POST `import_market` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:195"}, "properties": {"repobilityId": "181c658a0e7f4c2b", "scanner": "scanner-primary", "fingerprint": "31ab406329dad8cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/backtest/replay/server.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-e4129af8613a722f", "level": "error", "message": {"text": "FastAPI POST `trade` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:241"}, "properties": {"repobilityId": "fc7d6cf5d48a56ac", "scanner": "scanner-primary", "fingerprint": "e4129af8613a722f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/backtest/replay/server.py"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-33819ab9e4ea90a9", "level": "error", "message": {"text": "FastAPI DELETE `cancel_order` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:293"}, "properties": {"repobilityId": "0b4a94f81f008b5b", "scanner": "scanner-primary", "fingerprint": "33819ab9e4ea90a9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/backtest/replay/server.py"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-d98be23e69a549da", "level": "error", "message": {"text": "FastAPI POST `set_monitor` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:325"}, "properties": {"repobilityId": "21802a265e09e8a4", "scanner": "scanner-primary", "fingerprint": "d98be23e69a549da", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/backtest/replay/server.py"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-f726ae408dff9f2c", "level": "error", "message": {"text": "FastAPI POST `redeem` without auth dependency \u2014 simmer_sdk/backtest/replay/server.py:333"}, "properties": {"repobilityId": "21a08534ebbf8ca6", "scanner": "scanner-primary", "fingerprint": "f726ae408dff9f2c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "simmer_sdk/backtest/replay/server.py"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-b4b5e814ba86e6d6", "level": "error", "message": {"text": "Dangling fetch: GET https://registry.npmjs.org/simmer-mcp/latest (mcp/src/mcp-server.ts:161)"}, "properties": {"repobilityId": "1f760a0fc6d91e52", "scanner": "scanner-primary", "fingerprint": "b4b5e814ba86e6d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0426259f2c89db7", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/health"}, "properties": {"repobilityId": "0ced13a521ae4a40", "scanner": "scanner-primary", "fingerprint": "a0426259f2c89db7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1be5802c48a6ed97", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/agents/me"}, "properties": {"repobilityId": "3add47f816931ca2", "scanner": "scanner-primary", "fingerprint": "1be5802c48a6ed97", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f0af482ae20dfd9f", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/markets"}, "properties": {"repobilityId": "87e44e49013624cb", "scanner": "scanner-primary", "fingerprint": "f0af482ae20dfd9f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a58f79753bedce44", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/fast-markets"}, "properties": {"repobilityId": "e44c830ba39480de", "scanner": "scanner-primary", "fingerprint": "a58f79753bedce44", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35b20f45bdc67889", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/markets/importable"}, "properties": {"repobilityId": "4b8a9ab32243f573", "scanner": "scanner-primary", "fingerprint": "35b20f45bdc67889", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-03e70637b0df6596", "level": "note", "message": {"text": "Unused endpoint: POST /api/sdk/markets/import"}, "properties": {"repobilityId": "2790f87566169c0c", "scanner": "scanner-primary", "fingerprint": "03e70637b0df6596", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c999f0da9ce10b0", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/context/{market_id}"}, "properties": {"repobilityId": "a5ce6eca4d0b4a7e", "scanner": "scanner-primary", "fingerprint": "5c999f0da9ce10b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5f95a311aa37d2d", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/markets/{market_id}/history"}, "properties": {"repobilityId": "afbaa46bcc7f20c7", "scanner": "scanner-primary", "fingerprint": "c5f95a311aa37d2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9f665f629b95d1da", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/positions"}, "properties": {"repobilityId": "2adb2f79870d0c8c", "scanner": "scanner-primary", "fingerprint": "9f665f629b95d1da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b2c0189c07a8a84a", "level": "note", "message": {"text": "Unused endpoint: POST /api/sdk/trade"}, "properties": {"repobilityId": "3b4e87ac5897332e", "scanner": "scanner-primary", "fingerprint": "b2c0189c07a8a84a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a84c525c2cdb4bc", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/orders/open"}, "properties": {"repobilityId": "5dcb5cb596262362", "scanner": "scanner-primary", "fingerprint": "3a84c525c2cdb4bc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d11c8b47fbb403ad", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/sdk/orders/{order_id}"}, "properties": {"repobilityId": "ed2df560cbfd88f2", "scanner": "scanner-primary", "fingerprint": "d11c8b47fbb403ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de8752e52d0f5e89", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/portfolio"}, "properties": {"repobilityId": "de0c3cd93a9bf7e3", "scanner": "scanner-primary", "fingerprint": "de8752e52d0f5e89", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c2438351e03a0e35", "level": "note", "message": {"text": "Unused endpoint: GET /api/sdk/briefing"}, "properties": {"repobilityId": "479e4ceafa8b0caa", "scanner": "scanner-primary", "fingerprint": "c2438351e03a0e35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c5c644e535bdce1", "level": "note", "message": {"text": "Unused endpoint: POST /api/sdk/positions/{market_id}/monitor"}, "properties": {"repobilityId": "5463263c71ba93c3", "scanner": "scanner-primary", "fingerprint": "6c5c644e535bdce1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-505fe16591a8b9d1", "level": "note", "message": {"text": "Unused endpoint: POST /api/sdk/redeem"}, "properties": {"repobilityId": "3effb71bd97749ac", "scanner": "scanner-primary", "fingerprint": "505fe16591a8b9d1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7837a06db3c858c2", "level": "note", "message": {"text": "Unused endpoint: GET /api/replay-data/candles"}, "properties": {"repobilityId": "495eb258c92d6801", "scanner": "scanner-primary", "fingerprint": "7837a06db3c858c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}