{"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-838a1c64ca42ac22", "name": "Possibly dead Python function: rescale_symbol_equal_weight", "shortDescription": {"text": "Possibly dead Python function: rescale_symbol_equal_weight"}, "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-e03f2fd0351652c3", "name": "Possibly dead Python function: cap_symbol_pnl_share", "shortDescription": {"text": "Possibly dead Python function: cap_symbol_pnl_share"}, "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-19fcdda1d48e13ff", "name": "Possibly dead Python function: cap_symbol_trade_share", "shortDescription": {"text": "Possibly dead Python function: cap_symbol_trade_share"}, "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-47b4618c6d7e9c1f", "name": "Possibly dead Python function: percentile_last", "shortDescription": {"text": "Possibly dead Python function: percentile_last"}, "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-b46cb2325bcb0e39", "name": "Possibly dead Python function: infer_atr_move", "shortDescription": {"text": "Possibly dead Python function: infer_atr_move"}, "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-2c779be40e11c4c3", "name": "Possibly dead Python function: infer_efficiency", "shortDescription": {"text": "Possibly dead Python function: infer_efficiency"}, "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-cd9778f5825ada90", "name": "Possibly dead Python function: direction_from_proxy", "shortDescription": {"text": "Possibly dead Python function: direction_from_proxy"}, "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-1169ca2d034212e8", "name": "Possibly dead Python function: format_optional", "shortDescription": {"text": "Possibly dead Python function: format_optional"}, "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-4c814fb900262e4f", "name": "Possibly dead Python function: json_default", "shortDescription": {"text": "Possibly dead Python function: json_default"}, "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-8f85077a7edbc573", "name": "Possibly dead Python function: percentile_last", "shortDescription": {"text": "Possibly dead Python function: percentile_last"}, "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-d789f5dd5c7a0f90", "name": "Possibly dead Python function: request_okx_json", "shortDescription": {"text": "Possibly dead Python function: request_okx_json"}, "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-4ea7b5a0f4bbe2be", "name": "Possibly dead Python function: funding_recent_params", "shortDescription": {"text": "Possibly dead Python function: funding_recent_params"}, "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-2dabdde7498b564d", "name": "Possibly dead Python function: funding_coverage_params", "shortDescription": {"text": "Possibly dead Python function: funding_coverage_params"}, "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-100ed1e234954d26", "name": "Possibly dead Python function: open_interest_params", "shortDescription": {"text": "Possibly dead Python function: open_interest_params"}, "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-7d4cc472e3829012", "name": "Possibly dead Python function: mark_price_params", "shortDescription": {"text": "Possibly dead Python function: mark_price_params"}, "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-e7f68fa835367dd5", "name": "Possibly dead Python function: mark_price_history_params", "shortDescription": {"text": "Possibly dead Python function: mark_price_history_params"}, "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-4220df46f0ad57b4", "name": "Possibly dead Python function: mark_price_history_coverage_params", "shortDescription": {"text": "Possibly dead Python function: mark_price_history_coverage_params"}, "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-91a6025d2ee1220e", "name": "Possibly dead Python function: index_ticker_params", "shortDescription": {"text": "Possibly dead Python function: index_ticker_params"}, "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-92c9d2fd34f9ecc5", "name": "Possibly dead Python function: index_history_params", "shortDescription": {"text": "Possibly dead Python function: index_history_params"}, "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-0c590bf4c7b56712", "name": "Possibly dead Python function: index_history_coverage_params", "shortDescription": {"text": "Possibly dead Python function: index_history_coverage_params"}, "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-8cc9b3ba00d87691", "name": "Possibly dead Python function: rubik_stats_params", "shortDescription": {"text": "Possibly dead Python function: rubik_stats_params"}, "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-04b19031c9b05bdc", "name": "Possibly dead Python function: rubik_stats_coverage_params", "shortDescription": {"text": "Possibly dead Python function: rubik_stats_coverage_params"}, "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-bc5cd9e81ce22a04", "name": "Possibly dead Python function: rubik_contract_params", "shortDescription": {"text": "Possibly dead Python function: rubik_contract_params"}, "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-e15e5e718f523101", "name": "Possibly dead Python function: rubik_contract_coverage_params", "shortDescription": {"text": "Possibly dead Python function: rubik_contract_coverage_params"}, "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-15e17bdc113b4445", "name": "Possibly dead Python function: contract_oi_history_params", "shortDescription": {"text": "Possibly dead Python function: contract_oi_history_params"}, "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-f6cd08fa8d1eb4b0", "name": "Analyzer timeout: security.gitleaks", "shortDescription": {"text": "Analyzer timeout: security.gitleaks"}, "fullDescription": {"text": "analyzer exceeded 60.0s wall-clock (thread mode \u2014 daemon abandoned). Bump REPOBILITY_ANALYZER_TIMEOUT_S if expected."}, "properties": {"scanner": "scanner-primary", "layer": "security", "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-0a01b68d7ffda926", "name": "Insecure pattern 'tls_verify_false' in scripts/run_mr_5m_direct.py:722", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in scripts/run_mr_5m_direct.py:722"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "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-4c18fb31b0590991", "name": "Very large file: scripts/research_early_trend_classifier_v1_inverse.py (2843 lines)", "shortDescription": {"text": "Very large file: scripts/research_early_trend_classifier_v1_inverse.py (2843 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-1f3f11de9ded8cf2", "name": "Very large file: scripts/research_trend_health_state_exit.py (1441 lines)", "shortDescription": {"text": "Very large file: scripts/research_trend_health_state_exit.py (1441 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-2116d5a3f8461831", "name": "Very large file: scripts/research_vsvcb_v1.py (2015 lines)", "shortDescription": {"text": "Very large file: scripts/research_vsvcb_v1.py (2015 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-c51d77b9fb532a48", "name": "Very large file: scripts/download_okx_history.py (2461 lines)", "shortDescription": {"text": "Very large file: scripts/download_okx_history.py (2461 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-75ca63b97e2d1e7d", "name": "Very large file: scripts/audit_okx_derivatives_data_readiness.py (1662 lines)", "shortDescription": {"text": "Very large file: scripts/audit_okx_derivatives_data_readiness.py (1662 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-6ccd08f401c5f8f1", "name": "Very large file: scripts/research_external_regime_classifier.py (1374 lines)", "shortDescription": {"text": "Very large file: scripts/research_external_regime_classifier.py (1374 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-7c5cf2a53c17db11", "name": "Very large file: scripts/postmortem_vsvcb_v1.py (1668 lines)", "shortDescription": {"text": "Very large file: scripts/postmortem_vsvcb_v1.py (1668 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-1b7942a51824cd74", "name": "Very large file: scripts/research_trend_following_v2.py (2144 lines)", "shortDescription": {"text": "Very large file: scripts/research_trend_following_v2.py (2144 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-ef1d0712130dfc37", "name": "Very large file: scripts/audit_extended_history_availability.py (1392 lines)", "shortDescription": {"text": "Very large file: scripts/audit_extended_history_availability.py (1392 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-e98f85c050f76bbf", "name": "Very large file: scripts/analyze_trade_attribution.py (1458 lines)", "shortDescription": {"text": "Very large file: scripts/analyze_trade_attribution.py (1458 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-531232ad4f1fd8f4", "name": "Very large file: scripts/research_signal_features.py (1373 lines)", "shortDescription": {"text": "Very large file: scripts/research_signal_features.py (1373 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-f78086b5b6085cfc", "name": "Very large file: scripts/research_csrb_v1.py (2317 lines)", "shortDescription": {"text": "Very large file: scripts/research_csrb_v1.py (2317 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-ee9defea635b4c54", "name": "Very large file: scripts/research_trend_opportunity_map.py (2094 lines)", "shortDescription": {"text": "Very large file: scripts/research_trend_opportunity_map.py (2094 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-d80cdc9a7f568b46", "name": "Very large file: scripts/research_htf_signals.py (1812 lines)", "shortDescription": {"text": "Very large file: scripts/research_htf_signals.py (1812 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-5a9e6e2c4bdbff97", "name": "Very large file: scripts/backtest_okx_mhf.py (1370 lines)", "shortDescription": {"text": "Very large file: scripts/backtest_okx_mhf.py (1370 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-9e0d0c4e37fa20f1", "name": "Very large file: scripts/postmortem_trend_entry_timing.py (1291 lines)", "shortDescription": {"text": "Very large file: scripts/postmortem_trend_entry_timing.py (1291 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-b977338fd3abaac7", "name": "Very large file: scripts/diagnose_trend_regimes.py (1783 lines)", "shortDescription": {"text": "Very large file: scripts/diagnose_trend_regimes.py (1783 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-32db44eacfe17933", "name": "Very large file: scripts/build_research_decision_dossier.py (1374 lines)", "shortDescription": {"text": "Very large file: scripts/build_research_decision_dossier.py (1374 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-ca4103f6da49abd1", "name": "Very large file: scripts/postmortem_csrb_v1.py (1979 lines)", "shortDescription": {"text": "Very large file: scripts/postmortem_csrb_v1.py (1979 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-dad872c8daab2e27", "name": "Very large file: scripts/research_entry_policies.py (1974 lines)", "shortDescription": {"text": "Very large file: scripts/research_entry_policies.py (1974 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-36fe95b6fc980efc", "name": "Very large file: scripts/research_trend_following_v3.py (2517 lines)", "shortDescription": {"text": "Very large file: scripts/research_trend_following_v3.py (2517 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-ec1ffb2c271b134e", "name": "Very large file: scripts/research_early_trend_classifier_v1.py (2840 lines)", "shortDescription": {"text": "Very large file: scripts/research_early_trend_classifier_v1.py (2840 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-e34f5d711129be3b", "name": "Very large file: scripts/research_trend_capture_exit_convexity.py (2036 lines)", "shortDescription": {"text": "Very large file: scripts/research_trend_capture_exit_convexity.py (2036 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-d885f1a9a6732aaf", "name": "Very large file: scripts/research_trend_entry_timing.py (1595 lines)", "shortDescription": {"text": "Very large file: scripts/research_trend_entry_timing.py (1595 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-af32e49f2374f9c2", "name": "Very large file: scripts/postmortem_trend_following_v3.py (1333 lines)", "shortDescription": {"text": "Very large file: scripts/postmortem_trend_following_v3.py (1333 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-31e6e047d12bae38", "name": "Very large file: scripts/run_mr_5m_direct.py (1269 lines)", "shortDescription": {"text": "Very large file: scripts/run_mr_5m_direct.py (1269 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-b1aea6e806d2d8e4", "name": "Very large file: strategies/okx_adaptive_mhf_strategy.py (1719 lines)", "shortDescription": {"text": "Very large file: strategies/okx_adaptive_mhf_strategy.py (1719 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-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 813 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1ffa6c6f15e6ab8", "name": "Legacy-named symbol `research_csrb_v1` in tests/test_research_csrb_v1.py:19", "shortDescription": {"text": "Legacy-named symbol `research_csrb_v1` in tests/test_research_csrb_v1.py:19"}, "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-f14d96cb8f56b22a", "name": "Legacy-named symbol `compare_trend_following_v2` in tests/test_compare_trend_following_v2.py:16", "shortDescription": {"text": "Legacy-named symbol `compare_trend_following_v2` in tests/test_compare_trend_following_v2.py:16"}, "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-7c29f34af612f297", "name": "Legacy-named symbol `postmortem_vsvcb_v1` in tests/test_postmortem_vsvcb_v1.py:17", "shortDescription": {"text": "Legacy-named symbol `postmortem_vsvcb_v1` in tests/test_postmortem_vsvcb_v1.py:17"}, "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-9944e68108c8d717", "name": "Legacy-named symbol `csv_copy` in tests/test_history_download_resilience.py:67", "shortDescription": {"text": "Legacy-named symbol `csv_copy` in tests/test_history_download_resilience.py:67"}, "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-1661b4d1e0cb681b", "name": "Legacy-named symbol `research_vsvcb_v1` in tests/test_research_vsvcb_v1.py:19", "shortDescription": {"text": "Legacy-named symbol `research_vsvcb_v1` in tests/test_research_vsvcb_v1.py:19"}, "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-19af74406775aac6", "name": "Legacy-named symbol `research_trend_following_v2` in tests/test_research_trend_following_v2.py:17", "shortDescription": {"text": "Legacy-named symbol `research_trend_following_v2` in tests/test_research_trend_following_v2.py:17"}, "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-250c7123021942ca", "name": "Legacy-named symbol `research_early_trend_classifier_v1` in tests/test_research_early_trend_classifier_v1.py:16", "shortDescription": {"text": "Legacy-named symbol `research_early_trend_classifier_v1` in tests/test_research_early_trend_classifier_v1.py:16"}, "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-71db36c2b651293f", "name": "Legacy-named symbol `postmortem_csrb_v1` in tests/test_postmortem_csrb_v1.py:17", "shortDescription": {"text": "Legacy-named symbol `postmortem_csrb_v1` in tests/test_postmortem_csrb_v1.py:17"}, "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-c6c039807df76678", "name": "Legacy-named symbol `gate_v2` in scripts/research_trend_dualcycle.py:457", "shortDescription": {"text": "Legacy-named symbol `gate_v2` in scripts/research_trend_dualcycle.py:457"}, "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-801d780307a8d99a", "name": "Commented-code block (5 lines) in scripts/research_trend_dualcycle.py:492", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/research_trend_dualcycle.py:492"}, "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-4b83b73d0717dee7", "name": "Legacy-named symbol `research_early_trend_classifier_v1` in scripts/research_early_trend_classifier_v1_inverse.py:2807", "shortDescription": {"text": "Legacy-named symbol `research_early_trend_classifier_v1` in scripts/research_early_trend_classifier_v1_inverse.py:2807"}, "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-2b8eccb6ea08a806", "name": "Legacy-named symbol `dyn_v2` in scripts/research_portfolio_risk_phase_2a.py:11", "shortDescription": {"text": "Legacy-named symbol `dyn_v2` in scripts/research_portfolio_risk_phase_2a.py:11"}, "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-423b40396067fe66", "name": "Legacy-named symbol `research_trend_following_v2` in scripts/audit_multisymbol_readiness.py:421", "shortDescription": {"text": "Legacy-named symbol `research_trend_following_v2` in scripts/audit_multisymbol_readiness.py:421"}, "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-47dbc61b83ac9a27", "name": "Legacy-named symbol `vsvcb_v1` in scripts/research_vsvcb_v1.py:34", "shortDescription": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/research_vsvcb_v1.py:34"}, "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-54cbb18b886c15c4", "name": "Legacy-named symbol `bars_copy` in scripts/download_okx_history.py:1546", "shortDescription": {"text": "Legacy-named symbol `bars_copy` in scripts/download_okx_history.py:1546"}, "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-2a3e72cf0dc997d4", "name": "Legacy-named symbol `vsvcb_v1` in scripts/postmortem_vsvcb_v1.py:20", "shortDescription": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/postmortem_vsvcb_v1.py:20"}, "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-d4ce75669e8dd6ba", "name": "Legacy-named symbol `trend_following_v2` in scripts/research_trend_following_v2.py:181", "shortDescription": {"text": "Legacy-named symbol `trend_following_v2` in scripts/research_trend_following_v2.py:181"}, "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-afbe43d077c88461", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/run_alpha_sweep.py:234", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_alpha_sweep.py:234"}, "fullDescription": {"text": "`subprocess.run(...)` 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-3dd2a6c5b239f9b3", "name": "Legacy-named symbol `gate_v2` in scripts/research_trend_validation_r2.py:286", "shortDescription": {"text": "Legacy-named symbol `gate_v2` in scripts/research_trend_validation_r2.py:286"}, "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-682538fd0287c2cc", "name": "Legacy-named symbol `dyn_v2` in scripts/research_mr5m_mainnet_baseline.py:39", "shortDescription": {"text": "Legacy-named symbol `dyn_v2` in scripts/research_mr5m_mainnet_baseline.py:39"}, "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-29f975c575e1273c", "name": "Legacy-named symbol `research_dyn_v2` in scripts/research_dyn_v2b_size_cap_v1.py:18", "shortDescription": {"text": "Legacy-named symbol `research_dyn_v2` in scripts/research_dyn_v2b_size_cap_v1.py:18"}, "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-d1f82e54c3fac4a6", "name": "Legacy-named symbol `trend_following_v2` in scripts/compare_trend_following_v2.py:34", "shortDescription": {"text": "Legacy-named symbol `trend_following_v2` in scripts/compare_trend_following_v2.py:34"}, "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-e992e19ea33d6de6", "name": "Legacy-named symbol `gate_v1` in scripts/research_trend_validation.py:95", "shortDescription": {"text": "Legacy-named symbol `gate_v1` in scripts/research_trend_validation.py:95"}, "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-ccd2665a38caf991", "name": "Legacy-named symbol `csrb_v1` in scripts/research_csrb_v1.py:38", "shortDescription": {"text": "Legacy-named symbol `csrb_v1` in scripts/research_csrb_v1.py:38"}, "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-dfdc9a79af36f239", "name": "Legacy-named symbol `vsvcb_v1` in scripts/research_trend_opportunity_map.py:59", "shortDescription": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/research_trend_opportunity_map.py:59"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efeb19224bd3eeee", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ablation_experiments.py:284", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ablation_experiments.py:284"}, "fullDescription": {"text": "`subprocess.run(...)` 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-7d740a5b056fe18c", "name": "Legacy-named symbol `backtest_mr_5m_v2` in scripts/research_atr_filter_oos.py:8", "shortDescription": {"text": "Legacy-named symbol `backtest_mr_5m_v2` in scripts/research_atr_filter_oos.py:8"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cb88cf87704513d", "name": "Legacy-named symbol `research_dyn_v2` in scripts/research_v2b_dd_diagnosis.py:5", "shortDescription": {"text": "Legacy-named symbol `research_dyn_v2` in scripts/research_v2b_dd_diagnosis.py:5"}, "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-dbc2cbb6ea1b14b3", "name": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 scripts/mr_v1_strategy.py:294", "shortDescription": {"text": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 scripts/mr_v1_strategy.py:294"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c22d7e9fd0fefe3", "name": "Legacy-named symbol `research_trend_following_v2` in scripts/diagnose_trend_regimes.py:23", "shortDescription": {"text": "Legacy-named symbol `research_trend_following_v2` in scripts/diagnose_trend_regimes.py:23"}, "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-bb747e4bfa08384e", "name": "Commented-code block (5 lines) in scripts/research_funding_trust_check.py:179", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/research_funding_trust_check.py:179"}, "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-c33cb509f86e3c6f", "name": "Legacy-named symbol `csrb_v1` in scripts/postmortem_csrb_v1.py:20", "shortDescription": {"text": "Legacy-named symbol `csrb_v1` in scripts/postmortem_csrb_v1.py:20"}, "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-b20a08ffcd6da9b9", "name": "Legacy-named symbol `diff_vs_legacy` in scripts/download_mainnet_history.py:236", "shortDescription": {"text": "Legacy-named symbol `diff_vs_legacy` in scripts/download_mainnet_history.py:236"}, "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-38e52f4753350e13", "name": "Legacy-named symbol `research_trend_following_v2` in scripts/research_trend_following_v3.py:22", "shortDescription": {"text": "Legacy-named symbol `research_trend_following_v2` in scripts/research_trend_following_v3.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-5f5eb8b55329eacd", "name": "Legacy-named symbol `early_trend_classifier_v1` in scripts/research_early_trend_classifier_v1.py:45", "shortDescription": {"text": "Legacy-named symbol `early_trend_classifier_v1` in scripts/research_early_trend_classifier_v1.py:45"}, "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-ae34c102fe321d05", "name": "Legacy-named symbol `vsvcb_v1` in scripts/research_trend_capture_exit_convexity.py:24", "shortDescription": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/research_trend_capture_exit_convexity.py:24"}, "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-e50e500900118cd7", "name": "Legacy-named symbol `mr_v1` in scripts/research_mr_v1.py:44", "shortDescription": {"text": "Legacy-named symbol `mr_v1` in scripts/research_mr_v1.py:44"}, "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-c32cf5f1e5d4fd03", "name": "Legacy-named symbol `research_only_trend_entry_timing_v1` in scripts/research_trend_entry_timing.py:1237", "shortDescription": {"text": "Legacy-named symbol `research_only_trend_entry_timing_v1` in scripts/research_trend_entry_timing.py:1237"}, "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-9478166b31ff446f", "name": "Commented-code block (5 lines) in scripts/run_mr_5m_direct.py:1008", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/run_mr_5m_direct.py:1008"}, "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-f880bf640b48e634", "name": "Legacy-named symbol `backtest_mr_v1` in scripts/research_mr_v1_chandelier.py:64", "shortDescription": {"text": "Legacy-named symbol `backtest_mr_v1` in scripts/research_mr_v1_chandelier.py:64"}, "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-0300872bea533c19", "name": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 strategies/mr_v1_strategy.py:425", "shortDescription": {"text": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 strategies/mr_v1_strategy.py:425"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-edda97c982496137", "name": "Commented-code block (5 lines) in strategies/mr_5m_strategy.py:176", "shortDescription": {"text": "Commented-code block (5 lines) in strategies/mr_5m_strategy.py:176"}, "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-679a3994a2a69280", "name": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 strategies/mr_5m_strategy.py:404", "shortDescription": {"text": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 strategies/mr_5m_strategy.py:404"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b5a76780c3df9aa", "name": "1 env vars used in code but missing from .env.example", "shortDescription": {"text": "1 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `PUSHPLUS_TOKEN`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "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:\nscripts/backtest_mr_5m_breaker.py:allow_entry, scripts/backtest_mr_5m_breaker.py:allow_entry, scripts/backtest_mr_5m_breaker.py:allow_entry, scripts/backtest_mr_5m_breaker.py:allow_entry\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/audit_external_regime_classifier_feasibility.py:resolve_path, scripts/verify_okx_funding_history.py:resolve_path, scripts/audit_okx_derivatives_data_readiness.py:resolve_path, scripts/import_okx_funding_csv.py:resolve_path\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:\nscripts/audit_external_regime_classifier_feasibility.py:vt_symbol_to_okx_inst_id, scripts/research_external_regime_classifier.py:vt_symbol_to_okx_inst_id\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:\nscripts/audit_external_regime_classifier_feasibility.py:build_payload, scripts/audit_external_regime_classifier_feasibility.py:run_audit, scripts/research_external_regime_classifier.py:run_research, scripts/research_trend_opportunity_map.py:run_research\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:\nscripts/research_early_trend_classifier_v1_inverse.py:symbol_to_inst_id, scripts/research_csrb_v1.py:symbol_to_inst_id, scripts/research_early_trend_classifier_v1.py:symbol_to_inst_id\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/research_early_trend_classifier_v1_inverse.py:finite_float, scripts/research_vsvcb_v1.py:finite_float, scripts/postmortem_vsvcb_v1.py:finite_number, scripts/research_csrb_v1.py:finite_float\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/23270"}, "properties": {"repository": "yifanfengsu/CTA", "repoUrl": "https://github.com/yifanfengsu/CTA", "branch": "main"}, "results": [{"ruleId": "scanner-838a1c64ca42ac22", "level": "note", "message": {"text": "Possibly dead Python function: rescale_symbol_equal_weight"}, "properties": {"repobilityId": "d4ed41c9db5af940", "scanner": "scanner-primary", "fingerprint": "838a1c64ca42ac22", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_cross_symbol_breadth_phase15.py:431"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e03f2fd0351652c3", "level": "note", "message": {"text": "Possibly dead Python function: cap_symbol_pnl_share"}, "properties": {"repobilityId": "6d633971a3f2156a", "scanner": "scanner-primary", "fingerprint": "e03f2fd0351652c3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_cross_symbol_breadth_phase15.py:446"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-19fcdda1d48e13ff", "level": "note", "message": {"text": "Possibly dead Python function: cap_symbol_trade_share"}, "properties": {"repobilityId": "0399c3f0d9cc0cfa", "scanner": "scanner-primary", "fingerprint": "19fcdda1d48e13ff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_cross_symbol_breadth_phase15.py:472"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47b4618c6d7e9c1f", "level": "note", "message": {"text": "Possibly dead Python function: percentile_last"}, "properties": {"repobilityId": "e11afa311a051267", "scanner": "scanner-primary", "fingerprint": "47b4618c6d7e9c1f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_early_trend_classifier_v1_inverse.py:753"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b46cb2325bcb0e39", "level": "note", "message": {"text": "Possibly dead Python function: infer_atr_move"}, "properties": {"repobilityId": "5c2c0fb7158b8846", "scanner": "scanner-primary", "fingerprint": "b46cb2325bcb0e39", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_early_trend_classifier_v1_inverse.py:1026"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c779be40e11c4c3", "level": "note", "message": {"text": "Possibly dead Python function: infer_efficiency"}, "properties": {"repobilityId": "de2c6f6aa6fa87e8", "scanner": "scanner-primary", "fingerprint": "2c779be40e11c4c3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_early_trend_classifier_v1_inverse.py:1035"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd9778f5825ada90", "level": "note", "message": {"text": "Possibly dead Python function: direction_from_proxy"}, "properties": {"repobilityId": "74bb6cd05e9815b7", "scanner": "scanner-primary", "fingerprint": "cd9778f5825ada90", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_early_trend_classifier_v1_inverse.py:1190"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1169ca2d034212e8", "level": "note", "message": {"text": "Possibly dead Python function: format_optional"}, "properties": {"repobilityId": "a2d90ea49eb532c7", "scanner": "scanner-primary", "fingerprint": "1169ca2d034212e8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify_okx_funding_history.py:318"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4c814fb900262e4f", "level": "note", "message": {"text": "Possibly dead Python function: json_default"}, "properties": {"repobilityId": "f3f373cafaaf9320", "scanner": "scanner-primary", "fingerprint": "4c814fb900262e4f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_multisymbol_readiness.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f85077a7edbc573", "level": "note", "message": {"text": "Possibly dead Python function: percentile_last"}, "properties": {"repobilityId": "e11afa311a051267", "scanner": "scanner-primary", "fingerprint": "8f85077a7edbc573", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/research_vsvcb_v1.py:489"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d789f5dd5c7a0f90", "level": "note", "message": {"text": "Possibly dead Python function: request_okx_json"}, "properties": {"repobilityId": "830cda0f1684d033", "scanner": "scanner-primary", "fingerprint": "d789f5dd5c7a0f90", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:242"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ea7b5a0f4bbe2be", "level": "note", "message": {"text": "Possibly dead Python function: funding_recent_params"}, "properties": {"repobilityId": "9192de9ce2c1b233", "scanner": "scanner-primary", "fingerprint": "4ea7b5a0f4bbe2be", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:271"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2dabdde7498b564d", "level": "note", "message": {"text": "Possibly dead Python function: funding_coverage_params"}, "properties": {"repobilityId": "ccbb627d3a4f1f29", "scanner": "scanner-primary", "fingerprint": "2dabdde7498b564d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:281"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-100ed1e234954d26", "level": "note", "message": {"text": "Possibly dead Python function: open_interest_params"}, "properties": {"repobilityId": "105632ada80f7b37", "scanner": "scanner-primary", "fingerprint": "100ed1e234954d26", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:291"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7d4cc472e3829012", "level": "note", "message": {"text": "Possibly dead Python function: mark_price_params"}, "properties": {"repobilityId": "24ddc9d49bd803a0", "scanner": "scanner-primary", "fingerprint": "7d4cc472e3829012", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:297"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7f68fa835367dd5", "level": "note", "message": {"text": "Possibly dead Python function: mark_price_history_params"}, "properties": {"repobilityId": "c06c9d15ed3d3529", "scanner": "scanner-primary", "fingerprint": "e7f68fa835367dd5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:303"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4220df46f0ad57b4", "level": "note", "message": {"text": "Possibly dead Python function: mark_price_history_coverage_params"}, "properties": {"repobilityId": "0a9b844f61bccd54", "scanner": "scanner-primary", "fingerprint": "4220df46f0ad57b4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:314"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91a6025d2ee1220e", "level": "note", "message": {"text": "Possibly dead Python function: index_ticker_params"}, "properties": {"repobilityId": "8e966c969becd253", "scanner": "scanner-primary", "fingerprint": "91a6025d2ee1220e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:332"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92c9d2fd34f9ecc5", "level": "note", "message": {"text": "Possibly dead Python function: index_history_params"}, "properties": {"repobilityId": "048665c6309c8758", "scanner": "scanner-primary", "fingerprint": "92c9d2fd34f9ecc5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:338"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c590bf4c7b56712", "level": "note", "message": {"text": "Possibly dead Python function: index_history_coverage_params"}, "properties": {"repobilityId": "6cdcbe088b0205c6", "scanner": "scanner-primary", "fingerprint": "0c590bf4c7b56712", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:349"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8cc9b3ba00d87691", "level": "note", "message": {"text": "Possibly dead Python function: rubik_stats_params"}, "properties": {"repobilityId": "9865edec5bb6e45e", "scanner": "scanner-primary", "fingerprint": "8cc9b3ba00d87691", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:367"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04b19031c9b05bdc", "level": "note", "message": {"text": "Possibly dead Python function: rubik_stats_coverage_params"}, "properties": {"repobilityId": "12ec46dcb3712388", "scanner": "scanner-primary", "fingerprint": "04b19031c9b05bdc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:374"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc5cd9e81ce22a04", "level": "note", "message": {"text": "Possibly dead Python function: rubik_contract_params"}, "properties": {"repobilityId": "cfdd15047da7bad2", "scanner": "scanner-primary", "fingerprint": "bc5cd9e81ce22a04", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:381"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e15e5e718f523101", "level": "note", "message": {"text": "Possibly dead Python function: rubik_contract_coverage_params"}, "properties": {"repobilityId": "6e553e548f557852", "scanner": "scanner-primary", "fingerprint": "e15e5e718f523101", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:388"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-15e17bdc113b4445", "level": "note", "message": {"text": "Possibly dead Python function: contract_oi_history_params"}, "properties": {"repobilityId": "a02d5ba70e7da37f", "scanner": "scanner-primary", "fingerprint": "15e17bdc113b4445", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit_okx_derivatives_data_readiness.py:395"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6cd08fa8d1eb4b0", "level": "warning", "message": {"text": "Analyzer timeout: security.gitleaks"}, "properties": {"repobilityId": "err::timeout::security.gitleaks", "scanner": "scanner-primary", "fingerprint": "f6cd08fa8d1eb4b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["analyzer-error", "timeout"]}}, {"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-0a01b68d7ffda926", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in scripts/run_mr_5m_direct.py:722"}, "properties": {"repobilityId": "df5729f22e249d44", "scanner": "scanner-primary", "fingerprint": "0a01b68d7ffda926", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run_mr_5m_direct.py"}, "region": {"startLine": 722}}}]}, {"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-4c18fb31b0590991", "level": "note", "message": {"text": "Very large file: scripts/research_early_trend_classifier_v1_inverse.py (2843 lines)"}, "properties": {"repobilityId": "ca5c96356adb6001", "scanner": "scanner-primary", "fingerprint": "4c18fb31b0590991", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f3f11de9ded8cf2", "level": "note", "message": {"text": "Very large file: scripts/research_trend_health_state_exit.py (1441 lines)"}, "properties": {"repobilityId": "e744ba01ab82c437", "scanner": "scanner-primary", "fingerprint": "1f3f11de9ded8cf2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2116d5a3f8461831", "level": "note", "message": {"text": "Very large file: scripts/research_vsvcb_v1.py (2015 lines)"}, "properties": {"repobilityId": "320efe0e6fb1205a", "scanner": "scanner-primary", "fingerprint": "2116d5a3f8461831", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c51d77b9fb532a48", "level": "note", "message": {"text": "Very large file: scripts/download_okx_history.py (2461 lines)"}, "properties": {"repobilityId": "17c41ceddd378318", "scanner": "scanner-primary", "fingerprint": "c51d77b9fb532a48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-75ca63b97e2d1e7d", "level": "note", "message": {"text": "Very large file: scripts/audit_okx_derivatives_data_readiness.py (1662 lines)"}, "properties": {"repobilityId": "e0f884b4ebb6d6b5", "scanner": "scanner-primary", "fingerprint": "75ca63b97e2d1e7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ccd08f401c5f8f1", "level": "note", "message": {"text": "Very large file: scripts/research_external_regime_classifier.py (1374 lines)"}, "properties": {"repobilityId": "6b215a0f36fb2bf7", "scanner": "scanner-primary", "fingerprint": "6ccd08f401c5f8f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7c5cf2a53c17db11", "level": "note", "message": {"text": "Very large file: scripts/postmortem_vsvcb_v1.py (1668 lines)"}, "properties": {"repobilityId": "e3affdbfdada42ef", "scanner": "scanner-primary", "fingerprint": "7c5cf2a53c17db11", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1b7942a51824cd74", "level": "note", "message": {"text": "Very large file: scripts/research_trend_following_v2.py (2144 lines)"}, "properties": {"repobilityId": "66ffec4f30be0c87", "scanner": "scanner-primary", "fingerprint": "1b7942a51824cd74", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef1d0712130dfc37", "level": "note", "message": {"text": "Very large file: scripts/audit_extended_history_availability.py (1392 lines)"}, "properties": {"repobilityId": "f3c63899a4579ec1", "scanner": "scanner-primary", "fingerprint": "ef1d0712130dfc37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e98f85c050f76bbf", "level": "note", "message": {"text": "Very large file: scripts/analyze_trade_attribution.py (1458 lines)"}, "properties": {"repobilityId": "43efb9d78d670c05", "scanner": "scanner-primary", "fingerprint": "e98f85c050f76bbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-531232ad4f1fd8f4", "level": "note", "message": {"text": "Very large file: scripts/research_signal_features.py (1373 lines)"}, "properties": {"repobilityId": "b274e8d909b3d24e", "scanner": "scanner-primary", "fingerprint": "531232ad4f1fd8f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f78086b5b6085cfc", "level": "note", "message": {"text": "Very large file: scripts/research_csrb_v1.py (2317 lines)"}, "properties": {"repobilityId": "efaeeeeb5a979bf0", "scanner": "scanner-primary", "fingerprint": "f78086b5b6085cfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee9defea635b4c54", "level": "note", "message": {"text": "Very large file: scripts/research_trend_opportunity_map.py (2094 lines)"}, "properties": {"repobilityId": "52143d1c3bb112aa", "scanner": "scanner-primary", "fingerprint": "ee9defea635b4c54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d80cdc9a7f568b46", "level": "note", "message": {"text": "Very large file: scripts/research_htf_signals.py (1812 lines)"}, "properties": {"repobilityId": "2f4d7e91085d257e", "scanner": "scanner-primary", "fingerprint": "d80cdc9a7f568b46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5a9e6e2c4bdbff97", "level": "note", "message": {"text": "Very large file: scripts/backtest_okx_mhf.py (1370 lines)"}, "properties": {"repobilityId": "72016ab0ea7871ef", "scanner": "scanner-primary", "fingerprint": "5a9e6e2c4bdbff97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e0d0c4e37fa20f1", "level": "note", "message": {"text": "Very large file: scripts/postmortem_trend_entry_timing.py (1291 lines)"}, "properties": {"repobilityId": "c12a0208d2cfdd52", "scanner": "scanner-primary", "fingerprint": "9e0d0c4e37fa20f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b977338fd3abaac7", "level": "note", "message": {"text": "Very large file: scripts/diagnose_trend_regimes.py (1783 lines)"}, "properties": {"repobilityId": "ed63d1ce19265232", "scanner": "scanner-primary", "fingerprint": "b977338fd3abaac7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-32db44eacfe17933", "level": "note", "message": {"text": "Very large file: scripts/build_research_decision_dossier.py (1374 lines)"}, "properties": {"repobilityId": "b5b392b748dc590f", "scanner": "scanner-primary", "fingerprint": "32db44eacfe17933", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ca4103f6da49abd1", "level": "note", "message": {"text": "Very large file: scripts/postmortem_csrb_v1.py (1979 lines)"}, "properties": {"repobilityId": "ce83d88cbdb4b9f6", "scanner": "scanner-primary", "fingerprint": "ca4103f6da49abd1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dad872c8daab2e27", "level": "note", "message": {"text": "Very large file: scripts/research_entry_policies.py (1974 lines)"}, "properties": {"repobilityId": "3855f107f710f873", "scanner": "scanner-primary", "fingerprint": "dad872c8daab2e27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-36fe95b6fc980efc", "level": "note", "message": {"text": "Very large file: scripts/research_trend_following_v3.py (2517 lines)"}, "properties": {"repobilityId": "218a3e802c343d11", "scanner": "scanner-primary", "fingerprint": "36fe95b6fc980efc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec1ffb2c271b134e", "level": "note", "message": {"text": "Very large file: scripts/research_early_trend_classifier_v1.py (2840 lines)"}, "properties": {"repobilityId": "9beeaa8049cd5d96", "scanner": "scanner-primary", "fingerprint": "ec1ffb2c271b134e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e34f5d711129be3b", "level": "note", "message": {"text": "Very large file: scripts/research_trend_capture_exit_convexity.py (2036 lines)"}, "properties": {"repobilityId": "b97c64fd3fd5afaf", "scanner": "scanner-primary", "fingerprint": "e34f5d711129be3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d885f1a9a6732aaf", "level": "note", "message": {"text": "Very large file: scripts/research_trend_entry_timing.py (1595 lines)"}, "properties": {"repobilityId": "c1c4ad89abd8b5a0", "scanner": "scanner-primary", "fingerprint": "d885f1a9a6732aaf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-af32e49f2374f9c2", "level": "note", "message": {"text": "Very large file: scripts/postmortem_trend_following_v3.py (1333 lines)"}, "properties": {"repobilityId": "93aba82bb32eb1f3", "scanner": "scanner-primary", "fingerprint": "af32e49f2374f9c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-31e6e047d12bae38", "level": "note", "message": {"text": "Very large file: scripts/run_mr_5m_direct.py (1269 lines)"}, "properties": {"repobilityId": "eac346aa39d3f960", "scanner": "scanner-primary", "fingerprint": "31e6e047d12bae38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1aea6e806d2d8e4", "level": "note", "message": {"text": "Very large file: strategies/okx_adaptive_mhf_strategy.py (1719 lines)"}, "properties": {"repobilityId": "19f2a8add0b92361", "scanner": "scanner-primary", "fingerprint": "b1aea6e806d2d8e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "5fa12fad507a4a2c", "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": "dd4d2bc8b4836c78", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "cf05bc1d7859964e", "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": "48b359f7130d6b71", "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": "bd093f4bcd4c03a5", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "03d90338cd9060d6", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "3f3c3f832d51383d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-a1ffa6c6f15e6ab8", "level": "note", "message": {"text": "Legacy-named symbol `research_csrb_v1` in tests/test_research_csrb_v1.py:19"}, "properties": {"repobilityId": "8707e30f5cc89cd2", "scanner": "scanner-primary", "fingerprint": "a1ffa6c6f15e6ab8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f14d96cb8f56b22a", "level": "note", "message": {"text": "Legacy-named symbol `compare_trend_following_v2` in tests/test_compare_trend_following_v2.py:16"}, "properties": {"repobilityId": "f024c44d2e21420b", "scanner": "scanner-primary", "fingerprint": "f14d96cb8f56b22a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7c29f34af612f297", "level": "note", "message": {"text": "Legacy-named symbol `postmortem_vsvcb_v1` in tests/test_postmortem_vsvcb_v1.py:17"}, "properties": {"repobilityId": "9558ca9988d724bf", "scanner": "scanner-primary", "fingerprint": "7c29f34af612f297", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9944e68108c8d717", "level": "note", "message": {"text": "Legacy-named symbol `csv_copy` in tests/test_history_download_resilience.py:67"}, "properties": {"repobilityId": "38e6bf49994d2fd1", "scanner": "scanner-primary", "fingerprint": "9944e68108c8d717", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1661b4d1e0cb681b", "level": "note", "message": {"text": "Legacy-named symbol `research_vsvcb_v1` in tests/test_research_vsvcb_v1.py:19"}, "properties": {"repobilityId": "9f4fbf327da17a5b", "scanner": "scanner-primary", "fingerprint": "1661b4d1e0cb681b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-19af74406775aac6", "level": "note", "message": {"text": "Legacy-named symbol `research_trend_following_v2` in tests/test_research_trend_following_v2.py:17"}, "properties": {"repobilityId": "7f9519bf0dda291c", "scanner": "scanner-primary", "fingerprint": "19af74406775aac6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-250c7123021942ca", "level": "note", "message": {"text": "Legacy-named symbol `research_early_trend_classifier_v1` in tests/test_research_early_trend_classifier_v1.py:16"}, "properties": {"repobilityId": "5c2512d322abc10a", "scanner": "scanner-primary", "fingerprint": "250c7123021942ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-71db36c2b651293f", "level": "note", "message": {"text": "Legacy-named symbol `postmortem_csrb_v1` in tests/test_postmortem_csrb_v1.py:17"}, "properties": {"repobilityId": "020ebccedf873205", "scanner": "scanner-primary", "fingerprint": "71db36c2b651293f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c6c039807df76678", "level": "note", "message": {"text": "Legacy-named symbol `gate_v2` in scripts/research_trend_dualcycle.py:457"}, "properties": {"repobilityId": "5368b1a8743f24e9", "scanner": "scanner-primary", "fingerprint": "c6c039807df76678", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-801d780307a8d99a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/research_trend_dualcycle.py:492"}, "properties": {"repobilityId": "38a8b45d614fddc9", "scanner": "scanner-primary", "fingerprint": "801d780307a8d99a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b83b73d0717dee7", "level": "note", "message": {"text": "Legacy-named symbol `research_early_trend_classifier_v1` in scripts/research_early_trend_classifier_v1_inverse.py:2807"}, "properties": {"repobilityId": "e5500cb88cdce227", "scanner": "scanner-primary", "fingerprint": "4b83b73d0717dee7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2b8eccb6ea08a806", "level": "note", "message": {"text": "Legacy-named symbol `dyn_v2` in scripts/research_portfolio_risk_phase_2a.py:11"}, "properties": {"repobilityId": "ed9fb4c04c3f2822", "scanner": "scanner-primary", "fingerprint": "2b8eccb6ea08a806", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-423b40396067fe66", "level": "note", "message": {"text": "Legacy-named symbol `research_trend_following_v2` in scripts/audit_multisymbol_readiness.py:421"}, "properties": {"repobilityId": "bfa286457dac8d22", "scanner": "scanner-primary", "fingerprint": "423b40396067fe66", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-47dbc61b83ac9a27", "level": "note", "message": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/research_vsvcb_v1.py:34"}, "properties": {"repobilityId": "288fe9613373a447", "scanner": "scanner-primary", "fingerprint": "47dbc61b83ac9a27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-54cbb18b886c15c4", "level": "note", "message": {"text": "Legacy-named symbol `bars_copy` in scripts/download_okx_history.py:1546"}, "properties": {"repobilityId": "0fd98082c3bc03eb", "scanner": "scanner-primary", "fingerprint": "54cbb18b886c15c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2a3e72cf0dc997d4", "level": "note", "message": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/postmortem_vsvcb_v1.py:20"}, "properties": {"repobilityId": "589ac3bfd4e0176f", "scanner": "scanner-primary", "fingerprint": "2a3e72cf0dc997d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4ce75669e8dd6ba", "level": "note", "message": {"text": "Legacy-named symbol `trend_following_v2` in scripts/research_trend_following_v2.py:181"}, "properties": {"repobilityId": "f1bcb3d6755bea6c", "scanner": "scanner-primary", "fingerprint": "d4ce75669e8dd6ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-afbe43d077c88461", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_alpha_sweep.py:234"}, "properties": {"repobilityId": "1ce6bad4d5e187a0", "scanner": "scanner-primary", "fingerprint": "afbe43d077c88461", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3dd2a6c5b239f9b3", "level": "note", "message": {"text": "Legacy-named symbol `gate_v2` in scripts/research_trend_validation_r2.py:286"}, "properties": {"repobilityId": "c67725bdaa361730", "scanner": "scanner-primary", "fingerprint": "3dd2a6c5b239f9b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-682538fd0287c2cc", "level": "note", "message": {"text": "Legacy-named symbol `dyn_v2` in scripts/research_mr5m_mainnet_baseline.py:39"}, "properties": {"repobilityId": "1f81d3c4467409c1", "scanner": "scanner-primary", "fingerprint": "682538fd0287c2cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-29f975c575e1273c", "level": "note", "message": {"text": "Legacy-named symbol `research_dyn_v2` in scripts/research_dyn_v2b_size_cap_v1.py:18"}, "properties": {"repobilityId": "abb7d25ee631da90", "scanner": "scanner-primary", "fingerprint": "29f975c575e1273c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d1f82e54c3fac4a6", "level": "note", "message": {"text": "Legacy-named symbol `trend_following_v2` in scripts/compare_trend_following_v2.py:34"}, "properties": {"repobilityId": "33e01dd8c70ce6a5", "scanner": "scanner-primary", "fingerprint": "d1f82e54c3fac4a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e992e19ea33d6de6", "level": "note", "message": {"text": "Legacy-named symbol `gate_v1` in scripts/research_trend_validation.py:95"}, "properties": {"repobilityId": "72021ff191bd46a8", "scanner": "scanner-primary", "fingerprint": "e992e19ea33d6de6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ccd2665a38caf991", "level": "note", "message": {"text": "Legacy-named symbol `csrb_v1` in scripts/research_csrb_v1.py:38"}, "properties": {"repobilityId": "4c7cc8113dfc1fae", "scanner": "scanner-primary", "fingerprint": "ccd2665a38caf991", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dfdc9a79af36f239", "level": "note", "message": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/research_trend_opportunity_map.py:59"}, "properties": {"repobilityId": "4d05b9b85dc985bb", "scanner": "scanner-primary", "fingerprint": "dfdc9a79af36f239", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-efeb19224bd3eeee", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run_ablation_experiments.py:284"}, "properties": {"repobilityId": "b62e7df68d4df559", "scanner": "scanner-primary", "fingerprint": "efeb19224bd3eeee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d740a5b056fe18c", "level": "note", "message": {"text": "Legacy-named symbol `backtest_mr_5m_v2` in scripts/research_atr_filter_oos.py:8"}, "properties": {"repobilityId": "6d1a347013247cb0", "scanner": "scanner-primary", "fingerprint": "7d740a5b056fe18c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5cb88cf87704513d", "level": "note", "message": {"text": "Legacy-named symbol `research_dyn_v2` in scripts/research_v2b_dd_diagnosis.py:5"}, "properties": {"repobilityId": "7c235c865971f917", "scanner": "scanner-primary", "fingerprint": "5cb88cf87704513d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dbc2cbb6ea1b14b3", "level": "note", "message": {"text": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 scripts/mr_v1_strategy.py:294"}, "properties": {"repobilityId": "bff1ddc8aa39b1d8", "scanner": "scanner-primary", "fingerprint": "dbc2cbb6ea1b14b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-7c22d7e9fd0fefe3", "level": "note", "message": {"text": "Legacy-named symbol `research_trend_following_v2` in scripts/diagnose_trend_regimes.py:23"}, "properties": {"repobilityId": "eb1d6f058d59355e", "scanner": "scanner-primary", "fingerprint": "7c22d7e9fd0fefe3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bb747e4bfa08384e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/research_funding_trust_check.py:179"}, "properties": {"repobilityId": "6f567667349f433c", "scanner": "scanner-primary", "fingerprint": "bb747e4bfa08384e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c33cb509f86e3c6f", "level": "note", "message": {"text": "Legacy-named symbol `csrb_v1` in scripts/postmortem_csrb_v1.py:20"}, "properties": {"repobilityId": "bd76f7a964c532ac", "scanner": "scanner-primary", "fingerprint": "c33cb509f86e3c6f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b20a08ffcd6da9b9", "level": "note", "message": {"text": "Legacy-named symbol `diff_vs_legacy` in scripts/download_mainnet_history.py:236"}, "properties": {"repobilityId": "d4d75cdfbcbe1cea", "scanner": "scanner-primary", "fingerprint": "b20a08ffcd6da9b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-38e52f4753350e13", "level": "note", "message": {"text": "Legacy-named symbol `research_trend_following_v2` in scripts/research_trend_following_v3.py:22"}, "properties": {"repobilityId": "3fbd1b7b8e9aa697", "scanner": "scanner-primary", "fingerprint": "38e52f4753350e13", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f5eb8b55329eacd", "level": "note", "message": {"text": "Legacy-named symbol `early_trend_classifier_v1` in scripts/research_early_trend_classifier_v1.py:45"}, "properties": {"repobilityId": "bc7813369452a5fe", "scanner": "scanner-primary", "fingerprint": "5f5eb8b55329eacd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ae34c102fe321d05", "level": "note", "message": {"text": "Legacy-named symbol `vsvcb_v1` in scripts/research_trend_capture_exit_convexity.py:24"}, "properties": {"repobilityId": "d472e766719ca061", "scanner": "scanner-primary", "fingerprint": "ae34c102fe321d05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e50e500900118cd7", "level": "note", "message": {"text": "Legacy-named symbol `mr_v1` in scripts/research_mr_v1.py:44"}, "properties": {"repobilityId": "81ffe41eff9a256a", "scanner": "scanner-primary", "fingerprint": "e50e500900118cd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c32cf5f1e5d4fd03", "level": "note", "message": {"text": "Legacy-named symbol `research_only_trend_entry_timing_v1` in scripts/research_trend_entry_timing.py:1237"}, "properties": {"repobilityId": "aef272a09db939c9", "scanner": "scanner-primary", "fingerprint": "c32cf5f1e5d4fd03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9478166b31ff446f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/run_mr_5m_direct.py:1008"}, "properties": {"repobilityId": "4880eda154ef691a", "scanner": "scanner-primary", "fingerprint": "9478166b31ff446f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f880bf640b48e634", "level": "note", "message": {"text": "Legacy-named symbol `backtest_mr_v1` in scripts/research_mr_v1_chandelier.py:64"}, "properties": {"repobilityId": "3473bdc9232f266d", "scanner": "scanner-primary", "fingerprint": "f880bf640b48e634", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0300872bea533c19", "level": "note", "message": {"text": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 strategies/mr_v1_strategy.py:425"}, "properties": {"repobilityId": "548e4c7f79a6c171", "scanner": "scanner-primary", "fingerprint": "0300872bea533c19", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-edda97c982496137", "level": "none", "message": {"text": "Commented-code block (5 lines) in strategies/mr_5m_strategy.py:176"}, "properties": {"repobilityId": "87e1bd997a74f2f1", "scanner": "scanner-primary", "fingerprint": "edda97c982496137", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-679a3994a2a69280", "level": "note", "message": {"text": "Stub function `on_stop_order` (body is just `pass`/`return`) \u2014 strategies/mr_5m_strategy.py:404"}, "properties": {"repobilityId": "46cd73aa770351ba", "scanner": "scanner-primary", "fingerprint": "679a3994a2a69280", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-1b5a76780c3df9aa", "level": "none", "message": {"text": "1 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d04379b337b44a15", "scanner": "scanner-primary", "fingerprint": "1b5a76780c3df9aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "093260f2e9288bfe", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "c1e651d95ab7db07", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "acd3b41b9a9909b2", "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": "0a88de73c2f90f0f", "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": "c2d6e07cc57ceb5c", "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": "8e4e73eec13eafac", "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": "16b8955d3c9dadaf", "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": "3a0eaf70766ed446", "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": "b85f49b22a376025", "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": "b400ce3cf34e9ff2", "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": "317d05254e162c7b", "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": "37f9e558edee5c82", "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": "09184d34741208b9", "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": "bbe82d36766711d1", "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": "c636c427fdd92aad", "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": "a696e06d3c6cc076", "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": "7dd868bda94ee9c6", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "c075145cfe729607", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "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": "818ed15b51676824", "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": "c5be018eb4fdb9bb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}