{"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-bf1a3b54cbb62227", "name": "Possibly dead Python function: backend_dev_reload_during_run_enabled", "shortDescription": {"text": "Possibly dead Python function: backend_dev_reload_during_run_enabled"}, "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-d3001175c8092b0a", "name": "Possibly dead Python function: git_auto_update_loop", "shortDescription": {"text": "Possibly dead Python function: git_auto_update_loop"}, "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-17cb3bbfd04a406d", "name": "Possibly dead Python function: json_cache_default", "shortDescription": {"text": "Possibly dead Python function: json_cache_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-a45957665d3a471e", "name": "Possibly dead Python function: backend_dev_reloader_loop", "shortDescription": {"text": "Possibly dead Python function: backend_dev_reloader_loop"}, "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-5b24773848ef15df", "name": "Possibly dead Python function: delayed_call", "shortDescription": {"text": "Possibly dead Python function: delayed_call"}, "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-0c3fb07f7335cc60", "name": "Possibly dead Python function: clamp_percent", "shortDescription": {"text": "Possibly dead Python function: clamp_percent"}, "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-bf06c3f01bc4848c", "name": "Possibly dead Python function: career_loop_worker", "shortDescription": {"text": "Possibly dead Python function: career_loop_worker"}, "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-b61fa6bc228901e8", "name": "Possibly dead Python function: restore_dev_session_cache_background", "shortDescription": {"text": "Possibly dead Python function: restore_dev_session_cache_background"}, "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-efa04bd2d20fca62", "name": "Possibly dead Python function: build_entry", "shortDescription": {"text": "Possibly dead Python function: build_entry"}, "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-faf36a4288cb9d69", "name": "Possibly dead Python function: build_hakuraku_payload", "shortDescription": {"text": "Possibly dead Python function: build_hakuraku_payload"}, "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-781e66a0280ce9bd", "name": "Possibly dead Python function: scheduled_entries_for_turn", "shortDescription": {"text": "Possibly dead Python function: scheduled_entries_for_turn"}, "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-fda50ba61748419d", "name": "Possibly dead Python function: tier_order", "shortDescription": {"text": "Possibly dead Python function: tier_order"}, "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-629445c6012686ad", "name": "Possibly dead Python function: list_dataset_records", "shortDescription": {"text": "Possibly dead Python function: list_dataset_records"}, "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-0ef2683561a7b310", "name": "Possibly dead Python function: race_counts_from_turns", "shortDescription": {"text": "Possibly dead Python function: race_counts_from_turns"}, "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-3b6b11d8d1ac3f04", "name": "Possibly dead Python function: race_counts_from_summary", "shortDescription": {"text": "Possibly dead Python function: race_counts_from_summary"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6650aabf2b264880", "name": "Possibly dead Python function: load_manual_legacy_logs", "shortDescription": {"text": "Possibly dead Python function: load_manual_legacy_logs"}, "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-e9b71863f01ff056", "name": "Possibly dead Python function: race_is_off_aptitude_for_learning", "shortDescription": {"text": "Possibly dead Python function: race_is_off_aptitude_for_learning"}, "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-fc853cba1734599e", "name": "Possibly dead Python function: build_projection", "shortDescription": {"text": "Possibly dead Python function: build_projection"}, "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-10623a5fec3c3ef1", "name": "Possibly dead Python function: tile_bonus_from_projection", "shortDescription": {"text": "Possibly dead Python function: tile_bonus_from_projection"}, "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-28ef315ad73febd9", "name": "Possibly dead Python function: summarize_projection", "shortDescription": {"text": "Possibly dead Python function: summarize_projection"}, "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-295693f2df57573b", "name": "Possibly dead Python function: select_prior", "shortDescription": {"text": "Possibly dead Python function: select_prior"}, "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-a271161b95d7fe4f", "name": "Possibly dead Python function: prior_action_for_turn", "shortDescription": {"text": "Possibly dead Python function: prior_action_for_turn"}, "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-7942762ef6b327bb", "name": "Possibly dead Python function: expected_unique_star_distribution", "shortDescription": {"text": "Possibly dead Python function: expected_unique_star_distribution"}, "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-a6bb33f5b636a8a5", "name": "Possibly dead Python function: simulate_race", "shortDescription": {"text": "Possibly dead Python function: simulate_race"}, "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-67603e9943113c1c", "name": "Possibly dead Python function: expect_attribute_profile_primary_key", "shortDescription": {"text": "Possibly dead Python function: expect_attribute_profile_primary_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11b4ef33f1ea9394", "name": "Possibly dead Python function: locate", "shortDescription": {"text": "Possibly dead Python function: locate"}, "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-b53fdd885b2c3f34", "name": "Possibly dead Python function: sort_key", "shortDescription": {"text": "Possibly dead Python function: sort_key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-caf2bf3666d77212", "name": "Possibly dead Python function: add_api_call", "shortDescription": {"text": "Possibly dead Python function: add_api_call"}, "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-5f1e67394023e5d6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/hakuraku_reference/hakuraku_bundle.js:10", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/hakuraku_reference/hakuraku_bundle.js:10"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7025c7c381b8d07", "name": "Icon-only button without accessible name \u2014 public/app.js:7959", "shortDescription": {"text": "Icon-only button without accessible name \u2014 public/app.js:7959"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fbd5806975777a2", "name": "Stray `console.log` in TS/JS \u2014 public/app.js:10130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/app.js:10130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbc34c885bbb13a0", "name": "Insecure pattern 'dangerous_innerhtml' in docs/hakuraku_reference/hakuraku_bundle.js:10", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in docs/hakuraku_reference/hakuraku_bundle.js:10"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44711165e96e0035", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/hakuraku_reference/hakuraku_bundle.js:9", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/hakuraku_reference/hakuraku_bundle.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b43f40c37507d374", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/app.js:593", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/app.js:593"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23e95066e38beb07", "name": "Insecure pattern 'insert_adjacent_html' in public/app.js:200", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in public/app.js:200"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9db3db72e67ce8bf", "name": "Insecure pattern 'subprocess_shell_true' in uma_api/client.py:774", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in uma_api/client.py:774"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e35471cbd36b9437", "name": "Very large file: main.py (10833 lines)", "shortDescription": {"text": "Very large file: main.py (10833 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-35f88d2190036874", "name": "Very large file: tests/test_runner_recovery_smoke.py (2213 lines)", "shortDescription": {"text": "Very large file: tests/test_runner_recovery_smoke.py (2213 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-43aaae4854d2935b", "name": "Very large file: tests/test_loop_config_smoke.py (2306 lines)", "shortDescription": {"text": "Very large file: tests/test_loop_config_smoke.py (2306 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-069aec4d6025275b", "name": "Very large file: tests/test_mant_decision_safeguards.py (1839 lines)", "shortDescription": {"text": "Very large file: tests/test_mant_decision_safeguards.py (1839 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-47b781c31cba9c2f", "name": "Very large file: tests/test_learning_safeguards.py (2363 lines)", "shortDescription": {"text": "Very large file: tests/test_learning_safeguards.py (2363 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-561983c0d2fd938c", "name": "Very large file: tools/calibrate_deck.py (1217 lines)", "shortDescription": {"text": "Very large file: tools/calibrate_deck.py (1217 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-3c6ef300d677edc6", "name": "Very large file: career_bot/races.py (1309 lines)", "shortDescription": {"text": "Very large file: career_bot/races.py (1309 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-07c0111a705f23fe", "name": "Very large file: career_bot/skills.py (2885 lines)", "shortDescription": {"text": "Very large file: career_bot/skills.py (2885 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-f25bf53518650e7d", "name": "Very large file: career_bot/learning.py (7783 lines)", "shortDescription": {"text": "Very large file: career_bot/learning.py (7783 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-f4d7aa62e7340394", "name": "Very large file: career_bot/items.py (2685 lines)", "shortDescription": {"text": "Very large file: career_bot/items.py (2685 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-6c68f5f3a139790e", "name": "Very large file: career_bot/sim_observations.py (1640 lines)", "shortDescription": {"text": "Very large file: career_bot/sim_observations.py (1640 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-2511caef69020f7f", "name": "Very large file: career_bot/manual_recorder.py (1211 lines)", "shortDescription": {"text": "Very large file: career_bot/manual_recorder.py (1211 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-98e4e57d75bb5283", "name": "Very large file: career_bot/runner.py (5690 lines)", "shortDescription": {"text": "Very large file: career_bot/runner.py (5690 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-c1363176eb3ef425", "name": "Very large file: career_bot/presets.py (1170 lines)", "shortDescription": {"text": "Very large file: career_bot/presets.py (1170 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-3119ea71e2f1d830", "name": "Very large file: career_bot/career_simulator.py (9304 lines)", "shortDescription": {"text": "Very large file: career_bot/career_simulator.py (9304 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-ed474dd0cf22f25b", "name": "Very large file: career_bot/scenarios/mant.py (5720 lines)", "shortDescription": {"text": "Very large file: career_bot/scenarios/mant.py (5720 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-342af974d60b4837", "name": "Very large file: public/app.js (10162 lines)", "shortDescription": {"text": "Very large file: public/app.js (10162 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-ead66edda6cab27a", "name": "Very large file: uma_api/client.py (2183 lines)", "shortDescription": {"text": "Very large file: uma_api/client.py (2183 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 467 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-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-ec3ff1a5fcadf808", "name": "Legacy-named symbol `sweepy_planner_profile_v1` in main.py:5040", "shortDescription": {"text": "Legacy-named symbol `sweepy_planner_profile_v1` in main.py:5040"}, "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-590e9278bbc2574e", "name": "Commented-code block (5 lines) in main.py:1894", "shortDescription": {"text": "Commented-code block (5 lines) in main.py:1894"}, "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-644cfe2c54dc23df", "name": "Network/subprocess call without timeout or try/except \u2014 main.py:5666", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 main.py:5666"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00bafd0a47398234", "name": "Legacy-named symbol `sweepy_shop_decision_state_v1` in tests/test_shop_refresh_decision_state.py:41", "shortDescription": {"text": "Legacy-named symbol `sweepy_shop_decision_state_v1` in tests/test_shop_refresh_decision_state.py:41"}, "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-d778f35805c252c0", "name": "Legacy-named symbol `rejected_keep_old` in tests/test_policy_validation_escape_valve.py:33", "shortDescription": {"text": "Legacy-named symbol `rejected_keep_old` in tests/test_policy_validation_escape_valve.py:33"}, "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-f435be581223234a", "name": "Legacy-named symbol `sweepy_parent_memory_v1` in tests/test_dashboard_sync_smoke.py:187", "shortDescription": {"text": "Legacy-named symbol `sweepy_parent_memory_v1` in tests/test_dashboard_sync_smoke.py:187"}, "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-d9d3189da1175b84", "name": "Commented-code block (5 lines) in tests/test_estimate_score_record_weighting.py:259", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_estimate_score_record_weighting.py:259"}, "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-0ebe0de1fe990a12", "name": "Legacy-named symbol `sweepy_race_style_overrides_v2` in tests/test_race_schedule_smoke.py:134", "shortDescription": {"text": "Legacy-named symbol `sweepy_race_style_overrides_v2` in tests/test_race_schedule_smoke.py:134"}, "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-fac85b1306a7dba8", "name": "Commented-code block (5 lines) in tests/test_sim_shop_pool_counts.py:46", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_sim_shop_pool_counts.py:46"}, "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-738766a373dcaae1", "name": "Legacy-named symbol `sweepy_real_race_snapshots_v1` in tests/test_real_race_snapshots_load.py:11", "shortDescription": {"text": "Legacy-named symbol `sweepy_real_race_snapshots_v1` in tests/test_real_race_snapshots_load.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-0d4b9f080a44e5d6", "name": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_manual_recorder_smoke.py:106", "shortDescription": {"text": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_manual_recorder_smoke.py:106"}, "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-4f84e4e88be039b5", "name": "Legacy-named symbol `sweepy_training_policy_v1` in tests/test_weight_floor_clamps.py:88", "shortDescription": {"text": "Legacy-named symbol `sweepy_training_policy_v1` in tests/test_weight_floor_clamps.py:88"}, "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-624f532eea918ece", "name": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_loop_config_smoke.py:230", "shortDescription": {"text": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_loop_config_smoke.py:230"}, "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-0887d2f6478743ab", "name": "Commented-code block (5 lines) in tests/test_loop_config_smoke.py:1021", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_loop_config_smoke.py:1021"}, "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-d0b2103f913aa2c4", "name": "Legacy-named symbol `sweepy_hakuraku_race_v1` in tests/test_career_simulator.py:125", "shortDescription": {"text": "Legacy-named symbol `sweepy_hakuraku_race_v1` in tests/test_career_simulator.py:125"}, "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-95993a2ef65c1e3c", "name": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_career_compare_smoke.py:14", "shortDescription": {"text": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_career_compare_smoke.py:14"}, "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-28e347b7a7cbeead", "name": "Legacy-named symbol `sweepy_future_turn_effects_v1` in tests/test_mant_decision_safeguards.py:220", "shortDescription": {"text": "Legacy-named symbol `sweepy_future_turn_effects_v1` in tests/test_mant_decision_safeguards.py:220"}, "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-15a9348cd3fdc274", "name": "Legacy-named symbol `sweepy_career_log_v1` in tests/test_report_slimming.py:47", "shortDescription": {"text": "Legacy-named symbol `sweepy_career_log_v1` in tests/test_report_slimming.py:47"}, "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-28ffcbcf50a3534f", "name": "Legacy-named symbol `sweepy_future_turn_effects_v1` in tests/test_learning_safeguards.py:649", "shortDescription": {"text": "Legacy-named symbol `sweepy_future_turn_effects_v1` in tests/test_learning_safeguards.py:649"}, "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-b481626402b9d6d8", "name": "Legacy-named symbol `sweepy_error_snapshot_v2` in tests/test_runner_telemetry_smoke.py:200", "shortDescription": {"text": "Legacy-named symbol `sweepy_error_snapshot_v2` in tests/test_runner_telemetry_smoke.py:200"}, "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-49a5aa367620ed0a", "name": "Legacy-named symbol `sweepy_real_shop_snapshots_v1` in tests/test_real_shop_snapshots_load.py:12", "shortDescription": {"text": "Legacy-named symbol `sweepy_real_shop_snapshots_v1` in tests/test_real_shop_snapshots_load.py:12"}, "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-d414f200ee1a6fa2", "name": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in tests/test_shop_refresh_pools.py:17", "shortDescription": {"text": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in tests/test_shop_refresh_pools.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-92012387fd34dd36", "name": "Legacy-named symbol `sweepy_career_log_v1` in tests/test_sim_observations.py:19", "shortDescription": {"text": "Legacy-named symbol `sweepy_career_log_v1` in tests/test_sim_observations.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-a85dbb06129b0412", "name": "Legacy-named symbol `load_index_DUMP_old` in tests/test_storage_cleanup.py:23", "shortDescription": {"text": "Legacy-named symbol `load_index_DUMP_old` in tests/test_storage_cleanup.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-ec528c784c174773", "name": "Legacy-named symbol `unstable_legacy` in docs/hakuraku_reference/hakuraku_bundle.js:9", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in docs/hakuraku_reference/hakuraku_bundle.js:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-888f88b87fceeb57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/hakuraku_reference/hakuraku_bundle.js:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/hakuraku_reference/hakuraku_bundle.js:2"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c9088a8c66a6ad6", "name": "Legacy-named symbol `include_legacy` in tools/build_sim_observations.py:32", "shortDescription": {"text": "Legacy-named symbol `include_legacy` in tools/build_sim_observations.py:32"}, "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-965548ce5ab9112c", "name": "Legacy-named symbol `_archive_legacy` in tools/split_legacy_preset.py:24", "shortDescription": {"text": "Legacy-named symbol `_archive_legacy` in tools/split_legacy_preset.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-9e4d9a5e9569df34", "name": "Legacy-named symbol `sweepy_sim_target_tuning_v1` in tools/tune_sim_targets.py:571", "shortDescription": {"text": "Legacy-named symbol `sweepy_sim_target_tuning_v1` in tools/tune_sim_targets.py:571"}, "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-903921bba76271b0", "name": "Legacy-named symbol `sweepy_event_id_index_v1` in tools/build_event_id_index.py:375", "shortDescription": {"text": "Legacy-named symbol `sweepy_event_id_index_v1` in tools/build_event_id_index.py:375"}, "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-329a80978e7fadbf", "name": "Legacy-named symbol `sweepy_real_training_snapshots_v1` in tools/extract_real_training_snapshots.py:402", "shortDescription": {"text": "Legacy-named symbol `sweepy_real_training_snapshots_v1` in tools/extract_real_training_snapshots.py:402"}, "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-439d23b432f2ffbd", "name": "Legacy-named symbol `sweepy_stat_friend_recreation_payloads_v1` in tools/learn_stat_friend_recreation_payloads.py:194", "shortDescription": {"text": "Legacy-named symbol `sweepy_stat_friend_recreation_payloads_v1` in tools/learn_stat_friend_recreation_payloads.py:194"}, "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-afea7a9549284f94", "name": "Network/subprocess call without timeout or try/except \u2014 tools/learn_stat_friend_recreation_payloads.py:177", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/learn_stat_friend_recreation_payloads.py:177"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b3b0402536fb1282", "name": "Commented-code block (8 lines) in tools/calibrate_deck.py:57", "shortDescription": {"text": "Commented-code block (8 lines) in tools/calibrate_deck.py:57"}, "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-1ab5c5cf50e8910d", "name": "Legacy-named symbol `include_legacy` in tools/extract_real_race_snapshots.py:288", "shortDescription": {"text": "Legacy-named symbol `include_legacy` in tools/extract_real_race_snapshots.py:288"}, "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-b34c996ac59f48d5", "name": "Network/subprocess call without timeout or try/except \u2014 tools/launch_dual_sweepy.py:45", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/launch_dual_sweepy.py:45"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-119e4fd99c00d8a8", "name": "Legacy-named symbol `sweepy_sim_hakuraku_race_manifest_v1` in tools/run_simulator_sweep.py:71", "shortDescription": {"text": "Legacy-named symbol `sweepy_sim_hakuraku_race_manifest_v1` in tools/run_simulator_sweep.py:71"}, "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-58edbc99ab2996c0", "name": "Legacy-named symbol `include_legacy` in tools/extract_real_shop_snapshots.py:130", "shortDescription": {"text": "Legacy-named symbol `include_legacy` in tools/extract_real_shop_snapshots.py:130"}, "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-2612f75b2b942ade", "name": "Legacy-named symbol `sweepy_event_probability_model_v1` in tools/build_event_probability_model.py:234", "shortDescription": {"text": "Legacy-named symbol `sweepy_event_probability_model_v1` in tools/build_event_probability_model.py:234"}, "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-ab0b72784d4c68df", "name": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in tools/build_shop_refresh_pools.py:289", "shortDescription": {"text": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in tools/build_shop_refresh_pools.py:289"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc8dee9fb454c575", "name": "Legacy-named symbol `sweepy_hakuraku_race_v1` in tools/export_hakuraku_races.py:753", "shortDescription": {"text": "Legacy-named symbol `sweepy_hakuraku_race_v1` in tools/export_hakuraku_races.py:753"}, "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-bf1f0ae6e76f7176", "name": "Commented-code block (5 lines) in tools/export_hakuraku_races.py:804", "shortDescription": {"text": "Commented-code block (5 lines) in tools/export_hakuraku_races.py:804"}, "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-e5034f75dc24c91e", "name": "Network/subprocess call without timeout or try/except \u2014 tools/export_hakuraku_races.py:633", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/export_hakuraku_races.py:633"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9f951c887817fa5", "name": "Legacy-named symbol `sweepy_baseline_metrics_v1` in tools/compute_baseline_metrics.py:252", "shortDescription": {"text": "Legacy-named symbol `sweepy_baseline_metrics_v1` in tools/compute_baseline_metrics.py:252"}, "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-20a185bd2f3e2e24", "name": "Commented-code block (12 lines) in tools/optimize_deck_policy.py:132", "shortDescription": {"text": "Commented-code block (12 lines) in tools/optimize_deck_policy.py:132"}, "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-ecdc746d4b62e5e3", "name": "Legacy-named symbol `sweepy_parent_memory_v1` in career_bot/parent_memory.py:9", "shortDescription": {"text": "Legacy-named symbol `sweepy_parent_memory_v1` in career_bot/parent_memory.py:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-feb05cf2882f2cb5", "name": "Commented-code block (7 lines) in career_bot/parent_memory.py:12", "shortDescription": {"text": "Commented-code block (7 lines) in career_bot/parent_memory.py:12"}, "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-c6f933ee3bfc315c", "name": "Legacy-named symbol `sweepy_skill_failures_v1` in career_bot/skills.py:466", "shortDescription": {"text": "Legacy-named symbol `sweepy_skill_failures_v1` in career_bot/skills.py:466"}, "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-429ffc99c361fa1e", "name": "Commented-code block (6 lines) in career_bot/skills.py:262", "shortDescription": {"text": "Commented-code block (6 lines) in career_bot/skills.py:262"}, "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-b034e4058785f46c", "name": "Legacy-named symbol `sweepy_public_career_record_v1` in career_bot/profile_dataset.py:17", "shortDescription": {"text": "Legacy-named symbol `sweepy_public_career_record_v1` in career_bot/profile_dataset.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-4712731bdd1a1276", "name": "Commented-code block (8 lines) in career_bot/postmortem_feedback.py:47", "shortDescription": {"text": "Commented-code block (8 lines) in career_bot/postmortem_feedback.py:47"}, "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-db5c7a924b5f99e3", "name": "Legacy-named symbol `sweepy_training_policy_v1` in career_bot/training_policy.py:563", "shortDescription": {"text": "Legacy-named symbol `sweepy_training_policy_v1` in career_bot/training_policy.py:563"}, "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-00ae573d1c7ede8d", "name": "Commented-code block (5 lines) in career_bot/training_policy.py:76", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/training_policy.py:76"}, "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-a24ab072c5298b94", "name": "Legacy-named symbol `sweepy_career_log_v1` in career_bot/learning.py:52", "shortDescription": {"text": "Legacy-named symbol `sweepy_career_log_v1` in career_bot/learning.py:52"}, "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-04df21207c1cd880", "name": "Commented-code block (5 lines) in career_bot/learning.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/learning.py:78"}, "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-a0ca1dab95376935", "name": "Legacy-named symbol `sweepy_manual_vs_bot_comparison_v1` in career_bot/career_compare.py:518", "shortDescription": {"text": "Legacy-named symbol `sweepy_manual_vs_bot_comparison_v1` in career_bot/career_compare.py:518"}, "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-90727dce88823949", "name": "Legacy-named symbol `sweepy_team_trials_dataset_v1` in career_bot/team_trials_dataset.py:24", "shortDescription": {"text": "Legacy-named symbol `sweepy_team_trials_dataset_v1` in career_bot/team_trials_dataset.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-80d8eaff8b464483", "name": "Commented-code block (5 lines) in career_bot/unique_race_modifiers.py:59", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/unique_race_modifiers.py:59"}, "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-90851e80aafeea68", "name": "Legacy-named symbol `sweepy_manual_race_data_v1` in career_bot/manual_race_data.py:51", "shortDescription": {"text": "Legacy-named symbol `sweepy_manual_race_data_v1` in career_bot/manual_race_data.py:51"}, "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-216ca2f929cb8e5e", "name": "Commented-code block (5 lines) in career_bot/manual_race_data.py:265", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/manual_race_data.py:265"}, "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-06fbf69afd8b5ec2", "name": "Commented-code block (7 lines) in career_bot/items.py:317", "shortDescription": {"text": "Commented-code block (7 lines) in career_bot/items.py:317"}, "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-39e17b11ebf6e861", "name": "Legacy-named symbol `sweepy_sim_observation_v1` in career_bot/sim_observations.py:26", "shortDescription": {"text": "Legacy-named symbol `sweepy_sim_observation_v1` in career_bot/sim_observations.py:26"}, "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-3c58e52b44ca3efa", "name": "Legacy-named symbol `sweepy_imitation_archive_v1` in career_bot/imitation.py:28", "shortDescription": {"text": "Legacy-named symbol `sweepy_imitation_archive_v1` in career_bot/imitation.py:28"}, "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-79feacc6ebdd1b5f", "name": "Commented-code block (5 lines) in career_bot/imitation.py:244", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/imitation.py:244"}, "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-833aa663953ea27b", "name": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in career_bot/shop_refresh.py:25", "shortDescription": {"text": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in career_bot/shop_refresh.py:25"}, "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-c6b562697754084a", "name": "Legacy-named symbol `sweepy_api_discovery_v1` in career_bot/api_discovery.py:19", "shortDescription": {"text": "Legacy-named symbol `sweepy_api_discovery_v1` in career_bot/api_discovery.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-1a606e887d99c405", "name": "Commented-code block (8 lines) in career_bot/race_postmortem.py:33", "shortDescription": {"text": "Commented-code block (8 lines) in career_bot/race_postmortem.py:33"}, "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-315ebd1fa2c658b0", "name": "Commented-code block (5 lines) in career_bot/manual_recorder.py:517", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/manual_recorder.py:517"}, "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-882e0836233b794e", "name": "Commented-code block (10 lines) in career_bot/hyperparameter_tuner.py:41", "shortDescription": {"text": "Commented-code block (10 lines) in career_bot/hyperparameter_tuner.py:41"}, "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-960230c0adf0cbe7", "name": "Legacy-named symbol `too_old` in career_bot/runner.py:1080", "shortDescription": {"text": "Legacy-named symbol `too_old` in career_bot/runner.py:1080"}, "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-583603e35cf59b26", "name": "Commented-code block (6 lines) in career_bot/runner.py:303", "shortDescription": {"text": "Commented-code block (6 lines) in career_bot/runner.py:303"}, "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-3752e6e79a148467", "name": "Network/subprocess call without timeout or try/except \u2014 career_bot/runner.py:1128", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 career_bot/runner.py:1128"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b02bd09f8a17c1fe", "name": "Legacy-named symbol `sweepy_deck_policy_cache_v1` in career_bot/deck_policy_cache.py:25", "shortDescription": {"text": "Legacy-named symbol `sweepy_deck_policy_cache_v1` in career_bot/deck_policy_cache.py:25"}, "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-d0656e735fad00e2", "name": "Commented-code block (5 lines) in career_bot/presets.py:662", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/presets.py:662"}, "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-7b62c9dd11eee22c", "name": "Legacy-named symbol `sweepy_race_thresholds_v1` in career_bot/race_thresholds.py:38", "shortDescription": {"text": "Legacy-named symbol `sweepy_race_thresholds_v1` in career_bot/race_thresholds.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-85d004934b80ba5b", "name": "Commented-code block (6 lines) in career_bot/race_thresholds.py:190", "shortDescription": {"text": "Commented-code block (6 lines) in career_bot/race_thresholds.py:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a0f41cfea535824", "name": "Commented-code block (6 lines) in career_bot/skill_profiles.py:68", "shortDescription": {"text": "Commented-code block (6 lines) in career_bot/skill_profiles.py:68"}, "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-a3fcec78e15d7bce", "name": "Legacy-named symbol `sweepy_hakuraku_race_v1` in career_bot/career_simulator.py:8642", "shortDescription": {"text": "Legacy-named symbol `sweepy_hakuraku_race_v1` in career_bot/career_simulator.py:8642"}, "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-5f42f349e2b0c040", "name": "Commented-code block (7 lines) in career_bot/career_simulator.py:72", "shortDescription": {"text": "Commented-code block (7 lines) in career_bot/career_simulator.py:72"}, "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-76125eab859daad7", "name": "Legacy-named symbol `sweepy_team_trials_observation_v1` in career_bot/observed_profiles.py:16", "shortDescription": {"text": "Legacy-named symbol `sweepy_team_trials_observation_v1` in career_bot/observed_profiles.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-df77b32c0a31704e", "name": "Legacy-named symbol `sweepy_deck_builder_v1` in career_bot/deck_advice.py:639", "shortDescription": {"text": "Legacy-named symbol `sweepy_deck_builder_v1` in career_bot/deck_advice.py:639"}, "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-a82d105c0731b7ee", "name": "Legacy-named symbol `sweepy_career_log_v1` in career_bot/report.py:15", "shortDescription": {"text": "Legacy-named symbol `sweepy_career_log_v1` in career_bot/report.py:15"}, "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-48499fd93b157ac0", "name": "Commented-code block (9 lines) in career_bot/report.py:199", "shortDescription": {"text": "Commented-code block (9 lines) in career_bot/report.py:199"}, "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-7b36de4adff59bd5", "name": "Legacy-named symbol `sweepy_daily_automation_v1` in career_bot/daily_tasks.py:476", "shortDescription": {"text": "Legacy-named symbol `sweepy_daily_automation_v1` in career_bot/daily_tasks.py:476"}, "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-5b5e88db6b6474bb", "name": "Legacy-named symbol `sweepy_trajectory_centroids_v1` in career_bot/career_trajectory_prediction.py:159", "shortDescription": {"text": "Legacy-named symbol `sweepy_trajectory_centroids_v1` in career_bot/career_trajectory_prediction.py:159"}, "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-81aab7e7593fb434", "name": "Legacy-named symbol `sweepy_decision_understanding_v1` in career_bot/scenarios/mant.py:2513", "shortDescription": {"text": "Legacy-named symbol `sweepy_decision_understanding_v1` in career_bot/scenarios/mant.py:2513"}, "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-4ccf3267d4ef6282", "name": "Commented-code block (5 lines) in career_bot/scenarios/mant.py:89", "shortDescription": {"text": "Commented-code block (5 lines) in career_bot/scenarios/mant.py:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b834029a901bc54e", "name": "Legacy-named symbol `vet1Legacy` in public/app.js:2751", "shortDescription": {"text": "Legacy-named symbol `vet1Legacy` in public/app.js:2751"}, "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-b1bc1b1c3f9b8aff", "name": "Commented-code block (5 lines) in public/app.js:3034", "shortDescription": {"text": "Commented-code block (5 lines) in public/app.js:3034"}, "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-5406cef24181a65d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/app.js:672", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/app.js:672"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cdde598677f47d11", "name": "Commented-code block (6 lines) in uma_api/client.py:551", "shortDescription": {"text": "Commented-code block (6 lines) in uma_api/client.py:551"}, "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-ff71378e96cb9882", "name": "Network/subprocess call without timeout or try/except \u2014 uma_api/client.py:750", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 uma_api/client.py:750"}, "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-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:\nmain.py:env_flag, uma_api/client.py:env_flag\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:\nmain.py:add_start_state_item_count, main.py:add, main.py:add\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ntools/export_hakuraku_races.py:safe_int, career_bot/parent_memory.py:safe_int, career_bot/manual_recorder.py:safe_int, career_bot/report.py:safe_int\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-0a0306e7564a8de0", "name": "Frontend route `${I}` has no Link/navigate to it \u2014 docs/hakuraku_reference/hakuraku_bundle.js", "shortDescription": {"text": "Frontend route `${I}` has no Link/navigate to it \u2014 docs/hakuraku_reference/hakuraku_bundle.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa8de26c198d1b51", "name": "Frontend route `${I===` has no Link/navigate to it \u2014 docs/hakuraku_reference/hakuraku_bundle.js", "shortDescription": {"text": "Frontend route `${I===` has no Link/navigate to it \u2014 docs/hakuraku_reference/hakuraku_bundle.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-09a5d92cd1597124", "name": "Dangling fetch: GET /data/gamedata.bin.gz (docs/hakuraku_reference/hakuraku_bundle.js:13)", "shortDescription": {"text": "Dangling fetch: GET /data/gamedata.bin.gz (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "fullDescription": {"text": "`docs/hakuraku_reference/hakuraku_bundle.js:13` calls `GET /data/gamedata.bin.gz` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/gamedata.bin.gz`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d3814afe719fd97", "name": "Dangling fetch: GET /data/umdb.binarypb.gz (docs/hakuraku_reference/hakuraku_bundle.js:13)", "shortDescription": {"text": "Dangling fetch: GET /data/umdb.binarypb.gz (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "fullDescription": {"text": "`docs/hakuraku_reference/hakuraku_bundle.js:13` calls `GET /data/umdb.binarypb.gz` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/umdb.binarypb.gz`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9514bd08420dcd1", "name": "Dangling fetch: GET /api/auth/session (docs/hakuraku_reference/hakuraku_bundle.js:13)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/session (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "fullDescription": {"text": "`docs/hakuraku_reference/hakuraku_bundle.js:13` calls `GET /api/auth/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-423d29d2c1de8a42", "name": "Dangling fetch: POST /api/auth/logout (docs/hakuraku_reference/hakuraku_bundle.js:13)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "fullDescription": {"text": "`docs/hakuraku_reference/hakuraku_bundle.js:13` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/logout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f08fd17e836b1886", "name": "Dangling fetch: GET /assets/data/uma_race_data.json (public/app.js:3951)", "shortDescription": {"text": "Dangling fetch: GET /assets/data/uma_race_data.json (public/app.js:3951)"}, "fullDescription": {"text": "`public/app.js:3951` calls `GET /assets/data/uma_race_data.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/assets/data/uma_race_data.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6acf566faf4127b9", "name": "Unused endpoint: GET /api/settings/turn-delay", "shortDescription": {"text": "Unused endpoint: GET /api/settings/turn-delay"}, "fullDescription": {"text": "`main.py` declares `GET /api/settings/turn-delay` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec281ca5f4d1ba39", "name": "Unused endpoint: POST /api/settings/turn-delay", "shortDescription": {"text": "Unused endpoint: POST /api/settings/turn-delay"}, "fullDescription": {"text": "`main.py` declares `POST /api/settings/turn-delay` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-544dad7d0e986506", "name": "Unused endpoint: GET /api/learning_session/current", "shortDescription": {"text": "Unused endpoint: GET /api/learning_session/current"}, "fullDescription": {"text": "`main.py` declares `GET /api/learning_session/current` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2aff321511cfb06", "name": "Unused endpoint: POST /api/learning_session/declare", "shortDescription": {"text": "Unused endpoint: POST /api/learning_session/declare"}, "fullDescription": {"text": "`main.py` declares `POST /api/learning_session/declare` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14ec7ebb045aa09b", "name": "Unused endpoint: POST /api/learning_session/clear", "shortDescription": {"text": "Unused endpoint: POST /api/learning_session/clear"}, "fullDescription": {"text": "`main.py` declares `POST /api/learning_session/clear` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22db38f83101d9c9", "name": "Unused endpoint: GET /api/learning_session/popup_setting", "shortDescription": {"text": "Unused endpoint: GET /api/learning_session/popup_setting"}, "fullDescription": {"text": "`main.py` declares `GET /api/learning_session/popup_setting` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c63594803f297e", "name": "Unused endpoint: POST /api/learning_session/popup_setting", "shortDescription": {"text": "Unused endpoint: POST /api/learning_session/popup_setting"}, "fullDescription": {"text": "`main.py` declares `POST /api/learning_session/popup_setting` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0895c98b6f7d6ae", "name": "Unused endpoint: GET /api/learning_session/pending_intent", "shortDescription": {"text": "Unused endpoint: GET /api/learning_session/pending_intent"}, "fullDescription": {"text": "`main.py` declares `GET /api/learning_session/pending_intent` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2718037f4aa0795", "name": "Unused endpoint: GET /api/learning_session/presets", "shortDescription": {"text": "Unused endpoint: GET /api/learning_session/presets"}, "fullDescription": {"text": "`main.py` declares `GET /api/learning_session/presets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58f6ebd5190c4270", "name": "Unused endpoint: POST /api/learning_session/presets", "shortDescription": {"text": "Unused endpoint: POST /api/learning_session/presets"}, "fullDescription": {"text": "`main.py` declares `POST /api/learning_session/presets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1173e8e6b23a0269", "name": "Unused endpoint: POST /api/learning_session/quick_declare", "shortDescription": {"text": "Unused endpoint: POST /api/learning_session/quick_declare"}, "fullDescription": {"text": "`main.py` declares `POST /api/learning_session/quick_declare` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4b516fa8cfe6d7d", "name": "Unused endpoint: POST /api/presets/save_races", "shortDescription": {"text": "Unused endpoint: POST /api/presets/save_races"}, "fullDescription": {"text": "`main.py` declares `POST /api/presets/save_races` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c85d2a00a57d9c2", "name": "Unused endpoint: POST /api/presets/save_race_plan", "shortDescription": {"text": "Unused endpoint: POST /api/presets/save_race_plan"}, "fullDescription": {"text": "`main.py` declares `POST /api/presets/save_race_plan` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc868adcc910d5d5", "name": "Unused endpoint: POST /api/presets/save_skill_plan", "shortDescription": {"text": "Unused endpoint: POST /api/presets/save_skill_plan"}, "fullDescription": {"text": "`main.py` declares `POST /api/presets/save_skill_plan` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63f358a7f783e69a", "name": "Unused endpoint: POST /api/presets/save_race_continue", "shortDescription": {"text": "Unused endpoint: POST /api/presets/save_race_continue"}, "fullDescription": {"text": "`main.py` declares `POST /api/presets/save_race_continue` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9776d2893644070b", "name": "Unused endpoint: GET /api/presets", "shortDescription": {"text": "Unused endpoint: GET /api/presets"}, "fullDescription": {"text": "`main.py` declares `GET /api/presets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e3ed6ea3247a7cb", "name": "Unused endpoint: GET /api/calibrate/status", "shortDescription": {"text": "Unused endpoint: GET /api/calibrate/status"}, "fullDescription": {"text": "`main.py` declares `GET /api/calibrate/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f67e70e423f40f22", "name": "Unused endpoint: POST /api/calibrate", "shortDescription": {"text": "Unused endpoint: POST /api/calibrate"}, "fullDescription": {"text": "`main.py` declares `POST /api/calibrate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea76417905c7bb44", "name": "Unused endpoint: GET /api/planner_profiles", "shortDescription": {"text": "Unused endpoint: GET /api/planner_profiles"}, "fullDescription": {"text": "`main.py` declares `GET /api/planner_profiles` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05cebebea6d4daef", "name": "Unused endpoint: POST /api/planner_profiles/save", "shortDescription": {"text": "Unused endpoint: POST /api/planner_profiles/save"}, "fullDescription": {"text": "`main.py` declares `POST /api/planner_profiles/save` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c37b75f9196c541a", "name": "Unused endpoint: POST /api/planner_profiles/load", "shortDescription": {"text": "Unused endpoint: POST /api/planner_profiles/load"}, "fullDescription": {"text": "`main.py` declares `POST /api/planner_profiles/load` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb5498c7bfa25de8", "name": "Unused endpoint: GET /api/decks/advice", "shortDescription": {"text": "Unused endpoint: GET /api/decks/advice"}, "fullDescription": {"text": "`main.py` declares `GET /api/decks/advice` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-528e070fb86e0361", "name": "Unused endpoint: POST /api/decks/save", "shortDescription": {"text": "Unused endpoint: POST /api/decks/save"}, "fullDescription": {"text": "`main.py` declares `POST /api/decks/save` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-474c7bb7a9ad0e2e", "name": "Unused endpoint: POST /api/presets", "shortDescription": {"text": "Unused endpoint: POST /api/presets"}, "fullDescription": {"text": "`main.py` declares `POST /api/presets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd50404603ff7fad", "name": "Unused endpoint: POST /api/presets/delete", "shortDescription": {"text": "Unused endpoint: POST /api/presets/delete"}, "fullDescription": {"text": "`main.py` declares `POST /api/presets/delete` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f51b30110d2e4f8e", "name": "Unused endpoint: GET /api/team_bundle/presets", "shortDescription": {"text": "Unused endpoint: GET /api/team_bundle/presets"}, "fullDescription": {"text": "`main.py` declares `GET /api/team_bundle/presets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45a376fdb03c2cd9", "name": "Unused endpoint: POST /api/team_bundle/presets", "shortDescription": {"text": "Unused endpoint: POST /api/team_bundle/presets"}, "fullDescription": {"text": "`main.py` declares `POST /api/team_bundle/presets` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd4ddf08dd196f92", "name": "Unused endpoint: POST /api/team_bundle/presets/delete", "shortDescription": {"text": "Unused endpoint: POST /api/team_bundle/presets/delete"}, "fullDescription": {"text": "`main.py` declares `POST /api/team_bundle/presets/delete` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-394c792e4b43dcac", "name": "Unused endpoint: GET /admin/recent_runs/{account_id}", "shortDescription": {"text": "Unused endpoint: GET /admin/recent_runs/{account_id}"}, "fullDescription": {"text": "`main.py` declares `GET /admin/recent_runs/{account_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83061f361aa83322", "name": "Unused endpoint: GET /admin/corpus_health/{account_id}", "shortDescription": {"text": "Unused endpoint: GET /admin/corpus_health/{account_id}"}, "fullDescription": {"text": "`main.py` declares `GET /admin/corpus_health/{account_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-200ab2e98a288506", "name": "Unused endpoint: POST /api/login", "shortDescription": {"text": "Unused endpoint: POST /api/login"}, "fullDescription": {"text": "`main.py` declares `POST /api/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b0e7f5976711316", "name": "Unused endpoint: GET /api/session", "shortDescription": {"text": "Unused endpoint: GET /api/session"}, "fullDescription": {"text": "`main.py` declares `GET /api/session` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5261cfc252d20b0", "name": "Unused endpoint: POST /api/auth/login_reusable", "shortDescription": {"text": "Unused endpoint: POST /api/auth/login_reusable"}, "fullDescription": {"text": "`main.py` declares `POST /api/auth/login_reusable` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a29d16f9be80235", "name": "Unused endpoint: POST /api/dashboard/refresh", "shortDescription": {"text": "Unused endpoint: POST /api/dashboard/refresh"}, "fullDescription": {"text": "`main.py` declares `POST /api/dashboard/refresh` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0e407026680060f", "name": "Unused endpoint: GET /api/dailies/status", "shortDescription": {"text": "Unused endpoint: GET /api/dailies/status"}, "fullDescription": {"text": "`main.py` declares `GET /api/dailies/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eafb97f4b07ede1f", "name": "Unused endpoint: POST /api/dailies/run", "shortDescription": {"text": "Unused endpoint: POST /api/dailies/run"}, "fullDescription": {"text": "`main.py` declares `POST /api/dailies/run` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc4373e83a0ed566", "name": "Unused endpoint: POST /api/supports/limit_break_all", "shortDescription": {"text": "Unused endpoint: POST /api/supports/limit_break_all"}, "fullDescription": {"text": "`main.py` declares `POST /api/supports/limit_break_all` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-57b684b78fddb3d3", "name": "Unused endpoint: POST /api/selection", "shortDescription": {"text": "Unused endpoint: POST /api/selection"}, "fullDescription": {"text": "`main.py` declares `POST /api/selection` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49ac19bb61ef30a3", "name": "Unused endpoint: POST /api/auth/refresh", "shortDescription": {"text": "Unused endpoint: POST /api/auth/refresh"}, "fullDescription": {"text": "`main.py` declares `POST /api/auth/refresh` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a10936f69cf3bbb4", "name": "Unused endpoint: POST /api/logout", "shortDescription": {"text": "Unused endpoint: POST /api/logout"}, "fullDescription": {"text": "`main.py` declares `POST /api/logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fe351c6d3263d64", "name": "Unused endpoint: POST /api/career/start", "shortDescription": {"text": "Unused endpoint: POST /api/career/start"}, "fullDescription": {"text": "`main.py` declares `POST /api/career/start` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b00565a3cf7b7d78", "name": "Unused endpoint: POST /api/career/run/preflight", "shortDescription": {"text": "Unused endpoint: POST /api/career/run/preflight"}, "fullDescription": {"text": "`main.py` declares `POST /api/career/run/preflight` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ee6f4633958059e", "name": "Unused endpoint: POST /api/career/run", "shortDescription": {"text": "Unused endpoint: POST /api/career/run"}, "fullDescription": {"text": "`main.py` declares `POST /api/career/run` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2beef02058404443", "name": "Unused endpoint: GET /api/career/runner", "shortDescription": {"text": "Unused endpoint: GET /api/career/runner"}, "fullDescription": {"text": "`main.py` declares `GET /api/career/runner` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b88b5da79306f1b6", "name": "Unused endpoint: POST /api/career/runner/stop", "shortDescription": {"text": "Unused endpoint: POST /api/career/runner/stop"}, "fullDescription": {"text": "`main.py` declares `POST /api/career/runner/stop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4474990a9273b25", "name": "Unused endpoint: GET /api/debug/pre_single_mode_dump", "shortDescription": {"text": "Unused endpoint: GET /api/debug/pre_single_mode_dump"}, "fullDescription": {"text": "`main.py` declares `GET /api/debug/pre_single_mode_dump` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6db8df5a6bba6ef2", "name": "Unused endpoint: POST /api/api_discovery/start", "shortDescription": {"text": "Unused endpoint: POST /api/api_discovery/start"}, "fullDescription": {"text": "`main.py` declares `POST /api/api_discovery/start` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb63d40d566fe5fb", "name": "Unused endpoint: POST /api/api_discovery/stop", "shortDescription": {"text": "Unused endpoint: POST /api/api_discovery/stop"}, "fullDescription": {"text": "`main.py` declares `POST /api/api_discovery/stop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c227021ac805b732", "name": "Unused endpoint: GET /api/api_discovery/status", "shortDescription": {"text": "Unused endpoint: GET /api/api_discovery/status"}, "fullDescription": {"text": "`main.py` declares `GET /api/api_discovery/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56f7652e57035342", "name": "Unused endpoint: GET /api/api_discovery/captures", "shortDescription": {"text": "Unused endpoint: GET /api/api_discovery/captures"}, "fullDescription": {"text": "`main.py` declares `GET /api/api_discovery/captures` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17946"}, "properties": {"repository": "rearview-1/project-shaboing", "repoUrl": "https://github.com/rearview-1/project-shaboing", "branch": "main"}, "results": [{"ruleId": "scanner-bf1a3b54cbb62227", "level": "note", "message": {"text": "Possibly dead Python function: backend_dev_reload_during_run_enabled"}, "properties": {"repobilityId": "dd0e55f1eacaa4e5", "scanner": "scanner-primary", "fingerprint": "bf1a3b54cbb62227", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:664"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d3001175c8092b0a", "level": "note", "message": {"text": "Possibly dead Python function: git_auto_update_loop"}, "properties": {"repobilityId": "96c829b26c39904a", "scanner": "scanner-primary", "fingerprint": "d3001175c8092b0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:939"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17cb3bbfd04a406d", "level": "note", "message": {"text": "Possibly dead Python function: json_cache_default"}, "properties": {"repobilityId": "310851e027672df5", "scanner": "scanner-primary", "fingerprint": "17cb3bbfd04a406d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:1004"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a45957665d3a471e", "level": "note", "message": {"text": "Possibly dead Python function: backend_dev_reloader_loop"}, "properties": {"repobilityId": "00f2987b02ce8537", "scanner": "scanner-primary", "fingerprint": "a45957665d3a471e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:1993"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b24773848ef15df", "level": "note", "message": {"text": "Possibly dead Python function: delayed_call"}, "properties": {"repobilityId": "c785a82d17c474b6", "scanner": "scanner-primary", "fingerprint": "5b24773848ef15df", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:2116"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c3fb07f7335cc60", "level": "note", "message": {"text": "Possibly dead Python function: clamp_percent"}, "properties": {"repobilityId": "12bdb259d76161a9", "scanner": "scanner-primary", "fingerprint": "0c3fb07f7335cc60", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:4829"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bf06c3f01bc4848c", "level": "note", "message": {"text": "Possibly dead Python function: career_loop_worker"}, "properties": {"repobilityId": "f6d4001a6ba316e1", "scanner": "scanner-primary", "fingerprint": "bf06c3f01bc4848c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:7884"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b61fa6bc228901e8", "level": "note", "message": {"text": "Possibly dead Python function: restore_dev_session_cache_background"}, "properties": {"repobilityId": "cbcc388fed39d7f8", "scanner": "scanner-primary", "fingerprint": "b61fa6bc228901e8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:10817"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efa04bd2d20fca62", "level": "note", "message": {"text": "Possibly dead Python function: build_entry"}, "properties": {"repobilityId": "628483fa9c38884e", "scanner": "scanner-primary", "fingerprint": "efa04bd2d20fca62", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/build_chara_aptitude_map.py:145"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-faf36a4288cb9d69", "level": "note", "message": {"text": "Possibly dead Python function: build_hakuraku_payload"}, "properties": {"repobilityId": "698bfe1d21ca25dd", "scanner": "scanner-primary", "fingerprint": "faf36a4288cb9d69", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/export_hakuraku_races.py:750"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-781e66a0280ce9bd", "level": "note", "message": {"text": "Possibly dead Python function: scheduled_entries_for_turn"}, "properties": {"repobilityId": "91e88616bdbbe455", "scanner": "scanner-primary", "fingerprint": "781e66a0280ce9bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/races.py:143"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fda50ba61748419d", "level": "note", "message": {"text": "Possibly dead Python function: tier_order"}, "properties": {"repobilityId": "85620d3a86584f82", "scanner": "scanner-primary", "fingerprint": "fda50ba61748419d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/skills.py:2424"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-629445c6012686ad", "level": "note", "message": {"text": "Possibly dead Python function: list_dataset_records"}, "properties": {"repobilityId": "2258aad4b87be943", "scanner": "scanner-primary", "fingerprint": "629445c6012686ad", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/profile_dataset.py:817"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0ef2683561a7b310", "level": "note", "message": {"text": "Possibly dead Python function: race_counts_from_turns"}, "properties": {"repobilityId": "98f87535ed22ab37", "scanner": "scanner-primary", "fingerprint": "0ef2683561a7b310", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/learning.py:1225"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b6b11d8d1ac3f04", "level": "note", "message": {"text": "Possibly dead Python function: race_counts_from_summary"}, "properties": {"repobilityId": "b9f6523ed66b4620", "scanner": "scanner-primary", "fingerprint": "3b6b11d8d1ac3f04", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/learning.py:1277"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6650aabf2b264880", "level": "note", "message": {"text": "Possibly dead Python function: load_manual_legacy_logs"}, "properties": {"repobilityId": "5f749535c8338248", "scanner": "scanner-primary", "fingerprint": "6650aabf2b264880", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/learning.py:2921"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9b71863f01ff056", "level": "note", "message": {"text": "Possibly dead Python function: race_is_off_aptitude_for_learning"}, "properties": {"repobilityId": "b84af3c6dc9a6ca4", "scanner": "scanner-primary", "fingerprint": "e9b71863f01ff056", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/race_learning_filters.py:197"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc853cba1734599e", "level": "note", "message": {"text": "Possibly dead Python function: build_projection"}, "properties": {"repobilityId": "f55bd23db748f90b", "scanner": "scanner-primary", "fingerprint": "fc853cba1734599e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/projection.py:199"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10623a5fec3c3ef1", "level": "note", "message": {"text": "Possibly dead Python function: tile_bonus_from_projection"}, "properties": {"repobilityId": "bc906f385647bc21", "scanner": "scanner-primary", "fingerprint": "10623a5fec3c3ef1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/projection.py:350"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28ef315ad73febd9", "level": "note", "message": {"text": "Possibly dead Python function: summarize_projection"}, "properties": {"repobilityId": "342b4b84298a1867", "scanner": "scanner-primary", "fingerprint": "28ef315ad73febd9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/projection.py:386"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-295693f2df57573b", "level": "note", "message": {"text": "Possibly dead Python function: select_prior"}, "properties": {"repobilityId": "f2d8f5237625c140", "scanner": "scanner-primary", "fingerprint": "295693f2df57573b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/imitation.py:288"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a271161b95d7fe4f", "level": "note", "message": {"text": "Possibly dead Python function: prior_action_for_turn"}, "properties": {"repobilityId": "4346cfdc6f8da864", "scanner": "scanner-primary", "fingerprint": "a271161b95d7fe4f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/imitation.py:310"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7942762ef6b327bb", "level": "note", "message": {"text": "Possibly dead Python function: expected_unique_star_distribution"}, "properties": {"repobilityId": "027b1051437785c0", "scanner": "scanner-primary", "fingerprint": "7942762ef6b327bb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/spark_rates.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a6bb33f5b636a8a5", "level": "note", "message": {"text": "Possibly dead Python function: simulate_race"}, "properties": {"repobilityId": "45c8a1a42b02c3a4", "scanner": "scanner-primary", "fingerprint": "a6bb33f5b636a8a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/race_sim.py:295"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67603e9943113c1c", "level": "note", "message": {"text": "Possibly dead Python function: expect_attribute_profile_primary_key"}, "properties": {"repobilityId": "d9195291bb842e3e", "scanner": "scanner-primary", "fingerprint": "67603e9943113c1c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/presets.py:429"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11b4ef33f1ea9394", "level": "note", "message": {"text": "Possibly dead Python function: locate"}, "properties": {"repobilityId": "db07f02e3aa1e843", "scanner": "scanner-primary", "fingerprint": "11b4ef33f1ea9394", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/presets.py:1115"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b53fdd885b2c3f34", "level": "note", "message": {"text": "Possibly dead Python function: sort_key"}, "properties": {"repobilityId": "ac2a4181eae38738", "scanner": "scanner-primary", "fingerprint": "b53fdd885b2c3f34", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/career_simulator.py:987"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-caf2bf3666d77212", "level": "note", "message": {"text": "Possibly dead Python function: add_api_call"}, "properties": {"repobilityId": "e59bbbf3c0635407", "scanner": "scanner-primary", "fingerprint": "caf2bf3666d77212", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_bot/report.py:109"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f1e67394023e5d6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 docs/hakuraku_reference/hakuraku_bundle.js:10"}, "properties": {"repobilityId": "658b6db4778021dc", "scanner": "scanner-primary", "fingerprint": "5f1e67394023e5d6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f7025c7c381b8d07", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 public/app.js:7959"}, "properties": {"repobilityId": "da7e9841f48bb512", "scanner": "scanner-primary", "fingerprint": "f7025c7c381b8d07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-5fbd5806975777a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/app.js:10130"}, "properties": {"repobilityId": "700f424ad5e3784b", "scanner": "scanner-primary", "fingerprint": "5fbd5806975777a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbc34c885bbb13a0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in docs/hakuraku_reference/hakuraku_bundle.js:10"}, "properties": {"repobilityId": "df4ac7344cea5ae7", "scanner": "scanner-primary", "fingerprint": "fbc34c885bbb13a0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/hakuraku_reference/hakuraku_bundle.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-44711165e96e0035", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/hakuraku_reference/hakuraku_bundle.js:9"}, "properties": {"repobilityId": "0a0dff00759861ef", "scanner": "scanner-primary", "fingerprint": "44711165e96e0035", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/hakuraku_reference/hakuraku_bundle.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-b43f40c37507d374", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/app.js:593"}, "properties": {"repobilityId": "5192b9054ebe3f07", "scanner": "scanner-primary", "fingerprint": "b43f40c37507d374", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/app.js"}, "region": {"startLine": 593}}}]}, {"ruleId": "scanner-23e95066e38beb07", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in public/app.js:200"}, "properties": {"repobilityId": "b8fc67754e81dfcf", "scanner": "scanner-primary", "fingerprint": "23e95066e38beb07", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/app.js"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-9db3db72e67ce8bf", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in uma_api/client.py:774"}, "properties": {"repobilityId": "54d5000e8d58b327", "scanner": "scanner-primary", "fingerprint": "9db3db72e67ce8bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uma_api/client.py"}, "region": {"startLine": 774}}}]}, {"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-e35471cbd36b9437", "level": "note", "message": {"text": "Very large file: main.py (10833 lines)"}, "properties": {"repobilityId": "d28330f452f23706", "scanner": "scanner-primary", "fingerprint": "e35471cbd36b9437", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-35f88d2190036874", "level": "note", "message": {"text": "Very large file: tests/test_runner_recovery_smoke.py (2213 lines)"}, "properties": {"repobilityId": "e7a5cdf3f7ee0d81", "scanner": "scanner-primary", "fingerprint": "35f88d2190036874", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43aaae4854d2935b", "level": "note", "message": {"text": "Very large file: tests/test_loop_config_smoke.py (2306 lines)"}, "properties": {"repobilityId": "5770e1577992b9a6", "scanner": "scanner-primary", "fingerprint": "43aaae4854d2935b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-069aec4d6025275b", "level": "note", "message": {"text": "Very large file: tests/test_mant_decision_safeguards.py (1839 lines)"}, "properties": {"repobilityId": "a35130e0bb5f3369", "scanner": "scanner-primary", "fingerprint": "069aec4d6025275b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-47b781c31cba9c2f", "level": "note", "message": {"text": "Very large file: tests/test_learning_safeguards.py (2363 lines)"}, "properties": {"repobilityId": "f737411d7fc24de7", "scanner": "scanner-primary", "fingerprint": "47b781c31cba9c2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-561983c0d2fd938c", "level": "note", "message": {"text": "Very large file: tools/calibrate_deck.py (1217 lines)"}, "properties": {"repobilityId": "5052af7fc57473a0", "scanner": "scanner-primary", "fingerprint": "561983c0d2fd938c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c6ef300d677edc6", "level": "note", "message": {"text": "Very large file: career_bot/races.py (1309 lines)"}, "properties": {"repobilityId": "79b9de89de4c3398", "scanner": "scanner-primary", "fingerprint": "3c6ef300d677edc6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07c0111a705f23fe", "level": "note", "message": {"text": "Very large file: career_bot/skills.py (2885 lines)"}, "properties": {"repobilityId": "d2edb0e37ee8d14a", "scanner": "scanner-primary", "fingerprint": "07c0111a705f23fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f25bf53518650e7d", "level": "note", "message": {"text": "Very large file: career_bot/learning.py (7783 lines)"}, "properties": {"repobilityId": "10251322e28661e0", "scanner": "scanner-primary", "fingerprint": "f25bf53518650e7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f4d7aa62e7340394", "level": "note", "message": {"text": "Very large file: career_bot/items.py (2685 lines)"}, "properties": {"repobilityId": "c145a20a83c21205", "scanner": "scanner-primary", "fingerprint": "f4d7aa62e7340394", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6c68f5f3a139790e", "level": "note", "message": {"text": "Very large file: career_bot/sim_observations.py (1640 lines)"}, "properties": {"repobilityId": "2621c97897f11433", "scanner": "scanner-primary", "fingerprint": "6c68f5f3a139790e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2511caef69020f7f", "level": "note", "message": {"text": "Very large file: career_bot/manual_recorder.py (1211 lines)"}, "properties": {"repobilityId": "bbf84afc87062269", "scanner": "scanner-primary", "fingerprint": "2511caef69020f7f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98e4e57d75bb5283", "level": "note", "message": {"text": "Very large file: career_bot/runner.py (5690 lines)"}, "properties": {"repobilityId": "7e1a9f99cd3e6d60", "scanner": "scanner-primary", "fingerprint": "98e4e57d75bb5283", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1363176eb3ef425", "level": "note", "message": {"text": "Very large file: career_bot/presets.py (1170 lines)"}, "properties": {"repobilityId": "3857b769823faa55", "scanner": "scanner-primary", "fingerprint": "c1363176eb3ef425", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3119ea71e2f1d830", "level": "note", "message": {"text": "Very large file: career_bot/career_simulator.py (9304 lines)"}, "properties": {"repobilityId": "203cd52a7f5bdd42", "scanner": "scanner-primary", "fingerprint": "3119ea71e2f1d830", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ed474dd0cf22f25b", "level": "note", "message": {"text": "Very large file: career_bot/scenarios/mant.py (5720 lines)"}, "properties": {"repobilityId": "6e928cfbbbd5a838", "scanner": "scanner-primary", "fingerprint": "ed474dd0cf22f25b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-342af974d60b4837", "level": "note", "message": {"text": "Very large file: public/app.js (10162 lines)"}, "properties": {"repobilityId": "ce805b07178bda03", "scanner": "scanner-primary", "fingerprint": "342af974d60b4837", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ead66edda6cab27a", "level": "note", "message": {"text": "Very large file: uma_api/client.py (2183 lines)"}, "properties": {"repobilityId": "4224bd0fc142f13a", "scanner": "scanner-primary", "fingerprint": "ead66edda6cab27a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "2adce1f4ce92b2b9", "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": "249e77e33ac952d6", "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": "b5558db27723243e", "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": "6b34968c80c3527f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "aaf6926145532e75", "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": "a0eff9f8c3e798c5", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ec3ff1a5fcadf808", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_planner_profile_v1` in main.py:5040"}, "properties": {"repobilityId": "adc683ab02b61a6e", "scanner": "scanner-primary", "fingerprint": "ec3ff1a5fcadf808", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-590e9278bbc2574e", "level": "none", "message": {"text": "Commented-code block (5 lines) in main.py:1894"}, "properties": {"repobilityId": "0c210bf88dd113e0", "scanner": "scanner-primary", "fingerprint": "590e9278bbc2574e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-644cfe2c54dc23df", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 main.py:5666"}, "properties": {"repobilityId": "db28871b62bfcf11", "scanner": "scanner-primary", "fingerprint": "644cfe2c54dc23df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00bafd0a47398234", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_shop_decision_state_v1` in tests/test_shop_refresh_decision_state.py:41"}, "properties": {"repobilityId": "088facb8b8c910d1", "scanner": "scanner-primary", "fingerprint": "00bafd0a47398234", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d778f35805c252c0", "level": "note", "message": {"text": "Legacy-named symbol `rejected_keep_old` in tests/test_policy_validation_escape_valve.py:33"}, "properties": {"repobilityId": "41da23c5598569d4", "scanner": "scanner-primary", "fingerprint": "d778f35805c252c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f435be581223234a", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_parent_memory_v1` in tests/test_dashboard_sync_smoke.py:187"}, "properties": {"repobilityId": "6a1f9d1f0ea9616f", "scanner": "scanner-primary", "fingerprint": "f435be581223234a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d9d3189da1175b84", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_estimate_score_record_weighting.py:259"}, "properties": {"repobilityId": "a348a490802e295b", "scanner": "scanner-primary", "fingerprint": "d9d3189da1175b84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ebe0de1fe990a12", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_race_style_overrides_v2` in tests/test_race_schedule_smoke.py:134"}, "properties": {"repobilityId": "6c1e222298158bb2", "scanner": "scanner-primary", "fingerprint": "0ebe0de1fe990a12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fac85b1306a7dba8", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_sim_shop_pool_counts.py:46"}, "properties": {"repobilityId": "ab5aea2bcc79fc63", "scanner": "scanner-primary", "fingerprint": "fac85b1306a7dba8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-738766a373dcaae1", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_real_race_snapshots_v1` in tests/test_real_race_snapshots_load.py:11"}, "properties": {"repobilityId": "9a4acd6d1bfb0426", "scanner": "scanner-primary", "fingerprint": "738766a373dcaae1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0d4b9f080a44e5d6", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_manual_recorder_smoke.py:106"}, "properties": {"repobilityId": "6aead9862d54c967", "scanner": "scanner-primary", "fingerprint": "0d4b9f080a44e5d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f84e4e88be039b5", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_training_policy_v1` in tests/test_weight_floor_clamps.py:88"}, "properties": {"repobilityId": "6169015376bd72b3", "scanner": "scanner-primary", "fingerprint": "4f84e4e88be039b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-624f532eea918ece", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_loop_config_smoke.py:230"}, "properties": {"repobilityId": "9b6e510a1c328e51", "scanner": "scanner-primary", "fingerprint": "624f532eea918ece", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0887d2f6478743ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_loop_config_smoke.py:1021"}, "properties": {"repobilityId": "3fec6379232a1b83", "scanner": "scanner-primary", "fingerprint": "0887d2f6478743ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0b2103f913aa2c4", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_hakuraku_race_v1` in tests/test_career_simulator.py:125"}, "properties": {"repobilityId": "9310003adb4b2323", "scanner": "scanner-primary", "fingerprint": "d0b2103f913aa2c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-95993a2ef65c1e3c", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_hachimi_manual_career_summary_v1` in tests/test_career_compare_smoke.py:14"}, "properties": {"repobilityId": "8762d3126fc695b0", "scanner": "scanner-primary", "fingerprint": "95993a2ef65c1e3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-28e347b7a7cbeead", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_future_turn_effects_v1` in tests/test_mant_decision_safeguards.py:220"}, "properties": {"repobilityId": "83a23dce0a308e8a", "scanner": "scanner-primary", "fingerprint": "28e347b7a7cbeead", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15a9348cd3fdc274", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_career_log_v1` in tests/test_report_slimming.py:47"}, "properties": {"repobilityId": "9e6d8c54beed1e6c", "scanner": "scanner-primary", "fingerprint": "15a9348cd3fdc274", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-28ffcbcf50a3534f", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_future_turn_effects_v1` in tests/test_learning_safeguards.py:649"}, "properties": {"repobilityId": "f5a2ef6973bebfdb", "scanner": "scanner-primary", "fingerprint": "28ffcbcf50a3534f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b481626402b9d6d8", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_error_snapshot_v2` in tests/test_runner_telemetry_smoke.py:200"}, "properties": {"repobilityId": "784f46a48884d8ae", "scanner": "scanner-primary", "fingerprint": "b481626402b9d6d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-49a5aa367620ed0a", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_real_shop_snapshots_v1` in tests/test_real_shop_snapshots_load.py:12"}, "properties": {"repobilityId": "20653988a71b5c65", "scanner": "scanner-primary", "fingerprint": "49a5aa367620ed0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d414f200ee1a6fa2", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in tests/test_shop_refresh_pools.py:17"}, "properties": {"repobilityId": "5c32e4411bb66817", "scanner": "scanner-primary", "fingerprint": "d414f200ee1a6fa2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-92012387fd34dd36", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_career_log_v1` in tests/test_sim_observations.py:19"}, "properties": {"repobilityId": "9d865ef9ff15376e", "scanner": "scanner-primary", "fingerprint": "92012387fd34dd36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a85dbb06129b0412", "level": "note", "message": {"text": "Legacy-named symbol `load_index_DUMP_old` in tests/test_storage_cleanup.py:23"}, "properties": {"repobilityId": "8c4045da8ba30dfc", "scanner": "scanner-primary", "fingerprint": "a85dbb06129b0412", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ec528c784c174773", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in docs/hakuraku_reference/hakuraku_bundle.js:9"}, "properties": {"repobilityId": "cc0385ac03246813", "scanner": "scanner-primary", "fingerprint": "ec528c784c174773", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-888f88b87fceeb57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/hakuraku_reference/hakuraku_bundle.js:2"}, "properties": {"repobilityId": "d57459bd8c237a07", "scanner": "scanner-primary", "fingerprint": "888f88b87fceeb57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4c9088a8c66a6ad6", "level": "note", "message": {"text": "Legacy-named symbol `include_legacy` in tools/build_sim_observations.py:32"}, "properties": {"repobilityId": "456fe2a4d36a7f6d", "scanner": "scanner-primary", "fingerprint": "4c9088a8c66a6ad6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-965548ce5ab9112c", "level": "note", "message": {"text": "Legacy-named symbol `_archive_legacy` in tools/split_legacy_preset.py:24"}, "properties": {"repobilityId": "983b5376e7b4cf63", "scanner": "scanner-primary", "fingerprint": "965548ce5ab9112c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e4d9a5e9569df34", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_sim_target_tuning_v1` in tools/tune_sim_targets.py:571"}, "properties": {"repobilityId": "6c2dff7390b40700", "scanner": "scanner-primary", "fingerprint": "9e4d9a5e9569df34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-903921bba76271b0", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_event_id_index_v1` in tools/build_event_id_index.py:375"}, "properties": {"repobilityId": "41ca3b570495b7c4", "scanner": "scanner-primary", "fingerprint": "903921bba76271b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-329a80978e7fadbf", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_real_training_snapshots_v1` in tools/extract_real_training_snapshots.py:402"}, "properties": {"repobilityId": "fbf4ea96b1f852e6", "scanner": "scanner-primary", "fingerprint": "329a80978e7fadbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-439d23b432f2ffbd", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_stat_friend_recreation_payloads_v1` in tools/learn_stat_friend_recreation_payloads.py:194"}, "properties": {"repobilityId": "966909cadb035fe9", "scanner": "scanner-primary", "fingerprint": "439d23b432f2ffbd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-afea7a9549284f94", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/learn_stat_friend_recreation_payloads.py:177"}, "properties": {"repobilityId": "621cce747c5dfed4", "scanner": "scanner-primary", "fingerprint": "afea7a9549284f94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b3b0402536fb1282", "level": "none", "message": {"text": "Commented-code block (8 lines) in tools/calibrate_deck.py:57"}, "properties": {"repobilityId": "6236c6913e72935e", "scanner": "scanner-primary", "fingerprint": "b3b0402536fb1282", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ab5c5cf50e8910d", "level": "note", "message": {"text": "Legacy-named symbol `include_legacy` in tools/extract_real_race_snapshots.py:288"}, "properties": {"repobilityId": "520950cfcaa29b8b", "scanner": "scanner-primary", "fingerprint": "1ab5c5cf50e8910d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b34c996ac59f48d5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/launch_dual_sweepy.py:45"}, "properties": {"repobilityId": "ddf7a1a3397f5884", "scanner": "scanner-primary", "fingerprint": "b34c996ac59f48d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-119e4fd99c00d8a8", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_sim_hakuraku_race_manifest_v1` in tools/run_simulator_sweep.py:71"}, "properties": {"repobilityId": "312da406499824f4", "scanner": "scanner-primary", "fingerprint": "119e4fd99c00d8a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58edbc99ab2996c0", "level": "note", "message": {"text": "Legacy-named symbol `include_legacy` in tools/extract_real_shop_snapshots.py:130"}, "properties": {"repobilityId": "7ea2c6625e00e723", "scanner": "scanner-primary", "fingerprint": "58edbc99ab2996c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2612f75b2b942ade", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_event_probability_model_v1` in tools/build_event_probability_model.py:234"}, "properties": {"repobilityId": "421072547d019a18", "scanner": "scanner-primary", "fingerprint": "2612f75b2b942ade", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ab0b72784d4c68df", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in tools/build_shop_refresh_pools.py:289"}, "properties": {"repobilityId": "c78eea9dccf0ffa1", "scanner": "scanner-primary", "fingerprint": "ab0b72784d4c68df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dc8dee9fb454c575", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_hakuraku_race_v1` in tools/export_hakuraku_races.py:753"}, "properties": {"repobilityId": "74ccd6c44b7aa188", "scanner": "scanner-primary", "fingerprint": "dc8dee9fb454c575", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf1f0ae6e76f7176", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/export_hakuraku_races.py:804"}, "properties": {"repobilityId": "56a8862f2f3a5e21", "scanner": "scanner-primary", "fingerprint": "bf1f0ae6e76f7176", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5034f75dc24c91e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 tools/export_hakuraku_races.py:633"}, "properties": {"repobilityId": "3d75795e8bb445cf", "scanner": "scanner-primary", "fingerprint": "e5034f75dc24c91e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9f951c887817fa5", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_baseline_metrics_v1` in tools/compute_baseline_metrics.py:252"}, "properties": {"repobilityId": "20089b9122f494b1", "scanner": "scanner-primary", "fingerprint": "c9f951c887817fa5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-20a185bd2f3e2e24", "level": "none", "message": {"text": "Commented-code block (12 lines) in tools/optimize_deck_policy.py:132"}, "properties": {"repobilityId": "4c90e29547035125", "scanner": "scanner-primary", "fingerprint": "20a185bd2f3e2e24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecdc746d4b62e5e3", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_parent_memory_v1` in career_bot/parent_memory.py:9"}, "properties": {"repobilityId": "d0337226be6201b3", "scanner": "scanner-primary", "fingerprint": "ecdc746d4b62e5e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-feb05cf2882f2cb5", "level": "none", "message": {"text": "Commented-code block (7 lines) in career_bot/parent_memory.py:12"}, "properties": {"repobilityId": "b8af4e2c4e3161f1", "scanner": "scanner-primary", "fingerprint": "feb05cf2882f2cb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6f933ee3bfc315c", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_skill_failures_v1` in career_bot/skills.py:466"}, "properties": {"repobilityId": "9835c8987ca6e043", "scanner": "scanner-primary", "fingerprint": "c6f933ee3bfc315c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-429ffc99c361fa1e", "level": "none", "message": {"text": "Commented-code block (6 lines) in career_bot/skills.py:262"}, "properties": {"repobilityId": "91f34954561cd766", "scanner": "scanner-primary", "fingerprint": "429ffc99c361fa1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b034e4058785f46c", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_public_career_record_v1` in career_bot/profile_dataset.py:17"}, "properties": {"repobilityId": "c844f16e47493f0e", "scanner": "scanner-primary", "fingerprint": "b034e4058785f46c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4712731bdd1a1276", "level": "none", "message": {"text": "Commented-code block (8 lines) in career_bot/postmortem_feedback.py:47"}, "properties": {"repobilityId": "096e9ae6e93c509c", "scanner": "scanner-primary", "fingerprint": "4712731bdd1a1276", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db5c7a924b5f99e3", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_training_policy_v1` in career_bot/training_policy.py:563"}, "properties": {"repobilityId": "0bfc4037705fb292", "scanner": "scanner-primary", "fingerprint": "db5c7a924b5f99e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-00ae573d1c7ede8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/training_policy.py:76"}, "properties": {"repobilityId": "c24523db9623aa39", "scanner": "scanner-primary", "fingerprint": "00ae573d1c7ede8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a24ab072c5298b94", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_career_log_v1` in career_bot/learning.py:52"}, "properties": {"repobilityId": "29fb3d4a3ab87d39", "scanner": "scanner-primary", "fingerprint": "a24ab072c5298b94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-04df21207c1cd880", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/learning.py:78"}, "properties": {"repobilityId": "3323d0fced091ffe", "scanner": "scanner-primary", "fingerprint": "04df21207c1cd880", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0ca1dab95376935", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_manual_vs_bot_comparison_v1` in career_bot/career_compare.py:518"}, "properties": {"repobilityId": "734d2d0a5918db77", "scanner": "scanner-primary", "fingerprint": "a0ca1dab95376935", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-90727dce88823949", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_team_trials_dataset_v1` in career_bot/team_trials_dataset.py:24"}, "properties": {"repobilityId": "00c04227a96a3b10", "scanner": "scanner-primary", "fingerprint": "90727dce88823949", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-80d8eaff8b464483", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/unique_race_modifiers.py:59"}, "properties": {"repobilityId": "c14c4c71f5929666", "scanner": "scanner-primary", "fingerprint": "80d8eaff8b464483", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90851e80aafeea68", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_manual_race_data_v1` in career_bot/manual_race_data.py:51"}, "properties": {"repobilityId": "50829048c8884edb", "scanner": "scanner-primary", "fingerprint": "90851e80aafeea68", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-216ca2f929cb8e5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/manual_race_data.py:265"}, "properties": {"repobilityId": "dda922c3d0b06f11", "scanner": "scanner-primary", "fingerprint": "216ca2f929cb8e5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06fbf69afd8b5ec2", "level": "none", "message": {"text": "Commented-code block (7 lines) in career_bot/items.py:317"}, "properties": {"repobilityId": "515c62bffdfc4ddd", "scanner": "scanner-primary", "fingerprint": "06fbf69afd8b5ec2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39e17b11ebf6e861", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_sim_observation_v1` in career_bot/sim_observations.py:26"}, "properties": {"repobilityId": "b2ecc55c796d5585", "scanner": "scanner-primary", "fingerprint": "39e17b11ebf6e861", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3c58e52b44ca3efa", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_imitation_archive_v1` in career_bot/imitation.py:28"}, "properties": {"repobilityId": "8d024008f4f158de", "scanner": "scanner-primary", "fingerprint": "3c58e52b44ca3efa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-79feacc6ebdd1b5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/imitation.py:244"}, "properties": {"repobilityId": "5876b558154fdaa1", "scanner": "scanner-primary", "fingerprint": "79feacc6ebdd1b5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-833aa663953ea27b", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_shop_refresh_pools_v1` in career_bot/shop_refresh.py:25"}, "properties": {"repobilityId": "f79cc23b9cd51f4b", "scanner": "scanner-primary", "fingerprint": "833aa663953ea27b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c6b562697754084a", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_api_discovery_v1` in career_bot/api_discovery.py:19"}, "properties": {"repobilityId": "8089b257e8e5a693", "scanner": "scanner-primary", "fingerprint": "c6b562697754084a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1a606e887d99c405", "level": "none", "message": {"text": "Commented-code block (8 lines) in career_bot/race_postmortem.py:33"}, "properties": {"repobilityId": "01c22ae5e2513ba0", "scanner": "scanner-primary", "fingerprint": "1a606e887d99c405", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-315ebd1fa2c658b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/manual_recorder.py:517"}, "properties": {"repobilityId": "beed218cc532aa84", "scanner": "scanner-primary", "fingerprint": "315ebd1fa2c658b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-882e0836233b794e", "level": "none", "message": {"text": "Commented-code block (10 lines) in career_bot/hyperparameter_tuner.py:41"}, "properties": {"repobilityId": "36e510d829d7c87a", "scanner": "scanner-primary", "fingerprint": "882e0836233b794e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-960230c0adf0cbe7", "level": "note", "message": {"text": "Legacy-named symbol `too_old` in career_bot/runner.py:1080"}, "properties": {"repobilityId": "12a6d626ce3cd944", "scanner": "scanner-primary", "fingerprint": "960230c0adf0cbe7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-583603e35cf59b26", "level": "none", "message": {"text": "Commented-code block (6 lines) in career_bot/runner.py:303"}, "properties": {"repobilityId": "107f1874a92d5fee", "scanner": "scanner-primary", "fingerprint": "583603e35cf59b26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3752e6e79a148467", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 career_bot/runner.py:1128"}, "properties": {"repobilityId": "fff75ece8386ef41", "scanner": "scanner-primary", "fingerprint": "3752e6e79a148467", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b02bd09f8a17c1fe", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_deck_policy_cache_v1` in career_bot/deck_policy_cache.py:25"}, "properties": {"repobilityId": "78e5af10cf857a5e", "scanner": "scanner-primary", "fingerprint": "b02bd09f8a17c1fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d0656e735fad00e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/presets.py:662"}, "properties": {"repobilityId": "81b0fb16e94b119d", "scanner": "scanner-primary", "fingerprint": "d0656e735fad00e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b62c9dd11eee22c", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_race_thresholds_v1` in career_bot/race_thresholds.py:38"}, "properties": {"repobilityId": "bb2c353b70903dd6", "scanner": "scanner-primary", "fingerprint": "7b62c9dd11eee22c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85d004934b80ba5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in career_bot/race_thresholds.py:190"}, "properties": {"repobilityId": "031c6f22794822d2", "scanner": "scanner-primary", "fingerprint": "85d004934b80ba5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a0f41cfea535824", "level": "none", "message": {"text": "Commented-code block (6 lines) in career_bot/skill_profiles.py:68"}, "properties": {"repobilityId": "3f4d11ae053156ca", "scanner": "scanner-primary", "fingerprint": "8a0f41cfea535824", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3fcec78e15d7bce", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_hakuraku_race_v1` in career_bot/career_simulator.py:8642"}, "properties": {"repobilityId": "32fb128a2f657f7e", "scanner": "scanner-primary", "fingerprint": "a3fcec78e15d7bce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f42f349e2b0c040", "level": "none", "message": {"text": "Commented-code block (7 lines) in career_bot/career_simulator.py:72"}, "properties": {"repobilityId": "043bfae78e9ed649", "scanner": "scanner-primary", "fingerprint": "5f42f349e2b0c040", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76125eab859daad7", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_team_trials_observation_v1` in career_bot/observed_profiles.py:16"}, "properties": {"repobilityId": "73c1dd7268971643", "scanner": "scanner-primary", "fingerprint": "76125eab859daad7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df77b32c0a31704e", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_deck_builder_v1` in career_bot/deck_advice.py:639"}, "properties": {"repobilityId": "a8647f1e924e7415", "scanner": "scanner-primary", "fingerprint": "df77b32c0a31704e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a82d105c0731b7ee", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_career_log_v1` in career_bot/report.py:15"}, "properties": {"repobilityId": "333112b75c143da4", "scanner": "scanner-primary", "fingerprint": "a82d105c0731b7ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-48499fd93b157ac0", "level": "none", "message": {"text": "Commented-code block (9 lines) in career_bot/report.py:199"}, "properties": {"repobilityId": "057e9d58aa12ca13", "scanner": "scanner-primary", "fingerprint": "48499fd93b157ac0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b36de4adff59bd5", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_daily_automation_v1` in career_bot/daily_tasks.py:476"}, "properties": {"repobilityId": "d53c712b981de587", "scanner": "scanner-primary", "fingerprint": "7b36de4adff59bd5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5b5e88db6b6474bb", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_trajectory_centroids_v1` in career_bot/career_trajectory_prediction.py:159"}, "properties": {"repobilityId": "0d47949aa0bea203", "scanner": "scanner-primary", "fingerprint": "5b5e88db6b6474bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-81aab7e7593fb434", "level": "note", "message": {"text": "Legacy-named symbol `sweepy_decision_understanding_v1` in career_bot/scenarios/mant.py:2513"}, "properties": {"repobilityId": "86969905f2bfe518", "scanner": "scanner-primary", "fingerprint": "81aab7e7593fb434", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ccf3267d4ef6282", "level": "none", "message": {"text": "Commented-code block (5 lines) in career_bot/scenarios/mant.py:89"}, "properties": {"repobilityId": "2f24cf7c9a27fdd5", "scanner": "scanner-primary", "fingerprint": "4ccf3267d4ef6282", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b834029a901bc54e", "level": "note", "message": {"text": "Legacy-named symbol `vet1Legacy` in public/app.js:2751"}, "properties": {"repobilityId": "35d9a99d64d01c8f", "scanner": "scanner-primary", "fingerprint": "b834029a901bc54e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b1bc1b1c3f9b8aff", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/app.js:3034"}, "properties": {"repobilityId": "32a93c51005625bd", "scanner": "scanner-primary", "fingerprint": "b1bc1b1c3f9b8aff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5406cef24181a65d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/app.js:672"}, "properties": {"repobilityId": "9bbd858410f499e9", "scanner": "scanner-primary", "fingerprint": "5406cef24181a65d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cdde598677f47d11", "level": "none", "message": {"text": "Commented-code block (6 lines) in uma_api/client.py:551"}, "properties": {"repobilityId": "784974758a255d27", "scanner": "scanner-primary", "fingerprint": "cdde598677f47d11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff71378e96cb9882", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 uma_api/client.py:750"}, "properties": {"repobilityId": "d297958a873aa048", "scanner": "scanner-primary", "fingerprint": "ff71378e96cb9882", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ebc6617fb5ae29b4", "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": "730fc0329a3bd499", "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": "679178bc977920f7", "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": "a9fe46a4a7e5ec37", "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": "db3b3c951dc9d8c7", "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": "7196bcb0473b7172", "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": "7fac79d142665e57", "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": "a88e72658fe64fa7", "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": "2e5de69be1666b4d", "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": "b3ef13739dc0048b", "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": "d0d747a7daf5035c", "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": "fb15afc2b7244b53", "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": "389ce448bad55ff8", "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": "ac99e1a9ef70ef00", "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": "fcd080b3bc1c2359", "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": "baea5bc2e8a76bb6", "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": "8631b900a159e006", "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": "1e57b55cc307be62", "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": "b2555fdeb8d9c6e5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "b384b5bdd9b4dd83", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0a0306e7564a8de0", "level": "warning", "message": {"text": "Frontend route `${I}` has no Link/navigate to it \u2014 docs/hakuraku_reference/hakuraku_bundle.js"}, "properties": {"repobilityId": "841549eeb32bd1d7", "scanner": "scanner-primary", "fingerprint": "0a0306e7564a8de0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fa8de26c198d1b51", "level": "warning", "message": {"text": "Frontend route `${I===` has no Link/navigate to it \u2014 docs/hakuraku_reference/hakuraku_bundle.js"}, "properties": {"repobilityId": "5aca8577a9788b22", "scanner": "scanner-primary", "fingerprint": "fa8de26c198d1b51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-09a5d92cd1597124", "level": "error", "message": {"text": "Dangling fetch: GET /data/gamedata.bin.gz (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "properties": {"repobilityId": "b8842a051623c739", "scanner": "scanner-primary", "fingerprint": "09a5d92cd1597124", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d3814afe719fd97", "level": "error", "message": {"text": "Dangling fetch: GET /data/umdb.binarypb.gz (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "properties": {"repobilityId": "d5eacc9d60298411", "scanner": "scanner-primary", "fingerprint": "1d3814afe719fd97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9514bd08420dcd1", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/session (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "properties": {"repobilityId": "e2c396e4c1e43374", "scanner": "scanner-primary", "fingerprint": "f9514bd08420dcd1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-423d29d2c1de8a42", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (docs/hakuraku_reference/hakuraku_bundle.js:13)"}, "properties": {"repobilityId": "24109d579d5a1cc8", "scanner": "scanner-primary", "fingerprint": "423d29d2c1de8a42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f08fd17e836b1886", "level": "error", "message": {"text": "Dangling fetch: GET /assets/data/uma_race_data.json (public/app.js:3951)"}, "properties": {"repobilityId": "b5a329f4e288703a", "scanner": "scanner-primary", "fingerprint": "f08fd17e836b1886", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6acf566faf4127b9", "level": "note", "message": {"text": "Unused endpoint: GET /api/settings/turn-delay"}, "properties": {"repobilityId": "c0a7bf7c1166d909", "scanner": "scanner-primary", "fingerprint": "6acf566faf4127b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec281ca5f4d1ba39", "level": "note", "message": {"text": "Unused endpoint: POST /api/settings/turn-delay"}, "properties": {"repobilityId": "b598f792b90d8f3b", "scanner": "scanner-primary", "fingerprint": "ec281ca5f4d1ba39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-544dad7d0e986506", "level": "note", "message": {"text": "Unused endpoint: GET /api/learning_session/current"}, "properties": {"repobilityId": "795d05342c3efef4", "scanner": "scanner-primary", "fingerprint": "544dad7d0e986506", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f2aff321511cfb06", "level": "note", "message": {"text": "Unused endpoint: POST /api/learning_session/declare"}, "properties": {"repobilityId": "ff1244fa67c72b2e", "scanner": "scanner-primary", "fingerprint": "f2aff321511cfb06", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14ec7ebb045aa09b", "level": "note", "message": {"text": "Unused endpoint: POST /api/learning_session/clear"}, "properties": {"repobilityId": "bd5fc052c5a1b667", "scanner": "scanner-primary", "fingerprint": "14ec7ebb045aa09b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-22db38f83101d9c9", "level": "note", "message": {"text": "Unused endpoint: GET /api/learning_session/popup_setting"}, "properties": {"repobilityId": "3d908685eccf3ba5", "scanner": "scanner-primary", "fingerprint": "22db38f83101d9c9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49c63594803f297e", "level": "note", "message": {"text": "Unused endpoint: POST /api/learning_session/popup_setting"}, "properties": {"repobilityId": "435e063c138475ef", "scanner": "scanner-primary", "fingerprint": "49c63594803f297e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b0895c98b6f7d6ae", "level": "note", "message": {"text": "Unused endpoint: GET /api/learning_session/pending_intent"}, "properties": {"repobilityId": "3e7bd67999318731", "scanner": "scanner-primary", "fingerprint": "b0895c98b6f7d6ae", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d2718037f4aa0795", "level": "note", "message": {"text": "Unused endpoint: GET /api/learning_session/presets"}, "properties": {"repobilityId": "2d5ac65217243033", "scanner": "scanner-primary", "fingerprint": "d2718037f4aa0795", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-58f6ebd5190c4270", "level": "note", "message": {"text": "Unused endpoint: POST /api/learning_session/presets"}, "properties": {"repobilityId": "50371fc5adee6c12", "scanner": "scanner-primary", "fingerprint": "58f6ebd5190c4270", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1173e8e6b23a0269", "level": "note", "message": {"text": "Unused endpoint: POST /api/learning_session/quick_declare"}, "properties": {"repobilityId": "ac8d5a62a45ed689", "scanner": "scanner-primary", "fingerprint": "1173e8e6b23a0269", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e4b516fa8cfe6d7d", "level": "note", "message": {"text": "Unused endpoint: POST /api/presets/save_races"}, "properties": {"repobilityId": "c420d352055de2e9", "scanner": "scanner-primary", "fingerprint": "e4b516fa8cfe6d7d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c85d2a00a57d9c2", "level": "note", "message": {"text": "Unused endpoint: POST /api/presets/save_race_plan"}, "properties": {"repobilityId": "a7e8388229121d1e", "scanner": "scanner-primary", "fingerprint": "4c85d2a00a57d9c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc868adcc910d5d5", "level": "note", "message": {"text": "Unused endpoint: POST /api/presets/save_skill_plan"}, "properties": {"repobilityId": "61d7eac2c867b2b4", "scanner": "scanner-primary", "fingerprint": "dc868adcc910d5d5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-63f358a7f783e69a", "level": "note", "message": {"text": "Unused endpoint: POST /api/presets/save_race_continue"}, "properties": {"repobilityId": "92b160e60ad8cd62", "scanner": "scanner-primary", "fingerprint": "63f358a7f783e69a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9776d2893644070b", "level": "note", "message": {"text": "Unused endpoint: GET /api/presets"}, "properties": {"repobilityId": "8b97e5edcce12c83", "scanner": "scanner-primary", "fingerprint": "9776d2893644070b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e3ed6ea3247a7cb", "level": "note", "message": {"text": "Unused endpoint: GET /api/calibrate/status"}, "properties": {"repobilityId": "3826165381176590", "scanner": "scanner-primary", "fingerprint": "6e3ed6ea3247a7cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f67e70e423f40f22", "level": "note", "message": {"text": "Unused endpoint: POST /api/calibrate"}, "properties": {"repobilityId": "f797897576dddcd4", "scanner": "scanner-primary", "fingerprint": "f67e70e423f40f22", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea76417905c7bb44", "level": "note", "message": {"text": "Unused endpoint: GET /api/planner_profiles"}, "properties": {"repobilityId": "d0cd01293e230118", "scanner": "scanner-primary", "fingerprint": "ea76417905c7bb44", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-05cebebea6d4daef", "level": "note", "message": {"text": "Unused endpoint: POST /api/planner_profiles/save"}, "properties": {"repobilityId": "2bc7b1fc8df87b87", "scanner": "scanner-primary", "fingerprint": "05cebebea6d4daef", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c37b75f9196c541a", "level": "note", "message": {"text": "Unused endpoint: POST /api/planner_profiles/load"}, "properties": {"repobilityId": "87f7dbe1e96dea4e", "scanner": "scanner-primary", "fingerprint": "c37b75f9196c541a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb5498c7bfa25de8", "level": "note", "message": {"text": "Unused endpoint: GET /api/decks/advice"}, "properties": {"repobilityId": "468ffe2947542acc", "scanner": "scanner-primary", "fingerprint": "fb5498c7bfa25de8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-528e070fb86e0361", "level": "note", "message": {"text": "Unused endpoint: POST /api/decks/save"}, "properties": {"repobilityId": "96df1e445db1d127", "scanner": "scanner-primary", "fingerprint": "528e070fb86e0361", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-474c7bb7a9ad0e2e", "level": "note", "message": {"text": "Unused endpoint: POST /api/presets"}, "properties": {"repobilityId": "02016ec1f8b733bf", "scanner": "scanner-primary", "fingerprint": "474c7bb7a9ad0e2e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd50404603ff7fad", "level": "note", "message": {"text": "Unused endpoint: POST /api/presets/delete"}, "properties": {"repobilityId": "d4f0dab00b71d49c", "scanner": "scanner-primary", "fingerprint": "cd50404603ff7fad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f51b30110d2e4f8e", "level": "note", "message": {"text": "Unused endpoint: GET /api/team_bundle/presets"}, "properties": {"repobilityId": "a31e0e50dda26a16", "scanner": "scanner-primary", "fingerprint": "f51b30110d2e4f8e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-45a376fdb03c2cd9", "level": "note", "message": {"text": "Unused endpoint: POST /api/team_bundle/presets"}, "properties": {"repobilityId": "8a183c7e662edd48", "scanner": "scanner-primary", "fingerprint": "45a376fdb03c2cd9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd4ddf08dd196f92", "level": "note", "message": {"text": "Unused endpoint: POST /api/team_bundle/presets/delete"}, "properties": {"repobilityId": "8dc695b4aed3db5e", "scanner": "scanner-primary", "fingerprint": "dd4ddf08dd196f92", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-394c792e4b43dcac", "level": "note", "message": {"text": "Unused endpoint: GET /admin/recent_runs/{account_id}"}, "properties": {"repobilityId": "5722b7fd8516ed78", "scanner": "scanner-primary", "fingerprint": "394c792e4b43dcac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-83061f361aa83322", "level": "note", "message": {"text": "Unused endpoint: GET /admin/corpus_health/{account_id}"}, "properties": {"repobilityId": "b1a63b6b31f702d4", "scanner": "scanner-primary", "fingerprint": "83061f361aa83322", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-200ab2e98a288506", "level": "note", "message": {"text": "Unused endpoint: POST /api/login"}, "properties": {"repobilityId": "c99cb618060f0d87", "scanner": "scanner-primary", "fingerprint": "200ab2e98a288506", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6b0e7f5976711316", "level": "note", "message": {"text": "Unused endpoint: GET /api/session"}, "properties": {"repobilityId": "ea15a17e7bc8e45b", "scanner": "scanner-primary", "fingerprint": "6b0e7f5976711316", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5261cfc252d20b0", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/login_reusable"}, "properties": {"repobilityId": "78d8e75125e5cf32", "scanner": "scanner-primary", "fingerprint": "a5261cfc252d20b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a29d16f9be80235", "level": "note", "message": {"text": "Unused endpoint: POST /api/dashboard/refresh"}, "properties": {"repobilityId": "50d37b88a8f01090", "scanner": "scanner-primary", "fingerprint": "7a29d16f9be80235", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e0e407026680060f", "level": "note", "message": {"text": "Unused endpoint: GET /api/dailies/status"}, "properties": {"repobilityId": "7b986b71c398f901", "scanner": "scanner-primary", "fingerprint": "e0e407026680060f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eafb97f4b07ede1f", "level": "note", "message": {"text": "Unused endpoint: POST /api/dailies/run"}, "properties": {"repobilityId": "f38296601aa717be", "scanner": "scanner-primary", "fingerprint": "eafb97f4b07ede1f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc4373e83a0ed566", "level": "note", "message": {"text": "Unused endpoint: POST /api/supports/limit_break_all"}, "properties": {"repobilityId": "285d7d836e5ca6a2", "scanner": "scanner-primary", "fingerprint": "dc4373e83a0ed566", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-57b684b78fddb3d3", "level": "note", "message": {"text": "Unused endpoint: POST /api/selection"}, "properties": {"repobilityId": "8323443fd45f38b5", "scanner": "scanner-primary", "fingerprint": "57b684b78fddb3d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49ac19bb61ef30a3", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/refresh"}, "properties": {"repobilityId": "4f9b25183a02bc57", "scanner": "scanner-primary", "fingerprint": "49ac19bb61ef30a3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a10936f69cf3bbb4", "level": "note", "message": {"text": "Unused endpoint: POST /api/logout"}, "properties": {"repobilityId": "ce75fb971fdc465f", "scanner": "scanner-primary", "fingerprint": "a10936f69cf3bbb4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4fe351c6d3263d64", "level": "note", "message": {"text": "Unused endpoint: POST /api/career/start"}, "properties": {"repobilityId": "9fe47738b253dfa3", "scanner": "scanner-primary", "fingerprint": "4fe351c6d3263d64", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b00565a3cf7b7d78", "level": "note", "message": {"text": "Unused endpoint: POST /api/career/run/preflight"}, "properties": {"repobilityId": "b9765f0bb95ce864", "scanner": "scanner-primary", "fingerprint": "b00565a3cf7b7d78", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0ee6f4633958059e", "level": "note", "message": {"text": "Unused endpoint: POST /api/career/run"}, "properties": {"repobilityId": "7b82c38b9c988427", "scanner": "scanner-primary", "fingerprint": "0ee6f4633958059e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2beef02058404443", "level": "note", "message": {"text": "Unused endpoint: GET /api/career/runner"}, "properties": {"repobilityId": "c5be60b46fbfa67f", "scanner": "scanner-primary", "fingerprint": "2beef02058404443", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b88b5da79306f1b6", "level": "note", "message": {"text": "Unused endpoint: POST /api/career/runner/stop"}, "properties": {"repobilityId": "ade5c1d680ce8d20", "scanner": "scanner-primary", "fingerprint": "b88b5da79306f1b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f4474990a9273b25", "level": "note", "message": {"text": "Unused endpoint: GET /api/debug/pre_single_mode_dump"}, "properties": {"repobilityId": "6fa3857448274ac2", "scanner": "scanner-primary", "fingerprint": "f4474990a9273b25", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6db8df5a6bba6ef2", "level": "note", "message": {"text": "Unused endpoint: POST /api/api_discovery/start"}, "properties": {"repobilityId": "c6865650767f3560", "scanner": "scanner-primary", "fingerprint": "6db8df5a6bba6ef2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb63d40d566fe5fb", "level": "note", "message": {"text": "Unused endpoint: POST /api/api_discovery/stop"}, "properties": {"repobilityId": "fbe134538a22bcda", "scanner": "scanner-primary", "fingerprint": "fb63d40d566fe5fb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c227021ac805b732", "level": "note", "message": {"text": "Unused endpoint: GET /api/api_discovery/status"}, "properties": {"repobilityId": "4feee3e72ddac481", "scanner": "scanner-primary", "fingerprint": "c227021ac805b732", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56f7652e57035342", "level": "note", "message": {"text": "Unused endpoint: GET /api/api_discovery/captures"}, "properties": {"repobilityId": "1cd9117553557222", "scanner": "scanner-primary", "fingerprint": "56f7652e57035342", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}