{"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-421b514b53f1e7d5", "name": "Possibly dead Python function: default_metadata_model", "shortDescription": {"text": "Possibly dead Python function: default_metadata_model"}, "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-e807c435ca7e6b44", "name": "Possibly dead Python function: sibling_market_summaries", "shortDescription": {"text": "Possibly dead Python function: sibling_market_summaries"}, "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-6dc9de03cc985464", "name": "Possibly dead Python function: write_metadata_cache", "shortDescription": {"text": "Possibly dead Python function: write_metadata_cache"}, "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-edab7431a6371838", "name": "Possibly dead Python function: attach_control_metadata", "shortDescription": {"text": "Possibly dead Python function: attach_control_metadata"}, "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-c420c932621a50a8", "name": "Possibly dead Python function: call_codex_metadata_extractor", "shortDescription": {"text": "Possibly dead Python function: call_codex_metadata_extractor"}, "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-135f59d0ba85116f", "name": "Possibly dead Python function: alert_summary", "shortDescription": {"text": "Possibly dead Python function: alert_summary"}, "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-17e182eb18abb180", "name": "Possibly dead Python function: write_source_registry", "shortDescription": {"text": "Possibly dead Python function: write_source_registry"}, "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-cc91011ae3c1edf3", "name": "Possibly dead Python function: load_source_registry", "shortDescription": {"text": "Possibly dead Python function: load_source_registry"}, "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-24a78427c816124d", "name": "Possibly dead Python function: load_market_family_requirements", "shortDescription": {"text": "Possibly dead Python function: load_market_family_requirements"}, "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-1538b3377cea2714", "name": "Possibly dead Python function: load_manual_sources", "shortDescription": {"text": "Possibly dead Python function: load_manual_sources"}, "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-4b429a12d83ddcd1", "name": "Possibly dead Python function: expand_district", "shortDescription": {"text": "Possibly dead Python function: expand_district"}, "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-c9a67b88a020db3e", "name": "Possibly dead Python function: format_markets_for_prompt", "shortDescription": {"text": "Possibly dead Python function: format_markets_for_prompt"}, "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-6cd8844f141fdcc9", "name": "Possibly dead Python function: handle_starttag", "shortDescription": {"text": "Possibly dead Python function: handle_starttag"}, "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-1f04f52ab4d9aa7e", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_data"}, "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-927ca0c8b6b20477", "name": "Possibly dead Python function: handle_endtag", "shortDescription": {"text": "Possibly dead Python function: handle_endtag"}, "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-bbd9d3a48011963e", "name": "Possibly dead Python function: sleep_until_next", "shortDescription": {"text": "Possibly dead Python function: sleep_until_next"}, "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-7ed87b58cb2bf9eb", "name": "Possibly dead Python function: fetch_court_feeds", "shortDescription": {"text": "Possibly dead Python function: fetch_court_feeds"}, "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-6a95cefd6ad06d1e", "name": "Possibly dead Python function: probe_court_feeds", "shortDescription": {"text": "Possibly dead Python function: probe_court_feeds"}, "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-1607b13efd3db9c3", "name": "Possibly dead Python function: append_new_court_items", "shortDescription": {"text": "Possibly dead Python function: append_new_court_items"}, "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-2a55d85092452461", "name": "Possibly dead Python function: route_court_event_to_markets", "shortDescription": {"text": "Possibly dead Python function: route_court_event_to_markets"}, "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-8a8c16864b77b3b4", "name": "Possibly dead Python function: trigger_paper_trade", "shortDescription": {"text": "Possibly dead Python function: trigger_paper_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-476290f81d59195e", "name": "Possibly dead Python function: handle_starttag", "shortDescription": {"text": "Possibly dead Python function: handle_starttag"}, "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-6b2e324b65bd0f02", "name": "Possibly dead Python function: handle_endtag", "shortDescription": {"text": "Possibly dead Python function: handle_endtag"}, "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-6f0931bc851ab8de", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_data"}, "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-9258117fd118790e", "name": "Possibly dead Python function: configured_feed_specs", "shortDescription": {"text": "Possibly dead Python function: configured_feed_specs"}, "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-33c26dd80f4438a9", "name": "Possibly dead Python function: fetch_news_sites", "shortDescription": {"text": "Possibly dead Python function: fetch_news_sites"}, "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-be0b1ff48c4f8a51", "name": "Possibly dead Python function: probe_news_sites", "shortDescription": {"text": "Possibly dead Python function: probe_news_sites"}, "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-2a062cabe41e504c", "name": "Possibly dead Python function: market_information", "shortDescription": {"text": "Possibly dead Python function: market_information"}, "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-506be2b95088f5d3", "name": "git log failed \u2014 history analysis incomplete", "shortDescription": {"text": "git log failed \u2014 history analysis incomplete"}, "fullDescription": {"text": "fatal: not a git repository (or any parent up to mount point /data)\nStopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f9487d7b04c5651", "name": "Privileged port 127 in use", "shortDescription": {"text": "Privileged port 127 in use"}, "fullDescription": {"text": "Port 127 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "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-c83a9eff464fec0e", "name": "Insecure pattern 'cors_wildcard' in server.py:259", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server.py:259"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe3fce9ed76940ec", "name": "Very large file: simulator.py (5885 lines)", "shortDescription": {"text": "Very large file: simulator.py (5885 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-7066a0d58633eda7", "name": "Very large file: server.py (7552 lines)", "shortDescription": {"text": "Very large file: server.py (7552 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-cad51c25574f2098", "name": "Very large file: x_webhook.py (1292 lines)", "shortDescription": {"text": "Very large file: x_webhook.py (1292 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-87370245485998e3", "name": "Very large file: news_sites.py (1711 lines)", "shortDescription": {"text": "Very large file: news_sites.py (1711 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-683dd217a78b28ff", "name": "Very large file: paper_trader.py (4368 lines)", "shortDescription": {"text": "Very large file: paper_trader.py (4368 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-ee6c91f448f3a33f", "name": "Very large file: policy_feeds.py (1559 lines)", "shortDescription": {"text": "Very large file: policy_feeds.py (1559 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-ac298d2e036f4c7e", "name": "Very large file: crypto_replay_store.py (1322 lines)", "shortDescription": {"text": "Very large file: crypto_replay_store.py (1322 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "1 test file(s) for 54 source file(s) (ratio 0.02). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 546 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.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-ddf52c9dde16aefb", "name": "Legacy-named symbol `source_registry_v1` in source_registry.py:1009", "shortDescription": {"text": "Legacy-named symbol `source_registry_v1` in source_registry.py:1009"}, "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-f099c3f7daeb08f9", "name": "Legacy-named symbol `forexcom_paper_account_v1` in forexcom_paper_trader.py:87", "shortDescription": {"text": "Legacy-named symbol `forexcom_paper_account_v1` in forexcom_paper_trader.py:87"}, "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-f0a0af352c465a75", "name": "Network/subprocess call without timeout or try/except \u2014 forexcom_api.py:84", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 forexcom_api.py:84"}, "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-687385c163631a35", "name": "Commented-code block (6 lines) in pull_x_history.py:412", "shortDescription": {"text": "Commented-code block (6 lines) in pull_x_history.py:412"}, "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-c5138e3a5ba07325", "name": "Legacy-named symbol `forex_market_move_detector_state_v1` in forex_market_move_detector.py:305", "shortDescription": {"text": "Legacy-named symbol `forex_market_move_detector_state_v1` in forex_market_move_detector.py:305"}, "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-b1837aeb91d37327", "name": "Legacy-named symbol `x_v2` in x_fetch.py:48", "shortDescription": {"text": "Legacy-named symbol `x_v2` in x_fetch.py:48"}, "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-b67adc02d1f5395f", "name": "Legacy-named symbol `crypto_orderbook_snapshot_v1` in crypto_orderbook.py:168", "shortDescription": {"text": "Legacy-named symbol `crypto_orderbook_snapshot_v1` in crypto_orderbook.py:168"}, "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-8a44c6c1e9127621", "name": "Legacy-named symbol `crypto_paper_account_v1` in crypto_paper_trader.py:89", "shortDescription": {"text": "Legacy-named symbol `crypto_paper_account_v1` in crypto_paper_trader.py:89"}, "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-d212cf5262b0df34", "name": "Network/subprocess call without timeout or try/except \u2014 download_polymarket.py:274", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 download_polymarket.py:274"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e5c546354641b5f2", "name": "Legacy-named symbol `scoring_process_trace_v1` in scoring_trace.py:9", "shortDescription": {"text": "Legacy-named symbol `scoring_process_trace_v1` in scoring_trace.py:9"}, "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-b67aa2aea017a074", "name": "Legacy-named symbol `forex_market_metadata_v1` in forexcom_market_metadata.py:137", "shortDescription": {"text": "Legacy-named symbol `forex_market_metadata_v1` in forexcom_market_metadata.py:137"}, "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-de4de20634f18101", "name": "Legacy-named symbol `operator_alert_resolution_index_v1` in operator_alert_resolution.py:195", "shortDescription": {"text": "Legacy-named symbol `operator_alert_resolution_index_v1` in operator_alert_resolution.py:195"}, "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-d8485fbd57780cd5", "name": "Legacy-named symbol `crypto_market_metadata_v1` in crypto_market_metadata.py:22", "shortDescription": {"text": "Legacy-named symbol `crypto_market_metadata_v1` in crypto_market_metadata.py:22"}, "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-a9d631306d4ade56", "name": "Legacy-named symbol `crypto_market_move_detector_state_v1` in crypto_market_move_detector.py:328", "shortDescription": {"text": "Legacy-named symbol `crypto_market_move_detector_state_v1` in crypto_market_move_detector.py:328"}, "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-5d58dd4a62e3421a", "name": "Network/subprocess call without timeout or try/except \u2014 x_notification_poller.py:238", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 x_notification_poller.py:238"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-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:\nmarket_metadata.py:normalize_metadata_defaults, market_metadata.py:normalize_metadata\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:\noperator_alerts.py:now_ms, post_notification_store.py:now_ms, feed_probes.py:utc_now_ms\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:\noperator_alerts.py:iso_from_ms, post_notification_store.py:iso_from_ms, time_fidelity_orderbook_store.py:iso_from_ms, feed_probes.py:iso_from_ms\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-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncourt_feeds.py:load_json, news_sites.py:load_json, paper_trader.py:load_json, policy_feeds.py:load_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-a0b64bccbbce625d", "name": "FastAPI POST `receive_notification` without auth dependency \u2014 x_webhook.py:796", "shortDescription": {"text": "FastAPI POST `receive_notification` without auth dependency \u2014 x_webhook.py:796"}, "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-919aebb58f86992b", "name": "FastAPI POST `receive_x_ingest_heartbeat` without auth dependency \u2014 x_webhook.py:1025", "shortDescription": {"text": "FastAPI POST `receive_x_ingest_heartbeat` without auth dependency \u2014 x_webhook.py:1025"}, "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-417e373d83c194fe", "name": "FastAPI POST `receive_truth_social_notification` without auth dependency \u2014 x_webhook.py:1046", "shortDescription": {"text": "FastAPI POST `receive_truth_social_notification` without auth dependency \u2014 x_webhook.py:1046"}, "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-c33fbeb7310dc978", "name": "FastAPI POST `manual_truth_social_fetch` without auth dependency \u2014 x_webhook.py:1187", "shortDescription": {"text": "FastAPI POST `manual_truth_social_fetch` without auth dependency \u2014 x_webhook.py:1187"}, "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-7de3f14c3ad7f9ee", "name": "FastAPI POST `manual_fetch` without auth dependency \u2014 x_webhook.py:1224", "shortDescription": {"text": "FastAPI POST `manual_fetch` without auth dependency \u2014 x_webhook.py:1224"}, "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-2ef426c5e90d2a92", "name": "Unused endpoint: GET /api/dashboard/summary", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/summary"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/summary` 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-058a636eba2fd7b4", "name": "Unused endpoint: GET /api/dashboard/storage", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/storage"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/storage` 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-289d0c1daea87498", "name": "Unused endpoint: GET /api/dashboard/scoring_traces", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/scoring_traces"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/scoring_traces` 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-a3c1a64f551d61db", "name": "Unused endpoint: GET /api/dashboard/alert_history", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/alert_history"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/alert_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-088288da2deefe0c", "name": "Unused endpoint: GET /api/dashboard/markets", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/markets"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/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-4a5be403c78b0eb1", "name": "Unused endpoint: GET /api/dashboard/candle_markets", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/candle_markets"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/candle_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-96f9e047778fe110", "name": "Unused endpoint: GET /api/dashboard/market_candles", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/market_candles"}, "fullDescription": {"text": "`server.py` declares `GET /api/dashboard/market_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}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`server.py` declares `GET /` 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-622bc9a7cb025b0b", "name": "Unused endpoint: GET /api/candles", "shortDescription": {"text": "Unused endpoint: GET /api/candles"}, "fullDescription": {"text": "`server.py` declares `GET /api/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}}, {"id": "scanner-0360865ce704d667", "name": "Unused endpoint: GET /api/trump_posts", "shortDescription": {"text": "Unused endpoint: GET /api/trump_posts"}, "fullDescription": {"text": "`server.py` declares `GET /api/trump_posts` 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-62fc858a1f73dedf", "name": "Unused endpoint: GET /api/ratings", "shortDescription": {"text": "Unused endpoint: GET /api/ratings"}, "fullDescription": {"text": "`server.py` declares `GET /api/ratings` 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-04d8402ef3e02f4d", "name": "Unused endpoint: POST /api/ratings", "shortDescription": {"text": "Unused endpoint: POST /api/ratings"}, "fullDescription": {"text": "`server.py` declares `POST /api/ratings` 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-31f3786c75ac7934", "name": "Unused endpoint: POST /api/shutdown", "shortDescription": {"text": "Unused endpoint: POST /api/shutdown"}, "fullDescription": {"text": "`server.py` declares `POST /api/shutdown` 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-aaa6aa262f68abe4", "name": "Unused endpoint: POST /api/cancel_shutdown", "shortDescription": {"text": "Unused endpoint: POST /api/cancel_shutdown"}, "fullDescription": {"text": "`server.py` declares `POST /api/cancel_shutdown` 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-6438d165329e017d", "name": "Unused endpoint: GET /api/crypto/candles", "shortDescription": {"text": "Unused endpoint: GET /api/crypto/candles"}, "fullDescription": {"text": "`server.py` declares `GET /api/crypto/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}}, {"id": "scanner-6df3c35d38fc0212", "name": "Unused endpoint: GET /api/forex/candles", "shortDescription": {"text": "Unused endpoint: GET /api/forex/candles"}, "fullDescription": {"text": "`server.py` declares `GET /api/forex/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}}, {"id": "scanner-c651e9c6fe51fb15", "name": "Unused endpoint: GET /api/live_candles", "shortDescription": {"text": "Unused endpoint: GET /api/live_candles"}, "fullDescription": {"text": "`server.py` declares `GET /api/live_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}}, {"id": "scanner-f659c7794cb1735d", "name": "Unused endpoint: GET /api/date_range", "shortDescription": {"text": "Unused endpoint: GET /api/date_range"}, "fullDescription": {"text": "`server.py` declares `GET /api/date_range` 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-a76625ba010b5da6", "name": "Unused endpoint: GET /api/kalshi/markets", "shortDescription": {"text": "Unused endpoint: GET /api/kalshi/markets"}, "fullDescription": {"text": "`server.py` declares `GET /api/kalshi/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-81403eb010bbdab8", "name": "Unused endpoint: GET /api/kalshi/candles", "shortDescription": {"text": "Unused endpoint: GET /api/kalshi/candles"}, "fullDescription": {"text": "`server.py` declares `GET /api/kalshi/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}}, {"id": "scanner-13dd1d9ce34d7a26", "name": "Unused endpoint: GET /api/kalshi/posts", "shortDescription": {"text": "Unused endpoint: GET /api/kalshi/posts"}, "fullDescription": {"text": "`server.py` declares `GET /api/kalshi/posts` 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-ed59a8460aa688e2", "name": "Unused endpoint: GET /api/kalshi/date_range", "shortDescription": {"text": "Unused endpoint: GET /api/kalshi/date_range"}, "fullDescription": {"text": "`server.py` declares `GET /api/kalshi/date_range` 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-4392658b13b1c5d9", "name": "Unused endpoint: POST /webhook/notification", "shortDescription": {"text": "Unused endpoint: POST /webhook/notification"}, "fullDescription": {"text": "`x_webhook.py` declares `POST /webhook/notification` 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-230d0bed3a5d2546", "name": "Unused endpoint: POST /webhook/x/heartbeat", "shortDescription": {"text": "Unused endpoint: POST /webhook/x/heartbeat"}, "fullDescription": {"text": "`x_webhook.py` declares `POST /webhook/x/heartbeat` 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-9084ee7d63f475ad", "name": "Unused endpoint: POST /webhook/truthsocial/notification", "shortDescription": {"text": "Unused endpoint: POST /webhook/truthsocial/notification"}, "fullDescription": {"text": "`x_webhook.py` declares `POST /webhook/truthsocial/notification` 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-36743fafa365f3c8", "name": "Unused endpoint: POST /webhook/truthsocial/fetch", "shortDescription": {"text": "Unused endpoint: POST /webhook/truthsocial/fetch"}, "fullDescription": {"text": "`x_webhook.py` declares `POST /webhook/truthsocial/fetch` 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-c619d9c0a21cc2cb", "name": "Unused endpoint: POST /webhook/fetch", "shortDescription": {"text": "Unused endpoint: POST /webhook/fetch"}, "fullDescription": {"text": "`x_webhook.py` declares `POST /webhook/fetch` 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-7594a108034eaf39", "name": "Unused endpoint: GET /webhook/status", "shortDescription": {"text": "Unused endpoint: GET /webhook/status"}, "fullDescription": {"text": "`x_webhook.py` declares `GET /webhook/status` 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/10869"}, "properties": {"repository": "jbarbre/Trade", "repoUrl": "https://github.com/jbarbre/Trade", "branch": "main"}, "results": [{"ruleId": "scanner-421b514b53f1e7d5", "level": "note", "message": {"text": "Possibly dead Python function: default_metadata_model"}, "properties": {"repobilityId": "f8dab7778264b8f5", "scanner": "scanner-primary", "fingerprint": "421b514b53f1e7d5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "market_metadata.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e807c435ca7e6b44", "level": "note", "message": {"text": "Possibly dead Python function: sibling_market_summaries"}, "properties": {"repobilityId": "2796e3de040a753c", "scanner": "scanner-primary", "fingerprint": "e807c435ca7e6b44", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "market_metadata.py:271"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6dc9de03cc985464", "level": "note", "message": {"text": "Possibly dead Python function: write_metadata_cache"}, "properties": {"repobilityId": "99e235befc6dc65b", "scanner": "scanner-primary", "fingerprint": "6dc9de03cc985464", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "market_metadata.py:363"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-edab7431a6371838", "level": "note", "message": {"text": "Possibly dead Python function: attach_control_metadata"}, "properties": {"repobilityId": "54ba8a795f66c2a1", "scanner": "scanner-primary", "fingerprint": "edab7431a6371838", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "market_metadata.py:517"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c420c932621a50a8", "level": "note", "message": {"text": "Possibly dead Python function: call_codex_metadata_extractor"}, "properties": {"repobilityId": "bdc21c0002f5cf91", "scanner": "scanner-primary", "fingerprint": "c420c932621a50a8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "market_metadata.py:655"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-135f59d0ba85116f", "level": "note", "message": {"text": "Possibly dead Python function: alert_summary"}, "properties": {"repobilityId": "69dbce83d70dcc5b", "scanner": "scanner-primary", "fingerprint": "135f59d0ba85116f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "operator_alerts.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17e182eb18abb180", "level": "note", "message": {"text": "Possibly dead Python function: write_source_registry"}, "properties": {"repobilityId": "d661562bc483ff7c", "scanner": "scanner-primary", "fingerprint": "17e182eb18abb180", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "source_registry.py:1019"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cc91011ae3c1edf3", "level": "note", "message": {"text": "Possibly dead Python function: load_source_registry"}, "properties": {"repobilityId": "085b9bc503437fba", "scanner": "scanner-primary", "fingerprint": "cc91011ae3c1edf3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "source_registry.py:1026"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24a78427c816124d", "level": "note", "message": {"text": "Possibly dead Python function: load_market_family_requirements"}, "properties": {"repobilityId": "03306a26515df003", "scanner": "scanner-primary", "fingerprint": "24a78427c816124d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "source_registry.py:1033"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1538b3377cea2714", "level": "note", "message": {"text": "Possibly dead Python function: load_manual_sources"}, "properties": {"repobilityId": "a91bb9a0bf201a0f", "scanner": "scanner-primary", "fingerprint": "1538b3377cea2714", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "source_registry.py:1038"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4b429a12d83ddcd1", "level": "note", "message": {"text": "Possibly dead Python function: expand_district"}, "properties": {"repobilityId": "2b69378ffe2c9179", "scanner": "scanner-primary", "fingerprint": "4b429a12d83ddcd1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llm_scorer.py:1202"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9a67b88a020db3e", "level": "note", "message": {"text": "Possibly dead Python function: format_markets_for_prompt"}, "properties": {"repobilityId": "1dd2d29dc4a09767", "scanner": "scanner-primary", "fingerprint": "c9a67b88a020db3e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llm_scorer.py:4092"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6cd8844f141fdcc9", "level": "note", "message": {"text": "Possibly dead Python function: handle_starttag"}, "properties": {"repobilityId": "3bf216d149959ebf", "scanner": "scanner-primary", "fingerprint": "6cd8844f141fdcc9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f04f52ab4d9aa7e", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "1f04f52ab4d9aa7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:114"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-927ca0c8b6b20477", "level": "note", "message": {"text": "Possibly dead Python function: handle_endtag"}, "properties": {"repobilityId": "7eb6f3decafc1766", "scanner": "scanner-primary", "fingerprint": "927ca0c8b6b20477", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bbd9d3a48011963e", "level": "note", "message": {"text": "Possibly dead Python function: sleep_until_next"}, "properties": {"repobilityId": "e37d5bec49237bc6", "scanner": "scanner-primary", "fingerprint": "bbd9d3a48011963e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:169"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ed87b58cb2bf9eb", "level": "note", "message": {"text": "Possibly dead Python function: fetch_court_feeds"}, "properties": {"repobilityId": "f0f4894d27a100ff", "scanner": "scanner-primary", "fingerprint": "7ed87b58cb2bf9eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:499"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a95cefd6ad06d1e", "level": "note", "message": {"text": "Possibly dead Python function: probe_court_feeds"}, "properties": {"repobilityId": "facf490bb1459630", "scanner": "scanner-primary", "fingerprint": "6a95cefd6ad06d1e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:538"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1607b13efd3db9c3", "level": "note", "message": {"text": "Possibly dead Python function: append_new_court_items"}, "properties": {"repobilityId": "3db6dabfdf28b2c2", "scanner": "scanner-primary", "fingerprint": "1607b13efd3db9c3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:663"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2a55d85092452461", "level": "note", "message": {"text": "Possibly dead Python function: route_court_event_to_markets"}, "properties": {"repobilityId": "05b47bea253ffa7d", "scanner": "scanner-primary", "fingerprint": "2a55d85092452461", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "court_feeds.py:762"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a8c16864b77b3b4", "level": "note", "message": {"text": "Possibly dead Python function: trigger_paper_trade"}, "properties": {"repobilityId": "eaef6483b8b74cb7", "scanner": "scanner-primary", "fingerprint": "8a8c16864b77b3b4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "x_webhook.py:534"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-476290f81d59195e", "level": "note", "message": {"text": "Possibly dead Python function: handle_starttag"}, "properties": {"repobilityId": "3bf216d149959ebf", "scanner": "scanner-primary", "fingerprint": "476290f81d59195e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "news_sites.py:664"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b2e324b65bd0f02", "level": "note", "message": {"text": "Possibly dead Python function: handle_endtag"}, "properties": {"repobilityId": "7eb6f3decafc1766", "scanner": "scanner-primary", "fingerprint": "6b2e324b65bd0f02", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "news_sites.py:668"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f0931bc851ab8de", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "6f0931bc851ab8de", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "news_sites.py:672"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9258117fd118790e", "level": "note", "message": {"text": "Possibly dead Python function: configured_feed_specs"}, "properties": {"repobilityId": "2bd18c5d5887ee64", "scanner": "scanner-primary", "fingerprint": "9258117fd118790e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "news_sites.py:787"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-33c26dd80f4438a9", "level": "note", "message": {"text": "Possibly dead Python function: fetch_news_sites"}, "properties": {"repobilityId": "f9979d463dd3a665", "scanner": "scanner-primary", "fingerprint": "33c26dd80f4438a9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "news_sites.py:1525"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be0b1ff48c4f8a51", "level": "note", "message": {"text": "Possibly dead Python function: probe_news_sites"}, "properties": {"repobilityId": "0517357d88c0de64", "scanner": "scanner-primary", "fingerprint": "be0b1ff48c4f8a51", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "news_sites.py:1568"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2a062cabe41e504c", "level": "note", "message": {"text": "Possibly dead Python function: market_information"}, "properties": {"repobilityId": "0114dd610389aaf4", "scanner": "scanner-primary", "fingerprint": "2a062cabe41e504c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "forexcom_api.py:163"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-506be2b95088f5d3", "level": "none", "message": {"text": "git log failed \u2014 history analysis incomplete"}, "properties": {"repobilityId": "b424308a11bb9b22", "scanner": "scanner-primary", "fingerprint": "506be2b95088f5d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["git", "tooling"]}}, {"ruleId": "scanner-7f9487d7b04c5651", "level": "warning", "message": {"text": "Privileged port 127 in use"}, "properties": {"repobilityId": "afafb77f13b4bf59", "scanner": "scanner-primary", "fingerprint": "7f9487d7b04c5651", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1}}}]}, {"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-c83a9eff464fec0e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server.py:259"}, "properties": {"repobilityId": "8785661a35cadd9b", "scanner": "scanner-primary", "fingerprint": "c83a9eff464fec0e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 259}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-fe3fce9ed76940ec", "level": "note", "message": {"text": "Very large file: simulator.py (5885 lines)"}, "properties": {"repobilityId": "54ace8caf4550fa5", "scanner": "scanner-primary", "fingerprint": "fe3fce9ed76940ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7066a0d58633eda7", "level": "note", "message": {"text": "Very large file: server.py (7552 lines)"}, "properties": {"repobilityId": "61d8058d744c856e", "scanner": "scanner-primary", "fingerprint": "7066a0d58633eda7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cad51c25574f2098", "level": "note", "message": {"text": "Very large file: x_webhook.py (1292 lines)"}, "properties": {"repobilityId": "81d33a8dd0245e91", "scanner": "scanner-primary", "fingerprint": "cad51c25574f2098", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87370245485998e3", "level": "note", "message": {"text": "Very large file: news_sites.py (1711 lines)"}, "properties": {"repobilityId": "1fe5b7fbee62c478", "scanner": "scanner-primary", "fingerprint": "87370245485998e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-683dd217a78b28ff", "level": "note", "message": {"text": "Very large file: paper_trader.py (4368 lines)"}, "properties": {"repobilityId": "a8021f1cdb669285", "scanner": "scanner-primary", "fingerprint": "683dd217a78b28ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee6c91f448f3a33f", "level": "note", "message": {"text": "Very large file: policy_feeds.py (1559 lines)"}, "properties": {"repobilityId": "433594033ed2c43a", "scanner": "scanner-primary", "fingerprint": "ee6c91f448f3a33f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac298d2e036f4c7e", "level": "note", "message": {"text": "Very large file: crypto_replay_store.py (1322 lines)"}, "properties": {"repobilityId": "f5a86a861477c282", "scanner": "scanner-primary", "fingerprint": "ac298d2e036f4c7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "c47c48b933433675", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "c6ad9ef9ca363bcd", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "0bcae400ed8278d9", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "4f11ff314b237368", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-ddf52c9dde16aefb", "level": "note", "message": {"text": "Legacy-named symbol `source_registry_v1` in source_registry.py:1009"}, "properties": {"repobilityId": "6c3061c1c672cecd", "scanner": "scanner-primary", "fingerprint": "ddf52c9dde16aefb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f099c3f7daeb08f9", "level": "note", "message": {"text": "Legacy-named symbol `forexcom_paper_account_v1` in forexcom_paper_trader.py:87"}, "properties": {"repobilityId": "d67921d759d932ab", "scanner": "scanner-primary", "fingerprint": "f099c3f7daeb08f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0a0af352c465a75", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 forexcom_api.py:84"}, "properties": {"repobilityId": "68b374b5d925cfc1", "scanner": "scanner-primary", "fingerprint": "f0a0af352c465a75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-687385c163631a35", "level": "none", "message": {"text": "Commented-code block (6 lines) in pull_x_history.py:412"}, "properties": {"repobilityId": "fdca1a9d38a72793", "scanner": "scanner-primary", "fingerprint": "687385c163631a35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5138e3a5ba07325", "level": "note", "message": {"text": "Legacy-named symbol `forex_market_move_detector_state_v1` in forex_market_move_detector.py:305"}, "properties": {"repobilityId": "d9091d113f5a3b1d", "scanner": "scanner-primary", "fingerprint": "c5138e3a5ba07325", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b1837aeb91d37327", "level": "note", "message": {"text": "Legacy-named symbol `x_v2` in x_fetch.py:48"}, "properties": {"repobilityId": "d68648ee975290b2", "scanner": "scanner-primary", "fingerprint": "b1837aeb91d37327", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b67adc02d1f5395f", "level": "note", "message": {"text": "Legacy-named symbol `crypto_orderbook_snapshot_v1` in crypto_orderbook.py:168"}, "properties": {"repobilityId": "a4a3b844692b0a49", "scanner": "scanner-primary", "fingerprint": "b67adc02d1f5395f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8a44c6c1e9127621", "level": "note", "message": {"text": "Legacy-named symbol `crypto_paper_account_v1` in crypto_paper_trader.py:89"}, "properties": {"repobilityId": "c88990c5b6590610", "scanner": "scanner-primary", "fingerprint": "8a44c6c1e9127621", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d212cf5262b0df34", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 download_polymarket.py:274"}, "properties": {"repobilityId": "1c3b4b11b13f32c2", "scanner": "scanner-primary", "fingerprint": "d212cf5262b0df34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e5c546354641b5f2", "level": "note", "message": {"text": "Legacy-named symbol `scoring_process_trace_v1` in scoring_trace.py:9"}, "properties": {"repobilityId": "1f1d53405f210e3c", "scanner": "scanner-primary", "fingerprint": "e5c546354641b5f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b67aa2aea017a074", "level": "note", "message": {"text": "Legacy-named symbol `forex_market_metadata_v1` in forexcom_market_metadata.py:137"}, "properties": {"repobilityId": "9e9ebb7ae567f2ca", "scanner": "scanner-primary", "fingerprint": "b67aa2aea017a074", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-de4de20634f18101", "level": "note", "message": {"text": "Legacy-named symbol `operator_alert_resolution_index_v1` in operator_alert_resolution.py:195"}, "properties": {"repobilityId": "c2700343679a0596", "scanner": "scanner-primary", "fingerprint": "de4de20634f18101", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d8485fbd57780cd5", "level": "note", "message": {"text": "Legacy-named symbol `crypto_market_metadata_v1` in crypto_market_metadata.py:22"}, "properties": {"repobilityId": "20d8952f17112245", "scanner": "scanner-primary", "fingerprint": "d8485fbd57780cd5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9d631306d4ade56", "level": "note", "message": {"text": "Legacy-named symbol `crypto_market_move_detector_state_v1` in crypto_market_move_detector.py:328"}, "properties": {"repobilityId": "44db416d357abfd5", "scanner": "scanner-primary", "fingerprint": "a9d631306d4ade56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5d58dd4a62e3421a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 x_notification_poller.py:238"}, "properties": {"repobilityId": "1ce9735765b1e168", "scanner": "scanner-primary", "fingerprint": "5d58dd4a62e3421a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "729fa05baff20901", "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": "c0687d965318faf0", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "19544fee3151bc4e", "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": "4cf3f35c29d87221", "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": "741f8dafc76297ea", "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": "12061d2c05aec2fd", "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": "c970bcc3b0f5d683", "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": "9a81210642521b38", "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": "45bbdb9b20a87e77", "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": "1b869bd5c3455b57", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "71d1ac76cb2e3683", "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": "570335a8a5bd4588", "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": "92d2012cb6cbf62a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "f1aecf43bfb115f6", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "5ed9bfb3bd546928", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "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": "c8ae7a112f49087a", "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": "b2ecbe2b690aca62", "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": "6066811b4756a392", "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": "ceaff621f360990b", "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": "9a8f95bc55665e60", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-a0b64bccbbce625d", "level": "error", "message": {"text": "FastAPI POST `receive_notification` without auth dependency \u2014 x_webhook.py:796"}, "properties": {"repobilityId": "7509b697f636eb89", "scanner": "scanner-primary", "fingerprint": "a0b64bccbbce625d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "x_webhook.py"}, "region": {"startLine": 796}}}]}, {"ruleId": "scanner-919aebb58f86992b", "level": "error", "message": {"text": "FastAPI POST `receive_x_ingest_heartbeat` without auth dependency \u2014 x_webhook.py:1025"}, "properties": {"repobilityId": "7265bca26226858d", "scanner": "scanner-primary", "fingerprint": "919aebb58f86992b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "x_webhook.py"}, "region": {"startLine": 1025}}}]}, {"ruleId": "scanner-417e373d83c194fe", "level": "error", "message": {"text": "FastAPI POST `receive_truth_social_notification` without auth dependency \u2014 x_webhook.py:1046"}, "properties": {"repobilityId": "caa5b8e1bb0a0f25", "scanner": "scanner-primary", "fingerprint": "417e373d83c194fe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "x_webhook.py"}, "region": {"startLine": 1046}}}]}, {"ruleId": "scanner-c33fbeb7310dc978", "level": "error", "message": {"text": "FastAPI POST `manual_truth_social_fetch` without auth dependency \u2014 x_webhook.py:1187"}, "properties": {"repobilityId": "8aeb19d517df8b17", "scanner": "scanner-primary", "fingerprint": "c33fbeb7310dc978", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "x_webhook.py"}, "region": {"startLine": 1187}}}]}, {"ruleId": "scanner-7de3f14c3ad7f9ee", "level": "error", "message": {"text": "FastAPI POST `manual_fetch` without auth dependency \u2014 x_webhook.py:1224"}, "properties": {"repobilityId": "d6b41ad869532c38", "scanner": "scanner-primary", "fingerprint": "7de3f14c3ad7f9ee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "x_webhook.py"}, "region": {"startLine": 1224}}}]}, {"ruleId": "scanner-2ef426c5e90d2a92", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/summary"}, "properties": {"repobilityId": "952053100f319990", "scanner": "scanner-primary", "fingerprint": "2ef426c5e90d2a92", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-058a636eba2fd7b4", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/storage"}, "properties": {"repobilityId": "54e6244d77d9fb88", "scanner": "scanner-primary", "fingerprint": "058a636eba2fd7b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-289d0c1daea87498", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/scoring_traces"}, "properties": {"repobilityId": "e492a88569376d2c", "scanner": "scanner-primary", "fingerprint": "289d0c1daea87498", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a3c1a64f551d61db", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/alert_history"}, "properties": {"repobilityId": "1f7c59f156418e21", "scanner": "scanner-primary", "fingerprint": "a3c1a64f551d61db", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-088288da2deefe0c", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/markets"}, "properties": {"repobilityId": "726ecc2a5e5c273f", "scanner": "scanner-primary", "fingerprint": "088288da2deefe0c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4a5be403c78b0eb1", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/candle_markets"}, "properties": {"repobilityId": "27631704cdbd71b8", "scanner": "scanner-primary", "fingerprint": "4a5be403c78b0eb1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-96f9e047778fe110", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/market_candles"}, "properties": {"repobilityId": "b6e1f1c7fd2573e2", "scanner": "scanner-primary", "fingerprint": "96f9e047778fe110", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "9e89b3880b9621fb", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-622bc9a7cb025b0b", "level": "note", "message": {"text": "Unused endpoint: GET /api/candles"}, "properties": {"repobilityId": "bfbc14cbbb30db8f", "scanner": "scanner-primary", "fingerprint": "622bc9a7cb025b0b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0360865ce704d667", "level": "note", "message": {"text": "Unused endpoint: GET /api/trump_posts"}, "properties": {"repobilityId": "2ce87d777f0cd262", "scanner": "scanner-primary", "fingerprint": "0360865ce704d667", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-62fc858a1f73dedf", "level": "note", "message": {"text": "Unused endpoint: GET /api/ratings"}, "properties": {"repobilityId": "7c7f1f4c1bb7eac0", "scanner": "scanner-primary", "fingerprint": "62fc858a1f73dedf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-04d8402ef3e02f4d", "level": "note", "message": {"text": "Unused endpoint: POST /api/ratings"}, "properties": {"repobilityId": "f0eeeea797ce4b10", "scanner": "scanner-primary", "fingerprint": "04d8402ef3e02f4d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31f3786c75ac7934", "level": "note", "message": {"text": "Unused endpoint: POST /api/shutdown"}, "properties": {"repobilityId": "8a230707bb0d7021", "scanner": "scanner-primary", "fingerprint": "31f3786c75ac7934", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aaa6aa262f68abe4", "level": "note", "message": {"text": "Unused endpoint: POST /api/cancel_shutdown"}, "properties": {"repobilityId": "b839881f413654eb", "scanner": "scanner-primary", "fingerprint": "aaa6aa262f68abe4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6438d165329e017d", "level": "note", "message": {"text": "Unused endpoint: GET /api/crypto/candles"}, "properties": {"repobilityId": "73d7ee63ff68d93b", "scanner": "scanner-primary", "fingerprint": "6438d165329e017d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6df3c35d38fc0212", "level": "note", "message": {"text": "Unused endpoint: GET /api/forex/candles"}, "properties": {"repobilityId": "182eac8e0ac923e9", "scanner": "scanner-primary", "fingerprint": "6df3c35d38fc0212", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c651e9c6fe51fb15", "level": "note", "message": {"text": "Unused endpoint: GET /api/live_candles"}, "properties": {"repobilityId": "1f256278ef23e3dc", "scanner": "scanner-primary", "fingerprint": "c651e9c6fe51fb15", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f659c7794cb1735d", "level": "note", "message": {"text": "Unused endpoint: GET /api/date_range"}, "properties": {"repobilityId": "5ca031c599e1f270", "scanner": "scanner-primary", "fingerprint": "f659c7794cb1735d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a76625ba010b5da6", "level": "note", "message": {"text": "Unused endpoint: GET /api/kalshi/markets"}, "properties": {"repobilityId": "646b1ba03c32c3c9", "scanner": "scanner-primary", "fingerprint": "a76625ba010b5da6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-81403eb010bbdab8", "level": "note", "message": {"text": "Unused endpoint: GET /api/kalshi/candles"}, "properties": {"repobilityId": "db66d14112c62b13", "scanner": "scanner-primary", "fingerprint": "81403eb010bbdab8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-13dd1d9ce34d7a26", "level": "note", "message": {"text": "Unused endpoint: GET /api/kalshi/posts"}, "properties": {"repobilityId": "fb63d6ebc7c12ec5", "scanner": "scanner-primary", "fingerprint": "13dd1d9ce34d7a26", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ed59a8460aa688e2", "level": "note", "message": {"text": "Unused endpoint: GET /api/kalshi/date_range"}, "properties": {"repobilityId": "1828eb1dd12f5d09", "scanner": "scanner-primary", "fingerprint": "ed59a8460aa688e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4392658b13b1c5d9", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/notification"}, "properties": {"repobilityId": "3113c5873486efb2", "scanner": "scanner-primary", "fingerprint": "4392658b13b1c5d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-230d0bed3a5d2546", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/x/heartbeat"}, "properties": {"repobilityId": "8454189acc9305af", "scanner": "scanner-primary", "fingerprint": "230d0bed3a5d2546", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9084ee7d63f475ad", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/truthsocial/notification"}, "properties": {"repobilityId": "3d6010ed129a7a8c", "scanner": "scanner-primary", "fingerprint": "9084ee7d63f475ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36743fafa365f3c8", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/truthsocial/fetch"}, "properties": {"repobilityId": "4bcd650ef0a0e676", "scanner": "scanner-primary", "fingerprint": "36743fafa365f3c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c619d9c0a21cc2cb", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/fetch"}, "properties": {"repobilityId": "d2bb36070a0024b7", "scanner": "scanner-primary", "fingerprint": "c619d9c0a21cc2cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7594a108034eaf39", "level": "note", "message": {"text": "Unused endpoint: GET /webhook/status"}, "properties": {"repobilityId": "134bfa1cdd636655", "scanner": "scanner-primary", "fingerprint": "7594a108034eaf39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}