{"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-42dc722a197157d9", "name": "Possibly dead Python function: clear_active_data_dir", "shortDescription": {"text": "Possibly dead Python function: clear_active_data_dir"}, "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-9955742ed1de0299", "name": "Possibly dead Python function: review_sent_indicator", "shortDescription": {"text": "Possibly dead Python function: review_sent_indicator"}, "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-31661eb0ef2d7d1b", "name": "Possibly dead Python function: dropEvent", "shortDescription": {"text": "Possibly dead Python function: dropEvent"}, "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-7f042b9d4cac978d", "name": "Possibly dead Python function: work", "shortDescription": {"text": "Possibly dead Python function: work"}, "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-3e6840fc8a755a60", "name": "Possibly dead Python function: paintEvent", "shortDescription": {"text": "Possibly dead Python function: paintEvent"}, "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-ba6cd2cb10aa1471", "name": "Possibly dead Python function: cb", "shortDescription": {"text": "Possibly dead Python function: cb"}, "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-9a5bcc003251e607", "name": "Possibly dead Python function: predicate", "shortDescription": {"text": "Possibly dead Python function: predicate"}, "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-fad6b654a8cc3982", "name": "Possibly dead Python function: paintEvent", "shortDescription": {"text": "Possibly dead Python function: paintEvent"}, "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-f6d5555f85a3a344", "name": "Possibly dead Python function: work", "shortDescription": {"text": "Possibly dead Python function: work"}, "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-8aee92d30b29bee9", "name": "Possibly dead Python function: highlightBlock", "shortDescription": {"text": "Possibly dead Python function: highlightBlock"}, "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-27278ae6c02f4222", "name": "Possibly dead Python function: contextMenuEvent", "shortDescription": {"text": "Possibly dead Python function: contextMenuEvent"}, "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-8f04ff71e8b87db3", "name": "Possibly dead Python function: set_last_stag_import_dir", "shortDescription": {"text": "Possibly dead Python function: set_last_stag_import_dir"}, "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-73ce300d4c1f8ac2", "name": "Possibly dead Python function: list_academic_years", "shortDescription": {"text": "Possibly dead Python function: list_academic_years"}, "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-17ace812c2c4f7ee", "name": "Possibly dead Python function: theses_by_year_and_type", "shortDescription": {"text": "Possibly dead Python function: theses_by_year_and_type"}, "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-a8235eea9bcd5ad5", "name": "Possibly dead Python function: upcoming_dates_all_years", "shortDescription": {"text": "Possibly dead Python function: upcoming_dates_all_years"}, "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-07359ebb457d5458", "name": "Possibly dead Python function: default_template_specs", "shortDescription": {"text": "Possibly dead Python function: default_template_specs"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-411677b69e302b9f", "name": "Possibly dead Python function: generate_review_from_template", "shortDescription": {"text": "Possibly dead Python function: generate_review_from_template"}, "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-890e2c46a5b553eb", "name": "Possibly dead Python function: delete_review", "shortDescription": {"text": "Possibly dead Python function: delete_review"}, "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-7ed9806ee603e1d4", "name": "Possibly dead Python function: upsert_committee", "shortDescription": {"text": "Possibly dead Python function: upsert_committee"}, "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-a0d5e2b4e03f1145", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "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-d92cd349572f540f", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "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-2a495b9324cf9b5c", "name": "Possibly dead Python function: download_file", "shortDescription": {"text": "Possibly dead Python function: download_file"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-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-01d16545f17e2b87", "name": "Very large file: src/bpdpmanager/i18n/en.py (1243 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/i18n/en.py (1243 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-2285c9554e273a7e", "name": "Very large file: src/bpdpmanager/ui/manage_dialogs.py (1290 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/manage_dialogs.py (1290 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-b5ee5d4bcecff621", "name": "Very large file: src/bpdpmanager/ui/theses_tree.py (1223 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/theses_tree.py (1223 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-284361eea2ef8052", "name": "Very large file: src/bpdpmanager/ui/main_window.py (2431 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/main_window.py (2431 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-4919074ee38b1f7e", "name": "Very large file: src/bpdpmanager/ui/komise_tab.py (1914 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/komise_tab.py (1914 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-f15b9bb30e61c7a1", "name": "Very large file: src/bpdpmanager/ui/thesis_detail.py (1746 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/thesis_detail.py (1746 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-43c05c8a4457009e", "name": "Very large file: src/bpdpmanager/ui/stag_import_dialog.py (3576 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/stag_import_dialog.py (3576 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-c5b02583808bab1e", "name": "Very large file: src/bpdpmanager/ui/review_templates_dialog.py (1216 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/ui/review_templates_dialog.py (1216 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-88cd3b8c9b74e54a", "name": "Very large file: src/bpdpmanager/services/thesis_service.py (3711 lines)", "shortDescription": {"text": "Very large file: src/bpdpmanager/services/thesis_service.py (3711 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 8 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 14 placeholder/mock markers across 4 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86454eb399d3c30c", "name": "Legacy-named symbol `only_old` in tests/test_komise_stats.py:323", "shortDescription": {"text": "Legacy-named symbol `only_old` in tests/test_komise_stats.py:323"}, "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-9f6ef863680e406e", "name": "Legacy-named symbol `test_appendix_generic_name_falls_back_to_v2` in tests/test_file_naming.py:64", "shortDescription": {"text": "Legacy-named symbol `test_appendix_generic_name_falls_back_to_v2` in tests/test_file_naming.py:64"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d663dc046b3c365", "name": "Legacy-named symbol `test_cleanup_supervisor_titles_also_fixes_opposing_copy` in tests/test_name_titles.py:63", "shortDescription": {"text": "Legacy-named symbol `test_cleanup_supervisor_titles_also_fixes_opposing_copy` in tests/test_name_titles.py:63"}, "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-422fe786c7ec9a42", "name": "Legacy-named symbol `op_old` in tests/test_send_reviews_dialog.py:103", "shortDescription": {"text": "Legacy-named symbol `op_old` in tests/test_send_reviews_dialog.py:103"}, "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-e6a9413fff6bdc34", "name": "Legacy-named symbol `test_backup_now_creates_manual_backup` in tests/test_backup_now.py:27", "shortDescription": {"text": "Legacy-named symbol `test_backup_now_creates_manual_backup` in tests/test_backup_now.py:27"}, "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-7e3f00ae3606038a", "name": "Legacy-named symbol `create_backup` in tests/test_import_revert.py:29", "shortDescription": {"text": "Legacy-named symbol `create_backup` in tests/test_import_revert.py:29"}, "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-f522eeffb6f9e6ca", "name": "Commented-code block (25 lines) in src/bpdpmanager/config.py:8", "shortDescription": {"text": "Commented-code block (25 lines) in src/bpdpmanager/config.py:8"}, "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-f2449bae1af9ab13", "name": "Commented-code block (7 lines) in src/bpdpmanager/app.py:98", "shortDescription": {"text": "Commented-code block (7 lines) in src/bpdpmanager/app.py:98"}, "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-1250888d5991b1c8", "name": "Commented-code block (8 lines) in src/bpdpmanager/__main__.py:8", "shortDescription": {"text": "Commented-code block (8 lines) in src/bpdpmanager/__main__.py:8"}, "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-3aa2d9a60b354ffd", "name": "Commented-code block (5 lines) in src/bpdpmanager/models/thesis.py:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/bpdpmanager/models/thesis.py:24"}, "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-867179dd91289139", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/_os_actions.py:40", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/_os_actions.py:40"}, "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-bec0f7c843b7429a", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_sync_dialog.py:553", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_sync_dialog.py:553"}, "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-68ed94cdbb3bc332", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_consistency_dialog.py:325", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_consistency_dialog.py:325"}, "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-8b6b28ad146521f2", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/main_window.py:1764", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/main_window.py:1764"}, "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-542035d9cec20066", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/send_file_dialog.py:42", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/send_file_dialog.py:42"}, "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-616ef4b66e3be6db", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/profile_export_dialog.py:660", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/profile_export_dialog.py:660"}, "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-74c023d02608d50e", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/send_reviews_dialog.py:89", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/send_reviews_dialog.py:89"}, "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-2d6a66a78d6d544b", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/defense_reclassify_dialog.py:228", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/defense_reclassify_dialog.py:228"}, "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-d001ebe0e0542ff1", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/harmonogram_tab.py:284", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/harmonogram_tab.py:284"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c52a96fc674e7d9", "name": "Legacy-named symbol `_make_backup` in src/bpdpmanager/ui/swapped_docs_dialog.py:148", "shortDescription": {"text": "Legacy-named symbol `_make_backup` in src/bpdpmanager/ui/swapped_docs_dialog.py:148"}, "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-b7fb4fbb2352d218", "name": "Legacy-named symbol `title_cs_with_copy` in src/bpdpmanager/ui/thesis_detail.py:1015", "shortDescription": {"text": "Legacy-named symbol `title_cs_with_copy` in src/bpdpmanager/ui/thesis_detail.py:1015"}, "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-cc40efd53e8ddb56", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/profile_manage_dialog.py:292", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/profile_manage_dialog.py:292"}, "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-34701313cd9dece0", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_import_dialog.py:1363", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_import_dialog.py:1363"}, "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-a83dce5d76bc1fcd", "name": "Commented-code block (5 lines) in src/bpdpmanager/ui/stag_import_dialog.py:710", "shortDescription": {"text": "Commented-code block (5 lines) in src/bpdpmanager/ui/stag_import_dialog.py:710"}, "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-a097a1cb413d74ab", "name": "Legacy-named symbol `btn_legacy` in src/bpdpmanager/ui/welcome_dialog.py:74", "shortDescription": {"text": "Legacy-named symbol `btn_legacy` in src/bpdpmanager/ui/welcome_dialog.py:74"}, "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-71eccc8c0a5100b5", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/backup_dialog.py:132", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/backup_dialog.py:132"}, "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-3af052948deedea8", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/backup_dialog.py:178", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/backup_dialog.py:178"}, "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-adb591742b647ed7", "name": "Legacy-named symbol `chk_show_old` in src/bpdpmanager/ui/widgets/documents_widget.py:104", "shortDescription": {"text": "Legacy-named symbol `chk_show_old` in src/bpdpmanager/ui/widgets/documents_widget.py:104"}, "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-08fe0a322ef9eb42", "name": "Legacy-named symbol `import_legacy` in src/bpdpmanager/services/profile_manager.py:128", "shortDescription": {"text": "Legacy-named symbol `import_legacy` in src/bpdpmanager/services/profile_manager.py:128"}, "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-816eb4d8aa2ad3eb", "name": "Legacy-named symbol `model_copy` in src/bpdpmanager/services/thesis_service.py:1995", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/bpdpmanager/services/thesis_service.py:1995"}, "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-23b9bcee9c6b3e6a", "name": "Commented-code block (5 lines) in src/bpdpmanager/services/thesis_service.py:1254", "shortDescription": {"text": "Commented-code block (5 lines) in src/bpdpmanager/services/thesis_service.py:1254"}, "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-07fb035cf19869a9", "name": "Legacy-named symbol `model_copy` in src/bpdpmanager/services/thesis_export.py:361", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/bpdpmanager/services/thesis_export.py:361"}, "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-c09c03ce51c0aac5", "name": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/services/update_checker.py:150", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/services/update_checker.py:150"}, "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-6e0c1bc8835d4d89", "name": "Commented-code block (5 lines) in src/bpdpmanager/services/myq_client.py:288", "shortDescription": {"text": "Commented-code block (5 lines) in src/bpdpmanager/services/myq_client.py:288"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e238e70804e7cdb", "name": "Commented-code block (5 lines) in src/bpdpmanager/services/xlsx_pdf_polish.py:105", "shortDescription": {"text": "Commented-code block (5 lines) in src/bpdpmanager/services/xlsx_pdf_polish.py:105"}, "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-95035ca753115eb3", "name": "Commented-code block (6 lines) in src/bpdpmanager/services/review_pdf.py:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/bpdpmanager/services/review_pdf.py:19"}, "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-1620a9bb775d154d", "name": "Commented-code block (6 lines) in src/bpdpmanager/services/komise_parser.py:340", "shortDescription": {"text": "Commented-code block (6 lines) in src/bpdpmanager/services/komise_parser.py:340"}, "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-eb8a847f1f0a2cc7", "name": "Commented-code block (8 lines) in src/bpdpmanager/services/stag_api.py:87", "shortDescription": {"text": "Commented-code block (8 lines) in src/bpdpmanager/services/stag_api.py:87"}, "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-c15812959bfa3b8b", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/services/backup_manager.py:72", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/services/backup_manager.py:72"}, "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-a76e8042f499ad24", "name": "Legacy-named symbol `create_backup` in src/bpdpmanager/storage/json_repository.py:70", "shortDescription": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/storage/json_repository.py:70"}, "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-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/bpdpmanager/models/enums.py:label, src/bpdpmanager/models/enums.py:label, src/bpdpmanager/models/enums.py:label, src/bpdpmanager/models/enums.py:label\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/bpdpmanager/models/enums.py:color, src/bpdpmanager/models/enums.py:color\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:\nsrc/bpdpmanager/ui/stag_check.py:start, src/bpdpmanager/ui/stag_check.py:start, src/bpdpmanager/ui/stag_check.py:start, src/bpdpmanager/ui/stag_check.py:start\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:\nsrc/bpdpmanager/services/thesis_service.py:find_duplicate_appendices, src/bpdpmanager/services/thesis_service.py:find, src/bpdpmanager/services/thesis_service.py:find\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18729"}, "properties": {"repository": "Safronus/bpdp-manager", "repoUrl": "https://github.com/Safronus/bpdp-manager", "branch": "main"}, "results": [{"ruleId": "scanner-42dc722a197157d9", "level": "note", "message": {"text": "Possibly dead Python function: clear_active_data_dir"}, "properties": {"repobilityId": "c8bcd9b181218f75", "scanner": "scanner-primary", "fingerprint": "42dc722a197157d9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/config.py:82"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9955742ed1de0299", "level": "note", "message": {"text": "Possibly dead Python function: review_sent_indicator"}, "properties": {"repobilityId": "4b9720b741ed19cc", "scanner": "scanner-primary", "fingerprint": "9955742ed1de0299", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/models/enums.py:220"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-31661eb0ef2d7d1b", "level": "note", "message": {"text": "Possibly dead Python function: dropEvent"}, "properties": {"repobilityId": "357965e641e9f054", "scanner": "scanner-primary", "fingerprint": "31661eb0ef2d7d1b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/manage_dialogs.py:125"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f042b9d4cac978d", "level": "note", "message": {"text": "Possibly dead Python function: work"}, "properties": {"repobilityId": "c5b0e9acf413d08f", "scanner": "scanner-primary", "fingerprint": "7f042b9d4cac978d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/stag_sync_dialog.py:318"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e6840fc8a755a60", "level": "note", "message": {"text": "Possibly dead Python function: paintEvent"}, "properties": {"repobilityId": "1222c83b9204300b", "scanner": "scanner-primary", "fingerprint": "3e6840fc8a755a60", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/stats_tab.py:140"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ba6cd2cb10aa1471", "level": "note", "message": {"text": "Possibly dead Python function: cb"}, "properties": {"repobilityId": "c388730a0badedf1", "scanner": "scanner-primary", "fingerprint": "ba6cd2cb10aa1471", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/stag_consistency_dialog.py:415"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a5bcc003251e607", "level": "note", "message": {"text": "Possibly dead Python function: predicate"}, "properties": {"repobilityId": "497d2d1f5cb6c125", "scanner": "scanner-primary", "fingerprint": "9a5bcc003251e607", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/main_window.py:319"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fad6b654a8cc3982", "level": "note", "message": {"text": "Possibly dead Python function: paintEvent"}, "properties": {"repobilityId": "1222c83b9204300b", "scanner": "scanner-primary", "fingerprint": "fad6b654a8cc3982", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/komise_tab.py:1567"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6d5555f85a3a344", "level": "note", "message": {"text": "Possibly dead Python function: work"}, "properties": {"repobilityId": "c5b0e9acf413d08f", "scanner": "scanner-primary", "fingerprint": "f6d5555f85a3a344", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/defense_reclassify_dialog.py:145"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8aee92d30b29bee9", "level": "note", "message": {"text": "Possibly dead Python function: highlightBlock"}, "properties": {"repobilityId": "61c062f6734d0254", "scanner": "scanner-primary", "fingerprint": "8aee92d30b29bee9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/widgets/spell_text_edit.py:41"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27278ae6c02f4222", "level": "note", "message": {"text": "Possibly dead Python function: contextMenuEvent"}, "properties": {"repobilityId": "43f38c0eb5d6be24", "scanner": "scanner-primary", "fingerprint": "27278ae6c02f4222", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/ui/widgets/spell_text_edit.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f04ff71e8b87db3", "level": "note", "message": {"text": "Possibly dead Python function: set_last_stag_import_dir"}, "properties": {"repobilityId": "220f6e947588876c", "scanner": "scanner-primary", "fingerprint": "8f04ff71e8b87db3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/profile_manager.py:251"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73ce300d4c1f8ac2", "level": "note", "message": {"text": "Possibly dead Python function: list_academic_years"}, "properties": {"repobilityId": "047d7741e449ed61", "scanner": "scanner-primary", "fingerprint": "73ce300d4c1f8ac2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:455"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17ace812c2c4f7ee", "level": "note", "message": {"text": "Possibly dead Python function: theses_by_year_and_type"}, "properties": {"repobilityId": "ff088610a3f91b1f", "scanner": "scanner-primary", "fingerprint": "17ace812c2c4f7ee", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:787"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8235eea9bcd5ad5", "level": "note", "message": {"text": "Possibly dead Python function: upcoming_dates_all_years"}, "properties": {"repobilityId": "7312007de1436629", "scanner": "scanner-primary", "fingerprint": "a8235eea9bcd5ad5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:1728"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-07359ebb457d5458", "level": "note", "message": {"text": "Possibly dead Python function: default_template_specs"}, "properties": {"repobilityId": "bd4854d4ffb4cfd8", "scanner": "scanner-primary", "fingerprint": "07359ebb457d5458", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:2005"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-411677b69e302b9f", "level": "note", "message": {"text": "Possibly dead Python function: generate_review_from_template"}, "properties": {"repobilityId": "33191472d98a6e0b", "scanner": "scanner-primary", "fingerprint": "411677b69e302b9f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:2101"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-890e2c46a5b553eb", "level": "note", "message": {"text": "Possibly dead Python function: delete_review"}, "properties": {"repobilityId": "c6e6161de1e9002d", "scanner": "scanner-primary", "fingerprint": "890e2c46a5b553eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:2350"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ed9806ee603e1d4", "level": "note", "message": {"text": "Possibly dead Python function: upsert_committee"}, "properties": {"repobilityId": "8b5824f369da3efd", "scanner": "scanner-primary", "fingerprint": "7ed9806ee603e1d4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/thesis_service.py:2737"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0d5e2b4e03f1145", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "a0d5e2b4e03f1145", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/xlsx_pdf_polish.py:311"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d92cd349572f540f", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "d92cd349572f540f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/xlsx_image_in_cell.py:273"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2a495b9324cf9b5c", "level": "note", "message": {"text": "Possibly dead Python function: download_file"}, "properties": {"repobilityId": "9d5d70ce1b4ee0b7", "scanner": "scanner-primary", "fingerprint": "2a495b9324cf9b5c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bpdpmanager/services/stag_api.py:339"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-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-01d16545f17e2b87", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/i18n/en.py (1243 lines)"}, "properties": {"repobilityId": "12245256d1345158", "scanner": "scanner-primary", "fingerprint": "01d16545f17e2b87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2285c9554e273a7e", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/manage_dialogs.py (1290 lines)"}, "properties": {"repobilityId": "14808be7dea8aa3f", "scanner": "scanner-primary", "fingerprint": "2285c9554e273a7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b5ee5d4bcecff621", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/theses_tree.py (1223 lines)"}, "properties": {"repobilityId": "17d40bccde8f78ed", "scanner": "scanner-primary", "fingerprint": "b5ee5d4bcecff621", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-284361eea2ef8052", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/main_window.py (2431 lines)"}, "properties": {"repobilityId": "10c732f4a235e7db", "scanner": "scanner-primary", "fingerprint": "284361eea2ef8052", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4919074ee38b1f7e", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/komise_tab.py (1914 lines)"}, "properties": {"repobilityId": "c6483623039dea66", "scanner": "scanner-primary", "fingerprint": "4919074ee38b1f7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f15b9bb30e61c7a1", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/thesis_detail.py (1746 lines)"}, "properties": {"repobilityId": "a75b758911fa6032", "scanner": "scanner-primary", "fingerprint": "f15b9bb30e61c7a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43c05c8a4457009e", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/stag_import_dialog.py (3576 lines)"}, "properties": {"repobilityId": "a89d04326ce4d31e", "scanner": "scanner-primary", "fingerprint": "43c05c8a4457009e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c5b02583808bab1e", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/ui/review_templates_dialog.py (1216 lines)"}, "properties": {"repobilityId": "be42357defd684af", "scanner": "scanner-primary", "fingerprint": "c5b02583808bab1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-88cd3b8c9b74e54a", "level": "note", "message": {"text": "Very large file: src/bpdpmanager/services/thesis_service.py (3711 lines)"}, "properties": {"repobilityId": "3bfbd3e57548701f", "scanner": "scanner-primary", "fingerprint": "88cd3b8c9b74e54a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "29c9568e1504339c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "72851ae76fbb1b7f", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "0afee77a595ed71b", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "6b4f792299ca2db9", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "825273e2fd38161d", "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": "795915d3d567159f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-86454eb399d3c30c", "level": "note", "message": {"text": "Legacy-named symbol `only_old` in tests/test_komise_stats.py:323"}, "properties": {"repobilityId": "93a83bf7a421b79d", "scanner": "scanner-primary", "fingerprint": "86454eb399d3c30c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f6ef863680e406e", "level": "note", "message": {"text": "Legacy-named symbol `test_appendix_generic_name_falls_back_to_v2` in tests/test_file_naming.py:64"}, "properties": {"repobilityId": "92c150e284e5432c", "scanner": "scanner-primary", "fingerprint": "9f6ef863680e406e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9d663dc046b3c365", "level": "note", "message": {"text": "Legacy-named symbol `test_cleanup_supervisor_titles_also_fixes_opposing_copy` in tests/test_name_titles.py:63"}, "properties": {"repobilityId": "70d9ff214e04d0d3", "scanner": "scanner-primary", "fingerprint": "9d663dc046b3c365", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-422fe786c7ec9a42", "level": "note", "message": {"text": "Legacy-named symbol `op_old` in tests/test_send_reviews_dialog.py:103"}, "properties": {"repobilityId": "145ef6694b29249b", "scanner": "scanner-primary", "fingerprint": "422fe786c7ec9a42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6a9413fff6bdc34", "level": "note", "message": {"text": "Legacy-named symbol `test_backup_now_creates_manual_backup` in tests/test_backup_now.py:27"}, "properties": {"repobilityId": "8f0898021f77322b", "scanner": "scanner-primary", "fingerprint": "e6a9413fff6bdc34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7e3f00ae3606038a", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in tests/test_import_revert.py:29"}, "properties": {"repobilityId": "45802918d95b176e", "scanner": "scanner-primary", "fingerprint": "7e3f00ae3606038a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f522eeffb6f9e6ca", "level": "none", "message": {"text": "Commented-code block (25 lines) in src/bpdpmanager/config.py:8"}, "properties": {"repobilityId": "876d63c8de7d4e58", "scanner": "scanner-primary", "fingerprint": "f522eeffb6f9e6ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2449bae1af9ab13", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/bpdpmanager/app.py:98"}, "properties": {"repobilityId": "f6cca31c086f7e08", "scanner": "scanner-primary", "fingerprint": "f2449bae1af9ab13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1250888d5991b1c8", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/bpdpmanager/__main__.py:8"}, "properties": {"repobilityId": "70ba340adf23ccef", "scanner": "scanner-primary", "fingerprint": "1250888d5991b1c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3aa2d9a60b354ffd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/bpdpmanager/models/thesis.py:24"}, "properties": {"repobilityId": "d35ee55ea2f80aa6", "scanner": "scanner-primary", "fingerprint": "3aa2d9a60b354ffd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-867179dd91289139", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/_os_actions.py:40"}, "properties": {"repobilityId": "1a1c330047411db8", "scanner": "scanner-primary", "fingerprint": "867179dd91289139", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bec0f7c843b7429a", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_sync_dialog.py:553"}, "properties": {"repobilityId": "c40fed059d8d67a6", "scanner": "scanner-primary", "fingerprint": "bec0f7c843b7429a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-68ed94cdbb3bc332", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_consistency_dialog.py:325"}, "properties": {"repobilityId": "62b473171f3be9fd", "scanner": "scanner-primary", "fingerprint": "68ed94cdbb3bc332", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8b6b28ad146521f2", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/main_window.py:1764"}, "properties": {"repobilityId": "49fc827939207846", "scanner": "scanner-primary", "fingerprint": "8b6b28ad146521f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-542035d9cec20066", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/send_file_dialog.py:42"}, "properties": {"repobilityId": "19ee761b14f69253", "scanner": "scanner-primary", "fingerprint": "542035d9cec20066", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-616ef4b66e3be6db", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/profile_export_dialog.py:660"}, "properties": {"repobilityId": "4f4d1a4e7964d00d", "scanner": "scanner-primary", "fingerprint": "616ef4b66e3be6db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-74c023d02608d50e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/send_reviews_dialog.py:89"}, "properties": {"repobilityId": "482dc691a637802b", "scanner": "scanner-primary", "fingerprint": "74c023d02608d50e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d6a66a78d6d544b", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/defense_reclassify_dialog.py:228"}, "properties": {"repobilityId": "c984a10237e7e761", "scanner": "scanner-primary", "fingerprint": "2d6a66a78d6d544b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d001ebe0e0542ff1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/harmonogram_tab.py:284"}, "properties": {"repobilityId": "4bc222dd2adcde11", "scanner": "scanner-primary", "fingerprint": "d001ebe0e0542ff1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c52a96fc674e7d9", "level": "note", "message": {"text": "Legacy-named symbol `_make_backup` in src/bpdpmanager/ui/swapped_docs_dialog.py:148"}, "properties": {"repobilityId": "102319ac95f6c864", "scanner": "scanner-primary", "fingerprint": "1c52a96fc674e7d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b7fb4fbb2352d218", "level": "note", "message": {"text": "Legacy-named symbol `title_cs_with_copy` in src/bpdpmanager/ui/thesis_detail.py:1015"}, "properties": {"repobilityId": "5325c8f66d5e201d", "scanner": "scanner-primary", "fingerprint": "b7fb4fbb2352d218", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cc40efd53e8ddb56", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/profile_manage_dialog.py:292"}, "properties": {"repobilityId": "d595eb8ac9081170", "scanner": "scanner-primary", "fingerprint": "cc40efd53e8ddb56", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-34701313cd9dece0", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/stag_import_dialog.py:1363"}, "properties": {"repobilityId": "9da91cfd0a83348b", "scanner": "scanner-primary", "fingerprint": "34701313cd9dece0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a83dce5d76bc1fcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/bpdpmanager/ui/stag_import_dialog.py:710"}, "properties": {"repobilityId": "598cfd0c43653d9b", "scanner": "scanner-primary", "fingerprint": "a83dce5d76bc1fcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a097a1cb413d74ab", "level": "note", "message": {"text": "Legacy-named symbol `btn_legacy` in src/bpdpmanager/ui/welcome_dialog.py:74"}, "properties": {"repobilityId": "28f872a6ed451921", "scanner": "scanner-primary", "fingerprint": "a097a1cb413d74ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-71eccc8c0a5100b5", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/ui/backup_dialog.py:132"}, "properties": {"repobilityId": "2f3962d22a9d63d0", "scanner": "scanner-primary", "fingerprint": "71eccc8c0a5100b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3af052948deedea8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/ui/backup_dialog.py:178"}, "properties": {"repobilityId": "367204d3a6abaf83", "scanner": "scanner-primary", "fingerprint": "3af052948deedea8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-adb591742b647ed7", "level": "note", "message": {"text": "Legacy-named symbol `chk_show_old` in src/bpdpmanager/ui/widgets/documents_widget.py:104"}, "properties": {"repobilityId": "78769674164847e2", "scanner": "scanner-primary", "fingerprint": "adb591742b647ed7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-08fe0a322ef9eb42", "level": "note", "message": {"text": "Legacy-named symbol `import_legacy` in src/bpdpmanager/services/profile_manager.py:128"}, "properties": {"repobilityId": "5951c7aee7577d69", "scanner": "scanner-primary", "fingerprint": "08fe0a322ef9eb42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-816eb4d8aa2ad3eb", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/bpdpmanager/services/thesis_service.py:1995"}, "properties": {"repobilityId": "43065888c604b08d", "scanner": "scanner-primary", "fingerprint": "816eb4d8aa2ad3eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23b9bcee9c6b3e6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/bpdpmanager/services/thesis_service.py:1254"}, "properties": {"repobilityId": "4259fd276a435459", "scanner": "scanner-primary", "fingerprint": "23b9bcee9c6b3e6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07fb035cf19869a9", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/bpdpmanager/services/thesis_export.py:361"}, "properties": {"repobilityId": "c2bdd8a561fd7d0c", "scanner": "scanner-primary", "fingerprint": "07fb035cf19869a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c09c03ce51c0aac5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bpdpmanager/services/update_checker.py:150"}, "properties": {"repobilityId": "a4b39224f19ca50f", "scanner": "scanner-primary", "fingerprint": "c09c03ce51c0aac5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e0c1bc8835d4d89", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/bpdpmanager/services/myq_client.py:288"}, "properties": {"repobilityId": "f54d5017d06eac2c", "scanner": "scanner-primary", "fingerprint": "6e0c1bc8835d4d89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e238e70804e7cdb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/bpdpmanager/services/xlsx_pdf_polish.py:105"}, "properties": {"repobilityId": "a2f886031f4e1943", "scanner": "scanner-primary", "fingerprint": "0e238e70804e7cdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95035ca753115eb3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/bpdpmanager/services/review_pdf.py:19"}, "properties": {"repobilityId": "ce42e1b62ca029a9", "scanner": "scanner-primary", "fingerprint": "95035ca753115eb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1620a9bb775d154d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/bpdpmanager/services/komise_parser.py:340"}, "properties": {"repobilityId": "1698768700af0393", "scanner": "scanner-primary", "fingerprint": "1620a9bb775d154d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb8a847f1f0a2cc7", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/bpdpmanager/services/stag_api.py:87"}, "properties": {"repobilityId": "4a482edb7a18012c", "scanner": "scanner-primary", "fingerprint": "eb8a847f1f0a2cc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c15812959bfa3b8b", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/services/backup_manager.py:72"}, "properties": {"repobilityId": "192b677ce49d5df6", "scanner": "scanner-primary", "fingerprint": "c15812959bfa3b8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a76e8042f499ad24", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in src/bpdpmanager/storage/json_repository.py:70"}, "properties": {"repobilityId": "6317273c88e4174d", "scanner": "scanner-primary", "fingerprint": "a76e8042f499ad24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "cd935cebf6feb879", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "836621bf75ef6327", "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": "55abcf59259d4faa", "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": "79db9257b0d187c4", "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": "5ebe9a009f07364e", "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": "2cda8e40aab092f6", "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": "75521965e81772fb", "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": "4b603a1e727d8a01", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "56c2aa0a1ddb3dd8", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "38878775ea9b4354", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "3075c0bf4c9965bb", "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": "2200dd6dcc3aaadd", "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": "2fa4b8186da015d8", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "71bf27e76e4a9314", "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": "bb8bbf13d63d6cff", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "4ffc0632f9d9e89e", "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": "186ae32a0cbf4338", "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": "f46819caec7e7937", "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": "09b4551b5d71157e", "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": "a6414cec746a45c8", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}