{"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-a08923ff78caf4a0", "name": "Possibly dead Python function: continuous_monitor", "shortDescription": {"text": "Possibly dead Python function: continuous_monitor"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-117f8c531833c543", "name": "Possibly dead Python function: verify_api_key", "shortDescription": {"text": "Possibly dead Python function: verify_api_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f1db4edda0ab6dd", "name": "Possibly dead Python function: convert_types", "shortDescription": {"text": "Possibly dead Python function: convert_types"}, "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-aa9d797405803601", "name": "Possibly dead Python function: convert_numpy", "shortDescription": {"text": "Possibly dead Python function: convert_numpy"}, "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-75c523a22dad5c9f", "name": "Possibly dead Python function: negative_log_likelihood", "shortDescription": {"text": "Possibly dead Python function: negative_log_likelihood"}, "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-c8e43a08a8caa7ea", "name": "Possibly dead Python function: check_sharp_book_availability", "shortDescription": {"text": "Possibly dead Python function: check_sharp_book_availability"}, "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-d13da044e65ce80c", "name": "Possibly dead Python function: get_v3_fallback_prediction", "shortDescription": {"text": "Possibly dead Python function: get_v3_fallback_prediction"}, "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-d42997f66f23ffed", "name": "Possibly dead Python function: ensure_components_loaded", "shortDescription": {"text": "Possibly dead Python function: ensure_components_loaded"}, "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-6c2db2c77c93303b", "name": "Possibly dead Python function: verify_api_key", "shortDescription": {"text": "Possibly dead Python function: verify_api_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e39e20a0df363d65", "name": "Possibly dead Python function: prob_over_25", "shortDescription": {"text": "Possibly dead Python function: prob_over_25"}, "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-34c4b0884cafbe83", "name": "Possibly dead Python function: prob_btts_yes", "shortDescription": {"text": "Possibly dead Python function: prob_btts_yes"}, "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-da2d9685c0f7e357", "name": "Possibly dead Python function: prob_ah_home_minus_1", "shortDescription": {"text": "Possibly dead Python function: prob_ah_home_minus_1"}, "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-89ec7e80cfa25e4a", "name": "Possibly dead Python function: prob_double_chance", "shortDescription": {"text": "Possibly dead Python function: prob_double_chance"}, "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-d73f2207c6678654", "name": "Possibly dead Python function: resolve_bookmaker_name", "shortDescription": {"text": "Possibly dead Python function: resolve_bookmaker_name"}, "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-eb81a9451b759554", "name": "Possibly dead Python function: backfill_historical_odds", "shortDescription": {"text": "Possibly dead Python function: backfill_historical_odds"}, "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-c7b95b3f091c8333", "name": "Possibly dead Python function: predict_poisson_probabilities", "shortDescription": {"text": "Possibly dead Python function: predict_poisson_probabilities"}, "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-1067cf5cd79b88c9", "name": "Possibly dead Python function: calibrate_per_league", "shortDescription": {"text": "Possibly dead Python function: calibrate_per_league"}, "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-1f898454f391c894", "name": "Possible secret in add_match_results_batch.py", "shortDescription": {"text": "Possible secret in add_match_results_batch.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-d372e9da3f18ac68", "name": "Insecure pattern 'cors_wildcard' in main_backup_20250731_183736.py:39", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in main_backup_20250731_183736.py:39"}, "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-22a3bf6cfc8a58ea", "name": "Possible secret in test_closing_odds_system.sh", "shortDescription": {"text": "Possible secret in test_closing_odds_system.sh"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-330f02da1af62112", "name": "Insecure pattern 'cors_wildcard' in main.py:284", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in main.py:284"}, "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-080556db5c7ca868", "name": "Possible secret in clv_frontend_demo.html", "shortDescription": {"text": "Possible secret in clv_frontend_demo.html"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-ba9e94ce79228796", "name": "Insecure pattern 'direct_innerhtml_assignment' in clv_frontend_demo.html:456", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in clv_frontend_demo.html:456"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ccac3a27d2fa1bf", "name": "Possible secret in test_qa_phase2.py", "shortDescription": {"text": "Possible secret in test_qa_phase2.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-ea2e9e5f8b33665b", "name": "Possible secret in test_enhanced_metrics.sh", "shortDescription": {"text": "Possible secret in test_enhanced_metrics.sh"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-70da5a26e4856dc0", "name": "Very large file: main_backup_20250731_183736.py (1279 lines)", "shortDescription": {"text": "Very large file: main_backup_20250731_183736.py (1279 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-cfa54bc7214722a7", "name": "Very large file: main.py (10375 lines)", "shortDescription": {"text": "Very large file: main.py (10375 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": "14 test file(s) for 158 source file(s) (ratio 0.09). 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 3868 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 12 placeholder/mock markers across 11 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-456cc6b4f74cd229", "name": "Legacy-named symbol `Clean_PreMatch_v1` in clean_prediction_system.py:269", "shortDescription": {"text": "Legacy-named symbol `Clean_PreMatch_v1` in clean_prediction_system.py:269"}, "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-5536d639d0a847c2", "name": "Legacy-named symbol `odds_accuracy_evaluation_v2` in test_v2_shadow_system.py:50", "shortDescription": {"text": "Legacy-named symbol `odds_accuracy_evaluation_v2` in test_v2_shadow_system.py:50"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cab5484c288289ba", "name": "Network/subprocess call without timeout or try/except \u2014 run_training.py:62", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 run_training.py:62"}, "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-46e3e81d8c444d7a", "name": "Legacy-named symbol `Phase4_Complete_v1` in phase4_complete_implementation.py:384", "shortDescription": {"text": "Legacy-named symbol `Phase4_Complete_v1` in phase4_complete_implementation.py:384"}, "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-668aeb629e8222db", "name": "Commented-code block (5 lines) in consensus_qa.py:50", "shortDescription": {"text": "Commented-code block (5 lines) in consensus_qa.py:50"}, "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-f53470dc58dcb6c1", "name": "Legacy-named symbol `Production_Validated_v1` in production_ml_system.py:205", "shortDescription": {"text": "Legacy-named symbol `Production_Validated_v1` in production_ml_system.py:205"}, "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-121ebb71930d10cf", "name": "Legacy-named symbol `TwoStage_Enhanced_v2` in enhanced_two_stage_trainer.py:374", "shortDescription": {"text": "Legacy-named symbol `TwoStage_Enhanced_v2` in enhanced_two_stage_trainer.py:374"}, "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-5e69d0094f530787", "name": "Legacy-named symbol `TwoStage_Quick_v1` in quick_two_stage_test.py:289", "shortDescription": {"text": "Legacy-named symbol `TwoStage_Quick_v1` in quick_two_stage_test.py:289"}, "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-2b07213865d4a1ed", "name": "Legacy-named symbol `prob_old` in populate_match_features.py:60", "shortDescription": {"text": "Legacy-named symbol `prob_old` in populate_match_features.py:60"}, "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-b7af33009fa2f75f", "name": "Legacy-named symbol `router_v2` in main.py:249", "shortDescription": {"text": "Legacy-named symbol `router_v2` in main.py:249"}, "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-c571c81440ac401c", "name": "Commented-code block (5 lines) in main.py:2837", "shortDescription": {"text": "Commented-code block (5 lines) in main.py:2837"}, "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-20a86f530b984ade", "name": "Legacy-named symbol `Phase3_v1` in phase3_calibration_system.py:347", "shortDescription": {"text": "Legacy-named symbol `Phase3_v1` in phase3_calibration_system.py:347"}, "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-ea0faf335a37f023", "name": "Legacy-named symbol `generate_enhanced_features_v2` in phase1b_enhanced_training.py:90", "shortDescription": {"text": "Legacy-named symbol `generate_enhanced_features_v2` in phase1b_enhanced_training.py:90"}, "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-4f9c234e5383ad8e", "name": "Legacy-named symbol `promote_v2` in auto_promote_v2.py:197", "shortDescription": {"text": "Legacy-named symbol `promote_v2` in auto_promote_v2.py:197"}, "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-af022f937dd5b7fd", "name": "9 env vars used in code but missing from .env.example", "shortDescription": {"text": "9 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `API_BASE_URL`, `API_KEY`, `DATABASE_URL`, `ENABLE_BACKGROUND`, `LD_LIBRARY_PATH`, `ODDS_API_KEY`, `PORT`, `REPLIT_DEPLOYMENT` + 1 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nreal_model_evaluation.py:get_outcome, production_league_metrics.py:get_outcome, league_metrics_analyzer.py:get_outcome, phase_r_recovery_system.py:get_outcome\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncomplete_phase1a_enhancer.py:calculate_competitiveness_indicator, simplified_phase1b_collector.py:calculate_competitiveness\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:\nodds_demo_system.py:calculate_top2_accuracy, enhanced_market_baseline_system.py:calculate_top2_accuracy, complete_odds_integration.py:calculate_top2_accuracy\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/28424"}, "properties": {"repository": "onjoroge1/BetGeniusAI", "repoUrl": "https://github.com/onjoroge1/BetGeniusAI", "branch": "main"}, "results": [{"ruleId": "scanner-a08923ff78caf4a0", "level": "note", "message": {"text": "Possibly dead Python function: continuous_monitor"}, "properties": {"repobilityId": "25a15ee164f89566", "scanner": "scanner-primary", "fingerprint": "a08923ff78caf4a0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odds_collection_monitor.py:199"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-117f8c531833c543", "level": "note", "message": {"text": "Possibly dead Python function: verify_api_key"}, "properties": {"repobilityId": "7e20521df243db65", "scanner": "scanner-primary", "fingerprint": "117f8c531833c543", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main_backup_20250731_183736.py:95"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f1db4edda0ab6dd", "level": "note", "message": {"text": "Possibly dead Python function: convert_types"}, "properties": {"repobilityId": "5c7fb681d59e9601", "scanner": "scanner-primary", "fingerprint": "5f1db4edda0ab6dd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "phase4_complete_implementation.py:593"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa9d797405803601", "level": "note", "message": {"text": "Possibly dead Python function: convert_numpy"}, "properties": {"repobilityId": "c45c94f614b32d41", "scanner": "scanner-primary", "fingerprint": "aa9d797405803601", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "phase3_production_monitor.py:418"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75c523a22dad5c9f", "level": "note", "message": {"text": "Possibly dead Python function: negative_log_likelihood"}, "properties": {"repobilityId": "3ff521b1b2a489f4", "scanner": "scanner-primary", "fingerprint": "75c523a22dad5c9f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "s3_poisson_head.py:150"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8e43a08a8caa7ea", "level": "note", "message": {"text": "Possibly dead Python function: check_sharp_book_availability"}, "properties": {"repobilityId": "f9fee9a0a0e6ba51", "scanner": "scanner-primary", "fingerprint": "c8e43a08a8caa7ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:486"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d13da044e65ce80c", "level": "note", "message": {"text": "Possibly dead Python function: get_v3_fallback_prediction"}, "properties": {"repobilityId": "48cbd260b815c63c", "scanner": "scanner-primary", "fingerprint": "d13da044e65ce80c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:523"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d42997f66f23ffed", "level": "note", "message": {"text": "Possibly dead Python function: ensure_components_loaded"}, "properties": {"repobilityId": "2e332335abdb6966", "scanner": "scanner-primary", "fingerprint": "d42997f66f23ffed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:582"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c2db2c77c93303b", "level": "note", "message": {"text": "Possibly dead Python function: verify_api_key"}, "properties": {"repobilityId": "7e20521df243db65", "scanner": "scanner-primary", "fingerprint": "6c2db2c77c93303b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:775"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e39e20a0df363d65", "level": "note", "message": {"text": "Possibly dead Python function: prob_over_25"}, "properties": {"repobilityId": "0a5a6e1a07a5974b", "scanner": "scanner-primary", "fingerprint": "e39e20a0df363d65", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:1003"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-34c4b0884cafbe83", "level": "note", "message": {"text": "Possibly dead Python function: prob_btts_yes"}, "properties": {"repobilityId": "39f5abfcc11d2eb5", "scanner": "scanner-primary", "fingerprint": "34c4b0884cafbe83", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:1050"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da2d9685c0f7e357", "level": "note", "message": {"text": "Possibly dead Python function: prob_ah_home_minus_1"}, "properties": {"repobilityId": "253d88f9f7e53bd0", "scanner": "scanner-primary", "fingerprint": "da2d9685c0f7e357", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:1055"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-89ec7e80cfa25e4a", "level": "note", "message": {"text": "Possibly dead Python function: prob_double_chance"}, "properties": {"repobilityId": "d314fb5fcc89c8cf", "scanner": "scanner-primary", "fingerprint": "89ec7e80cfa25e4a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:1302"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d73f2207c6678654", "level": "note", "message": {"text": "Possibly dead Python function: resolve_bookmaker_name"}, "properties": {"repobilityId": "b877f2ca23d6864f", "scanner": "scanner-primary", "fingerprint": "d73f2207c6678654", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:10281"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb81a9451b759554", "level": "note", "message": {"text": "Possibly dead Python function: backfill_historical_odds"}, "properties": {"repobilityId": "deecbbf9406da1d3", "scanner": "scanner-primary", "fingerprint": "eb81a9451b759554", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odds_integration_system.py:536"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c7b95b3f091c8333", "level": "note", "message": {"text": "Possibly dead Python function: predict_poisson_probabilities"}, "properties": {"repobilityId": "cb40600f50a19f0b", "scanner": "scanner-primary", "fingerprint": "c7b95b3f091c8333", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "comprehensive_improvement_system.py:423"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1067cf5cd79b88c9", "level": "note", "message": {"text": "Possibly dead Python function: calibrate_per_league"}, "properties": {"repobilityId": "8c80cbd109ebd870", "scanner": "scanner-primary", "fingerprint": "1067cf5cd79b88c9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "comprehensive_improvement_system.py:455"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f898454f391c894", "level": "error", "message": {"text": "Possible secret in add_match_results_batch.py"}, "properties": {"repobilityId": "c0b07099223d9c98", "scanner": "scanner-primary", "fingerprint": "1f898454f391c894", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "add_match_results_batch.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-d372e9da3f18ac68", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in main_backup_20250731_183736.py:39"}, "properties": {"repobilityId": "27b656dced975adf", "scanner": "scanner-primary", "fingerprint": "d372e9da3f18ac68", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main_backup_20250731_183736.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-22a3bf6cfc8a58ea", "level": "error", "message": {"text": "Possible secret in test_closing_odds_system.sh"}, "properties": {"repobilityId": "610433175026d8a5", "scanner": "scanner-primary", "fingerprint": "22a3bf6cfc8a58ea", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test_closing_odds_system.sh"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-330f02da1af62112", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in main.py:284"}, "properties": {"repobilityId": "7efce937690fb5d6", "scanner": "scanner-primary", "fingerprint": "330f02da1af62112", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-080556db5c7ca868", "level": "error", "message": {"text": "Possible secret in clv_frontend_demo.html"}, "properties": {"repobilityId": "ec5f33f8d90b8b06", "scanner": "scanner-primary", "fingerprint": "080556db5c7ca868", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "clv_frontend_demo.html"}, "region": {"startLine": 383}}}]}, {"ruleId": "scanner-ba9e94ce79228796", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in clv_frontend_demo.html:456"}, "properties": {"repobilityId": "428b7ac9492a69c1", "scanner": "scanner-primary", "fingerprint": "ba9e94ce79228796", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "clv_frontend_demo.html"}, "region": {"startLine": 456}}}]}, {"ruleId": "scanner-9ccac3a27d2fa1bf", "level": "error", "message": {"text": "Possible secret in test_qa_phase2.py"}, "properties": {"repobilityId": "49ec910dac10bbfb", "scanner": "scanner-primary", "fingerprint": "9ccac3a27d2fa1bf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test_qa_phase2.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-ea2e9e5f8b33665b", "level": "error", "message": {"text": "Possible secret in test_enhanced_metrics.sh"}, "properties": {"repobilityId": "b4497ef95eea3039", "scanner": "scanner-primary", "fingerprint": "ea2e9e5f8b33665b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test_enhanced_metrics.sh"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-70da5a26e4856dc0", "level": "note", "message": {"text": "Very large file: main_backup_20250731_183736.py (1279 lines)"}, "properties": {"repobilityId": "4558211b057832bd", "scanner": "scanner-primary", "fingerprint": "70da5a26e4856dc0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cfa54bc7214722a7", "level": "note", "message": {"text": "Very large file: main.py (10375 lines)"}, "properties": {"repobilityId": "d28330f452f23706", "scanner": "scanner-primary", "fingerprint": "cfa54bc7214722a7", "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": "7f5486fdc2cc9e3c", "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": "253abd4caeb0a9c3", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "6cb1c696d94f118b", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "e54a7bd5319a6a53", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "dd2a7bc1f486ed40", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-456cc6b4f74cd229", "level": "note", "message": {"text": "Legacy-named symbol `Clean_PreMatch_v1` in clean_prediction_system.py:269"}, "properties": {"repobilityId": "f1e94ea328f0cb24", "scanner": "scanner-primary", "fingerprint": "456cc6b4f74cd229", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5536d639d0a847c2", "level": "note", "message": {"text": "Legacy-named symbol `odds_accuracy_evaluation_v2` in test_v2_shadow_system.py:50"}, "properties": {"repobilityId": "bc3ca1432079259c", "scanner": "scanner-primary", "fingerprint": "5536d639d0a847c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cab5484c288289ba", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 run_training.py:62"}, "properties": {"repobilityId": "277418450014cd98", "scanner": "scanner-primary", "fingerprint": "cab5484c288289ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46e3e81d8c444d7a", "level": "note", "message": {"text": "Legacy-named symbol `Phase4_Complete_v1` in phase4_complete_implementation.py:384"}, "properties": {"repobilityId": "31e3b148b2c0b04f", "scanner": "scanner-primary", "fingerprint": "46e3e81d8c444d7a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-668aeb629e8222db", "level": "none", "message": {"text": "Commented-code block (5 lines) in consensus_qa.py:50"}, "properties": {"repobilityId": "d5954edcdd2f8dd1", "scanner": "scanner-primary", "fingerprint": "668aeb629e8222db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f53470dc58dcb6c1", "level": "note", "message": {"text": "Legacy-named symbol `Production_Validated_v1` in production_ml_system.py:205"}, "properties": {"repobilityId": "ff3029a5b5be8a4c", "scanner": "scanner-primary", "fingerprint": "f53470dc58dcb6c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-121ebb71930d10cf", "level": "note", "message": {"text": "Legacy-named symbol `TwoStage_Enhanced_v2` in enhanced_two_stage_trainer.py:374"}, "properties": {"repobilityId": "e757e585e79f85fc", "scanner": "scanner-primary", "fingerprint": "121ebb71930d10cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5e69d0094f530787", "level": "note", "message": {"text": "Legacy-named symbol `TwoStage_Quick_v1` in quick_two_stage_test.py:289"}, "properties": {"repobilityId": "e388116e18fa2693", "scanner": "scanner-primary", "fingerprint": "5e69d0094f530787", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2b07213865d4a1ed", "level": "note", "message": {"text": "Legacy-named symbol `prob_old` in populate_match_features.py:60"}, "properties": {"repobilityId": "6d48cb9ef719e45b", "scanner": "scanner-primary", "fingerprint": "2b07213865d4a1ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b7af33009fa2f75f", "level": "note", "message": {"text": "Legacy-named symbol `router_v2` in main.py:249"}, "properties": {"repobilityId": "7df7d977f4627d25", "scanner": "scanner-primary", "fingerprint": "b7af33009fa2f75f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c571c81440ac401c", "level": "none", "message": {"text": "Commented-code block (5 lines) in main.py:2837"}, "properties": {"repobilityId": "fcb3c9baf7daa4a8", "scanner": "scanner-primary", "fingerprint": "c571c81440ac401c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20a86f530b984ade", "level": "note", "message": {"text": "Legacy-named symbol `Phase3_v1` in phase3_calibration_system.py:347"}, "properties": {"repobilityId": "22a4cd72ef0af3ec", "scanner": "scanner-primary", "fingerprint": "20a86f530b984ade", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea0faf335a37f023", "level": "note", "message": {"text": "Legacy-named symbol `generate_enhanced_features_v2` in phase1b_enhanced_training.py:90"}, "properties": {"repobilityId": "9dd0e8cda4112fff", "scanner": "scanner-primary", "fingerprint": "ea0faf335a37f023", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f9c234e5383ad8e", "level": "note", "message": {"text": "Legacy-named symbol `promote_v2` in auto_promote_v2.py:197"}, "properties": {"repobilityId": "d400a8648fa18b95", "scanner": "scanner-primary", "fingerprint": "4f9c234e5383ad8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-af022f937dd5b7fd", "level": "note", "message": {"text": "9 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5597384795dea7a4", "scanner": "scanner-primary", "fingerprint": "af022f937dd5b7fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "8ec89c93709f0a27", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "dd5d7265138ac97c", "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": "29c627c0f40ff3fd", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "80d2be0bdb9988ee", "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": "1829fd450be19569", "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": "0fb1b79511169bca", "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": "83f8542b18ae8ee8", "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": "aae90f132aae9946", "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": "fe37c2bbd10befca", "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": "656fbde59675a265", "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": "ec98eca437b23af5", "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": "a66b4dbaf0fb7898", "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": "27b2d47fe1741e96", "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": "cbe8ecfdab517847", "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": "3c642358adac4ab5", "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": "8b9065ed5fc631fc", "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": "17d4848f61ffa159", "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": "4262b69265c140a1", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "f2ac44f1a9e0c21a", "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": "f1f1e0af9156e62f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}