{"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-4f026d43c2af4bfa", "name": "Possibly dead Python function: cleanup_hotkey_processes", "shortDescription": {"text": "Possibly dead Python function: cleanup_hotkey_processes"}, "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-7a0cc2bfbd53359a", "name": "Possibly dead Python function: strip_formatting_tags", "shortDescription": {"text": "Possibly dead Python function: strip_formatting_tags"}, "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-8cbc99ebae25d22a", "name": "Possibly dead Python function: apply_formatting_tags", "shortDescription": {"text": "Possibly dead Python function: apply_formatting_tags"}, "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-c1afe996803a7308", "name": "Possibly dead Python function: update_comment", "shortDescription": {"text": "Possibly dead Python function: update_comment"}, "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-3ca8f5ba768af3a3", "name": "Possibly dead Python function: remove_comment", "shortDescription": {"text": "Possibly dead Python function: remove_comment"}, "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-9bed5f7954ea117f", "name": "Possibly dead Python function: update_display_mode", "shortDescription": {"text": "Possibly dead Python function: update_display_mode"}, "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-22a83c5c3670f56d", "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-2e55371429723d75", "name": "Possibly dead Python function: set_file_boundary", "shortDescription": {"text": "Possibly dead Python function: set_file_boundary"}, "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-086e6763122ed0a6", "name": "Possibly dead Python function: set_background_color", "shortDescription": {"text": "Possibly dead Python function: set_background_color"}, "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-b8ad4a74132c954c", "name": "Possibly dead Python function: set_source_editable", "shortDescription": {"text": "Possibly dead Python function: set_source_editable"}, "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-75a29aed8a2fd317", "name": "Possibly dead Python function: set_local_spellcheck", "shortDescription": {"text": "Possibly dead Python function: set_local_spellcheck"}, "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-a23499056337538f", "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-610de5cf41a837b3", "name": "Possibly dead Python function: clear_highlight", "shortDescription": {"text": "Possibly dead Python function: clear_highlight"}, "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-3ecc29a63172db8a", "name": "Possibly dead Python function: clear_all_highlights", "shortDescription": {"text": "Possibly dead Python function: clear_all_highlights"}, "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-220aaa86cdbfc4c4", "name": "Possibly dead Python function: replace_with_highlight", "shortDescription": {"text": "Possibly dead Python function: replace_with_highlight"}, "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-354d2730f46213a9", "name": "Possibly dead Python function: reset_filters", "shortDescription": {"text": "Possibly dead Python function: reset_filters"}, "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-c346b3986e54c5a9", "name": "Possibly dead Python function: show_completion_message", "shortDescription": {"text": "Possibly dead Python function: show_completion_message"}, "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-1e93ef13c67e331e", "name": "Possibly dead Python function: parse_callback", "shortDescription": {"text": "Possibly dead Python function: parse_callback"}, "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-d22e7703e79cd552", "name": "Possibly dead Python function: grid_callback", "shortDescription": {"text": "Possibly dead Python function: grid_callback"}, "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-0c0aca6962243f79", "name": "Possibly dead Python function: browse_folder", "shortDescription": {"text": "Possibly dead Python function: browse_folder"}, "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-a43645bf45f1e1c2", "name": "Possibly dead Python function: focus_segment_notes", "shortDescription": {"text": "Possibly dead Python function: focus_segment_notes"}, "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-538cd59c813dd767", "name": "Stray `console.log` in TS/JS \u2014 docs/script.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/script.js:98"}, "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-8142be14897a8186", "name": "Docker base image is tag-pinned but not digest-pinned: maven:3.9-eclipse-temurin-17", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: maven:3.9-eclipse-temurin-17"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f2363772fefd939", "name": "Docker base image is tag-pinned but not digest-pinned: eclipse-temurin:17-jre-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: eclipse-temurin:17-jre-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "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-e9d02d92a0a681ac", "name": "Very large file: legacy_versions/Supervertaler_v2.5.0-CLASSIC.py (5646 lines)", "shortDescription": {"text": "Very large file: legacy_versions/Supervertaler_v2.5.0-CLASSIC.py (5646 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-0b32a4b91615f0fe", "name": "Very large file: legacy_versions/Supervertaler_tkinter.py (20659 lines)", "shortDescription": {"text": "Very large file: legacy_versions/Supervertaler_tkinter.py (20659 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-abd1d7795373098b", "name": "Very large file: modules/pdf_rescue_Qt.py (1754 lines)", "shortDescription": {"text": "Very large file: modules/pdf_rescue_Qt.py (1754 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-30c13f2d57334dad", "name": "Very large file: modules/llm_clients.py (1931 lines)", "shortDescription": {"text": "Very large file: modules/llm_clients.py (1931 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-da68d9de7f58d201", "name": "Very large file: modules/unified_prompt_manager_qt.py (6453 lines)", "shortDescription": {"text": "Very large file: modules/unified_prompt_manager_qt.py (6453 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-8a6140d3dd393e5f", "name": "Very large file: modules/voice_commands.py (1465 lines)", "shortDescription": {"text": "Very large file: modules/voice_commands.py (1465 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-2eddc7dabb88c2d6", "name": "Very large file: modules/voice_tab.py (1378 lines)", "shortDescription": {"text": "Very large file: modules/voice_tab.py (1378 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-e07ef6b50a994169", "name": "Very large file: modules/unified_prompt_library.py (1110 lines)", "shortDescription": {"text": "Very large file: modules/unified_prompt_library.py (1110 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-b35cd584ba2d666d", "name": "Very large file: modules/termlens_widget.py (2540 lines)", "shortDescription": {"text": "Very large file: modules/termlens_widget.py (2540 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-2afec6a16fef618b", "name": "Very large file: modules/termbase_entry_editor.py (1823 lines)", "shortDescription": {"text": "Very large file: modules/termbase_entry_editor.py (1823 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-335f8e5c4bf45402", "name": "Very large file: modules/translation_results_panel.py (2427 lines)", "shortDescription": {"text": "Very large file: modules/translation_results_panel.py (2427 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-b969231ee7b1bd91", "name": "Very large file: modules/tm_manager_qt.py (1376 lines)", "shortDescription": {"text": "Very large file: modules/tm_manager_qt.py (1376 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-bb657bb2e0e7eb7e", "name": "Very large file: modules/platform_helpers.py (1520 lines)", "shortDescription": {"text": "Very large file: modules/platform_helpers.py (1520 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-cce790a2c65b6dad", "name": "Very large file: modules/database_manager.py (3196 lines)", "shortDescription": {"text": "Very large file: modules/database_manager.py (3196 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-d866a661b8a6db24", "name": "Very large file: modules/tmx_editor_qt.py (2706 lines)", "shortDescription": {"text": "Very large file: modules/tmx_editor_qt.py (2706 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-35f9a55afae70bee", "name": "Very large file: modules/termbase_manager.py (1443 lines)", "shortDescription": {"text": "Very large file: modules/termbase_manager.py (1443 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-aa8d1625ae1ab3e1", "name": "Very large file: modules/clipboard_manager_widget.py (1540 lines)", "shortDescription": {"text": "Very large file: modules/clipboard_manager_widget.py (1540 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-783e89589448a679", "name": "Very large file: modules/quicktrans.py (1389 lines)", "shortDescription": {"text": "Very large file: modules/quicktrans.py (1389 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-1b4af14cf43e8e94", "name": "Very large file: modules/tmx_editor.py (1467 lines)", "shortDescription": {"text": "Very large file: modules/tmx_editor.py (1467 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-fe49c18c203e0e8d", "name": "Very large file: modules/sdlppx_handler.py (2270 lines)", "shortDescription": {"text": "Very large file: modules/sdlppx_handler.py (2270 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-754c2cd3ae6dac79", "name": "Very large file: okapi-sidecar/src/main/java/com/supervertaler/sidecar/FilterService.java (1142 lines)", "shortDescription": {"text": "Very large file: okapi-sidecar/src/main/java/com/supervertaler/sidecar/FilterService.java (1142 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "4 test file(s) for 120 source file(s) (ratio 0.03). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 583 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 52 placeholder/mock markers across 22 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "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-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-505bc666a82f9849", "name": "Agent instruction/config may expose a secret: .claude/settings.local.json", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/settings.local.json"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cb8088d8e6292b8", "name": "Network/subprocess call without timeout or try/except \u2014 _create_release.py:12", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 _create_release.py:12"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4785f923fc36f49c", "name": "Commented-code block (12 lines) in legacy_versions/Supervertaler_v2.5.0-CLASSIC.py:1497", "shortDescription": {"text": "Commented-code block (12 lines) in legacy_versions/Supervertaler_v2.5.0-CLASSIC.py:1497"}, "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-8412986eb2f47e07", "name": "Network/subprocess call without timeout or try/except \u2014 legacy_versions/Supervertaler_v2.5.0-CLASSIC.py:3716", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 legacy_versions/Supervertaler_v2.5.0-CLASSIC.py:3716"}, "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-155cdf6daed4b6d9", "name": "Legacy-named symbol `_show_custom_prompts_old` in legacy_versions/Supervertaler_tkinter.py:16395", "shortDescription": {"text": "Legacy-named symbol `_show_custom_prompts_old` in legacy_versions/Supervertaler_tkinter.py:16395"}, "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-b5508062691341bc", "name": "Network/subprocess call without timeout or try/except \u2014 legacy_versions/Supervertaler_tkinter.py:6145", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 legacy_versions/Supervertaler_tkinter.py:6145"}, "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-6a4238d19cdb9d73", "name": "Commented-code block (8 lines) in modules/snippet_library.py:209", "shortDescription": {"text": "Commented-code block (8 lines) in modules/snippet_library.py:209"}, "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-cae6f766fd18c1be", "name": "Commented-code block (5 lines) in modules/llm_clients.py:1039", "shortDescription": {"text": "Commented-code block (5 lines) in modules/llm_clients.py:1039"}, "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-28134ec5d74cf62b", "name": "Network/subprocess call without timeout or try/except \u2014 modules/llm_clients.py:1885", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/llm_clients.py:1885"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84a2337d4b0a0dc5", "name": "Commented-code block (5 lines) in modules/unified_prompt_manager_qt.py:1262", "shortDescription": {"text": "Commented-code block (5 lines) in modules/unified_prompt_manager_qt.py:1262"}, "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-3109678a9def2544", "name": "Network/subprocess call without timeout or try/except \u2014 modules/unified_prompt_manager_qt.py:3401", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/unified_prompt_manager_qt.py:3401"}, "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-80d52796e36f5fe8", "name": "Commented-code block (6 lines) in modules/chat_backend.py:131", "shortDescription": {"text": "Commented-code block (6 lines) in modules/chat_backend.py:131"}, "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-96a0725a729c2da4", "name": "Legacy-named symbol `_ahk_v1_to_v2` in modules/voice_commands.py:496", "shortDescription": {"text": "Legacy-named symbol `_ahk_v1_to_v2` in modules/voice_commands.py:496"}, "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-cba66331b4fe3d08", "name": "Commented-code block (10 lines) in modules/voice_commands.py:162", "shortDescription": {"text": "Commented-code block (10 lines) in modules/voice_commands.py:162"}, "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-60c1d31227290d49", "name": "Network/subprocess call without timeout or try/except \u2014 modules/voice_commands.py:480", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/voice_commands.py:480"}, "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-9732125dd4da2e58", "name": "Commented-code block (9 lines) in modules/voice_tab.py:132", "shortDescription": {"text": "Commented-code block (9 lines) in modules/voice_tab.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-27341cb0567481d4", "name": "Commented-code block (5 lines) in modules/unified_prompt_library.py:406", "shortDescription": {"text": "Commented-code block (5 lines) in modules/unified_prompt_library.py:406"}, "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-82bab97b4c651e44", "name": "Commented-code block (5 lines) in modules/i18n.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in modules/i18n.py:85"}, "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-32b6b1f9b3ad99e9", "name": "Commented-code block (6 lines) in modules/voice_release_poller.py:180", "shortDescription": {"text": "Commented-code block (6 lines) in modules/voice_release_poller.py:180"}, "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-f9467481417e7097", "name": "Legacy-named symbol `shortcut_copy` in modules/voice_dictation.py:326", "shortDescription": {"text": "Legacy-named symbol `shortcut_copy` in modules/voice_dictation.py:326"}, "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-e87bfd166caea46d", "name": "Commented-code block (7 lines) in modules/help_system.py:100", "shortDescription": {"text": "Commented-code block (7 lines) in modules/help_system.py:100"}, "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-7c0c2028cf2db116", "name": "Commented-code block (10 lines) in modules/termlens_widget.py:48", "shortDescription": {"text": "Commented-code block (10 lines) in modules/termlens_widget.py:48"}, "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-188f5d499022e70b", "name": "Commented-code block (6 lines) in modules/autocorrect.py:194", "shortDescription": {"text": "Commented-code block (6 lines) in modules/autocorrect.py:194"}, "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-4fc9e30b9d78c300", "name": "Commented-code block (8 lines) in modules/termbase_entry_editor.py:211", "shortDescription": {"text": "Commented-code block (8 lines) in modules/termbase_entry_editor.py:211"}, "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-4fe2cd5a6793b3b4", "name": "Commented-code block (6 lines) in modules/translation_results_panel.py:369", "shortDescription": {"text": "Commented-code block (6 lines) in modules/translation_results_panel.py:369"}, "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-15ce4758a9939bf8", "name": "Legacy-named symbol `send_copy` in modules/superlookup.py:97", "shortDescription": {"text": "Legacy-named symbol `send_copy` in modules/superlookup.py:97"}, "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-a75c68735752bfe0", "name": "Commented-code block (8 lines) in modules/termlens_popup.py:108", "shortDescription": {"text": "Commented-code block (8 lines) in modules/termlens_popup.py:108"}, "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-cf2240d44d3b299e", "name": "Commented-code block (5 lines) in modules/shortcut_manager.py:97", "shortDescription": {"text": "Commented-code block (5 lines) in modules/shortcut_manager.py:97"}, "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-a0d0d7f337b749bd", "name": "Commented-code block (7 lines) in modules/trados_bridge_client.py:101", "shortDescription": {"text": "Commented-code block (7 lines) in modules/trados_bridge_client.py:101"}, "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-84eda02609243215", "name": "Commented-code block (7 lines) in modules/document_analyzer.py:23", "shortDescription": {"text": "Commented-code block (7 lines) in modules/document_analyzer.py:23"}, "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-23aa188db5f850c9", "name": "Commented-code block (10 lines) in modules/voice_dictation_lite.py:68", "shortDescription": {"text": "Commented-code block (10 lines) in modules/voice_dictation_lite.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-57cd338f65bb0830", "name": "Commented-code block (5 lines) in modules/language_codes.py:124", "shortDescription": {"text": "Commented-code block (5 lines) in modules/language_codes.py:124"}, "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-53f7151f4ed44118", "name": "Legacy-named symbol `img_copy` in modules/figure_context_manager.py:230", "shortDescription": {"text": "Legacy-named symbol `img_copy` in modules/figure_context_manager.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-106fad105b3d052d", "name": "Legacy-named symbol `send_copy` in modules/platform_helpers.py:975", "shortDescription": {"text": "Legacy-named symbol `send_copy` in modules/platform_helpers.py:975"}, "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-7ab08cee6cf2c706", "name": "Commented-code block (6 lines) in modules/platform_helpers.py:148", "shortDescription": {"text": "Commented-code block (6 lines) in modules/platform_helpers.py:148"}, "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-02125e7472d1f5c5", "name": "Network/subprocess call without timeout or try/except \u2014 modules/platform_helpers.py:107", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/platform_helpers.py:107"}, "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-6ef4cee605f003c2", "name": "Network/subprocess call without timeout or try/except \u2014 modules/local_llm_setup.py:479", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/local_llm_setup.py:479"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e850806a89046198", "name": "Legacy-named symbol `folders_to_backup` in modules/prompt_library_migration.py:370", "shortDescription": {"text": "Legacy-named symbol `folders_to_backup` in modules/prompt_library_migration.py:370"}, "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-8b997f95aa97377b", "name": "Commented-code block (7 lines) in modules/dejavurtf_handler.py:361", "shortDescription": {"text": "Commented-code block (7 lines) in modules/dejavurtf_handler.py:361"}, "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-d9f0f27b7881ebaa", "name": "Commented-code block (7 lines) in modules/database_manager.py:29", "shortDescription": {"text": "Commented-code block (7 lines) in modules/database_manager.py:29"}, "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-2b065ec04d314be0", "name": "Commented-code block (5 lines) in modules/okapi_sidecar.py:63", "shortDescription": {"text": "Commented-code block (5 lines) in modules/okapi_sidecar.py:63"}, "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-721f1932810ddab9", "name": "Commented-code block (5 lines) in modules/voice_vocabulary.py:127", "shortDescription": {"text": "Commented-code block (5 lines) in modules/voice_vocabulary.py:127"}, "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-f5f16d87913c78a7", "name": "Commented-code block (8 lines) in modules/keyboard_shortcuts_widget.py:70", "shortDescription": {"text": "Commented-code block (8 lines) in modules/keyboard_shortcuts_widget.py:70"}, "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-3e4b25e9e22d4877", "name": "Commented-code block (5 lines) in modules/image_extractor.py:92", "shortDescription": {"text": "Commented-code block (5 lines) in modules/image_extractor.py:92"}, "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-e7f9a75bd094dbfe", "name": "Commented-code block (8 lines) in modules/docx_handler.py:339", "shortDescription": {"text": "Commented-code block (8 lines) in modules/docx_handler.py:339"}, "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-df041f802f9fd1f2", "name": "Commented-code block (5 lines) in modules/term_picker_dialog.py:330", "shortDescription": {"text": "Commented-code block (5 lines) in modules/term_picker_dialog.py:330"}, "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-7800f613b91b89de", "name": "Commented-code block (5 lines) in modules/voice_command_dialog.py:81", "shortDescription": {"text": "Commented-code block (5 lines) in modules/voice_command_dialog.py:81"}, "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-86aa4b8cd1c689dd", "name": "Commented-code block (5 lines) in modules/termbase_manager.py:20", "shortDescription": {"text": "Commented-code block (5 lines) in modules/termbase_manager.py:20"}, "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-3261569ea294e3ad", "name": "Commented-code block (5 lines) in modules/bilingual_markdown_handler.py:146", "shortDescription": {"text": "Commented-code block (5 lines) in modules/bilingual_markdown_handler.py:146"}, "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-85e52c98e55ab353", "name": "Commented-code block (6 lines) in modules/phrase_docx_handler.py:108", "shortDescription": {"text": "Commented-code block (6 lines) in modules/phrase_docx_handler.py:108"}, "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-9ac429843e7ac160", "name": "Legacy-named symbol `_open_clipboard_after_copy` in modules/clipboard_manager_widget.py:1266", "shortDescription": {"text": "Legacy-named symbol `_open_clipboard_after_copy` in modules/clipboard_manager_widget.py:1266"}, "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-15b6d31e1135045f", "name": "Commented-code block (6 lines) in modules/clipboard_manager_widget.py:87", "shortDescription": {"text": "Commented-code block (6 lines) in modules/clipboard_manager_widget.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-e37d5b62a98fac23", "name": "Commented-code block (10 lines) in modules/quicktrans.py:565", "shortDescription": {"text": "Commented-code block (10 lines) in modules/quicktrans.py:565"}, "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-82de27a4f27ca462", "name": "Commented-code block (6 lines) in modules/memoqrtf_handler.py:371", "shortDescription": {"text": "Commented-code block (6 lines) in modules/memoqrtf_handler.py:371"}, "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-43ec97546f38ecd8", "name": "Network/subprocess call without timeout or try/except \u2014 modules/superdocs_viewer_qt.py:246", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/superdocs_viewer_qt.py:246"}, "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-1c56f9526ce83ae6", "name": "Legacy-named symbol `esc_old` in modules/sdlppx_handler.py:631", "shortDescription": {"text": "Legacy-named symbol `esc_old` in modules/sdlppx_handler.py:631"}, "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-08135a2734cb6701", "name": "Commented-code block (5 lines) in modules/sdlppx_handler.py:871", "shortDescription": {"text": "Commented-code block (5 lines) in modules/sdlppx_handler.py:871"}, "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-5d6fdaf48bf2805f", "name": "Commented-code block (7 lines) in modules/chat_view_widget.py:325", "shortDescription": {"text": "Commented-code block (7 lines) in modules/chat_view_widget.py:325"}, "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-a82ddc364d6ff29a", "name": "Commented-code block (7 lines) in tools/merge_template.py:182", "shortDescription": {"text": "Commented-code block (7 lines) in tools/merge_template.py:182"}, "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-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:\nlegacy_versions/Supervertaler_v2.5.0-CLASSIC.py:collect_text, legacy_versions/Supervertaler_tkinter.py:collect_text\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:\nlegacy_versions/Supervertaler_v2.5.0-CLASSIC.py:format_tracked_changes_context, legacy_versions/Supervertaler_tkinter.py:format_tracked_changes_context, modules/tracked_changes.py:format_tracked_changes_context\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/20553"}, "properties": {"repository": "Supervertaler/Supervertaler-Workbench", "repoUrl": "https://github.com/Supervertaler/Supervertaler-Workbench", "branch": "main"}, "results": [{"ruleId": "scanner-4f026d43c2af4bfa", "level": "note", "message": {"text": "Possibly dead Python function: cleanup_hotkey_processes"}, "properties": {"repobilityId": "937de6edfab0756b", "scanner": "scanner-primary", "fingerprint": "4f026d43c2af4bfa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:388"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a0cc2bfbd53359a", "level": "note", "message": {"text": "Possibly dead Python function: strip_formatting_tags"}, "properties": {"repobilityId": "f2052a738f3f222f", "scanner": "scanner-primary", "fingerprint": "7a0cc2bfbd53359a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:485"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8cbc99ebae25d22a", "level": "note", "message": {"text": "Possibly dead Python function: apply_formatting_tags"}, "properties": {"repobilityId": "36424f6d41d3cb26", "scanner": "scanner-primary", "fingerprint": "8cbc99ebae25d22a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:838"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1afe996803a7308", "level": "note", "message": {"text": "Possibly dead Python function: update_comment"}, "properties": {"repobilityId": "66fdef580b1b0f76", "scanner": "scanner-primary", "fingerprint": "c1afe996803a7308", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:1623"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ca8f5ba768af3a3", "level": "note", "message": {"text": "Possibly dead Python function: remove_comment"}, "properties": {"repobilityId": "a26508e5ee9fd1c4", "scanner": "scanner-primary", "fingerprint": "3ca8f5ba768af3a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:1632"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bed5f7954ea117f", "level": "note", "message": {"text": "Possibly dead Python function: update_display_mode"}, "properties": {"repobilityId": "61bf59c6e006f9b3", "scanner": "scanner-primary", "fingerprint": "9bed5f7954ea117f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:5896"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22a83c5c3670f56d", "level": "note", "message": {"text": "Possibly dead Python function: contextMenuEvent"}, "properties": {"repobilityId": "43f38c0eb5d6be24", "scanner": "scanner-primary", "fingerprint": "22a83c5c3670f56d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:4877"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e55371429723d75", "level": "note", "message": {"text": "Possibly dead Python function: set_file_boundary"}, "properties": {"repobilityId": "b83aa2071d941c38", "scanner": "scanner-primary", "fingerprint": "2e55371429723d75", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:5926"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-086e6763122ed0a6", "level": "note", "message": {"text": "Possibly dead Python function: set_background_color"}, "properties": {"repobilityId": "2e5b6480f0fc4292", "scanner": "scanner-primary", "fingerprint": "086e6763122ed0a6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:5930"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8ad4a74132c954c", "level": "note", "message": {"text": "Possibly dead Python function: set_source_editable"}, "properties": {"repobilityId": "e0154225b127c450", "scanner": "scanner-primary", "fingerprint": "b8ad4a74132c954c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:4085"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75a29aed8a2fd317", "level": "note", "message": {"text": "Possibly dead Python function: set_local_spellcheck"}, "properties": {"repobilityId": "f896897f85b0a99d", "scanner": "scanner-primary", "fingerprint": "75a29aed8a2fd317", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:4256"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a23499056337538f", "level": "note", "message": {"text": "Possibly dead Python function: highlightBlock"}, "properties": {"repobilityId": "61c062f6734d0254", "scanner": "scanner-primary", "fingerprint": "a23499056337538f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:4261"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-610de5cf41a837b3", "level": "note", "message": {"text": "Possibly dead Python function: clear_highlight"}, "properties": {"repobilityId": "3d38776218ae8691", "scanner": "scanner-primary", "fingerprint": "610de5cf41a837b3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:6217"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ecc29a63172db8a", "level": "note", "message": {"text": "Possibly dead Python function: clear_all_highlights"}, "properties": {"repobilityId": "32d99701a90781d5", "scanner": "scanner-primary", "fingerprint": "3ecc29a63172db8a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:6222"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-220aaa86cdbfc4c4", "level": "note", "message": {"text": "Possibly dead Python function: replace_with_highlight"}, "properties": {"repobilityId": "0131550ead11732d", "scanner": "scanner-primary", "fingerprint": "220aaa86cdbfc4c4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:6284"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-354d2730f46213a9", "level": "note", "message": {"text": "Possibly dead Python function: reset_filters"}, "properties": {"repobilityId": "9576e461634a85c4", "scanner": "scanner-primary", "fingerprint": "354d2730f46213a9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:6855"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c346b3986e54c5a9", "level": "note", "message": {"text": "Possibly dead Python function: show_completion_message"}, "properties": {"repobilityId": "f98883ec2a7659b9", "scanner": "scanner-primary", "fingerprint": "c346b3986e54c5a9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:7927"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e93ef13c67e331e", "level": "note", "message": {"text": "Possibly dead Python function: parse_callback"}, "properties": {"repobilityId": "3e411da59f8be1fd", "scanner": "scanner-primary", "fingerprint": "1e93ef13c67e331e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:8044"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d22e7703e79cd552", "level": "note", "message": {"text": "Possibly dead Python function: grid_callback"}, "properties": {"repobilityId": "0e96b502b3b1f718", "scanner": "scanner-primary", "fingerprint": "d22e7703e79cd552", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:8059"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c0aca6962243f79", "level": "note", "message": {"text": "Possibly dead Python function: browse_folder"}, "properties": {"repobilityId": "532f7c56bdd9eaa0", "scanner": "scanner-primary", "fingerprint": "0c0aca6962243f79", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:8794"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a43645bf45f1e1c2", "level": "note", "message": {"text": "Possibly dead Python function: focus_segment_notes"}, "properties": {"repobilityId": "af8e47449558339f", "scanner": "scanner-primary", "fingerprint": "a43645bf45f1e1c2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Supervertaler.py:9514"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-538cd59c813dd767", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/script.js:98"}, "properties": {"repobilityId": "83a097558c31b755", "scanner": "scanner-primary", "fingerprint": "538cd59c813dd767", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8142be14897a8186", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: maven:3.9-eclipse-temurin-17"}, "properties": {"repobilityId": "be6eb48f3ed8c994", "scanner": "scanner-primary", "fingerprint": "8142be14897a8186", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "okapi-sidecar/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9f2363772fefd939", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: eclipse-temurin:17-jre-alpine"}, "properties": {"repobilityId": "7b758c7fae36776f", "scanner": "scanner-primary", "fingerprint": "9f2363772fefd939", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "okapi-sidecar/Dockerfile"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"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-e9d02d92a0a681ac", "level": "note", "message": {"text": "Very large file: legacy_versions/Supervertaler_v2.5.0-CLASSIC.py (5646 lines)"}, "properties": {"repobilityId": "5eb24eb9405884f9", "scanner": "scanner-primary", "fingerprint": "e9d02d92a0a681ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0b32a4b91615f0fe", "level": "note", "message": {"text": "Very large file: legacy_versions/Supervertaler_tkinter.py (20659 lines)"}, "properties": {"repobilityId": "14619181a82638e4", "scanner": "scanner-primary", "fingerprint": "0b32a4b91615f0fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-abd1d7795373098b", "level": "note", "message": {"text": "Very large file: modules/pdf_rescue_Qt.py (1754 lines)"}, "properties": {"repobilityId": "ae9f7d53a593f6fe", "scanner": "scanner-primary", "fingerprint": "abd1d7795373098b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-30c13f2d57334dad", "level": "note", "message": {"text": "Very large file: modules/llm_clients.py (1931 lines)"}, "properties": {"repobilityId": "d38d171652fa01d9", "scanner": "scanner-primary", "fingerprint": "30c13f2d57334dad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-da68d9de7f58d201", "level": "note", "message": {"text": "Very large file: modules/unified_prompt_manager_qt.py (6453 lines)"}, "properties": {"repobilityId": "1e61a17e96312d37", "scanner": "scanner-primary", "fingerprint": "da68d9de7f58d201", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8a6140d3dd393e5f", "level": "note", "message": {"text": "Very large file: modules/voice_commands.py (1465 lines)"}, "properties": {"repobilityId": "4859bf4752a635cc", "scanner": "scanner-primary", "fingerprint": "8a6140d3dd393e5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2eddc7dabb88c2d6", "level": "note", "message": {"text": "Very large file: modules/voice_tab.py (1378 lines)"}, "properties": {"repobilityId": "654979a999ebd278", "scanner": "scanner-primary", "fingerprint": "2eddc7dabb88c2d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e07ef6b50a994169", "level": "note", "message": {"text": "Very large file: modules/unified_prompt_library.py (1110 lines)"}, "properties": {"repobilityId": "ed41aa93920f0a4b", "scanner": "scanner-primary", "fingerprint": "e07ef6b50a994169", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b35cd584ba2d666d", "level": "note", "message": {"text": "Very large file: modules/termlens_widget.py (2540 lines)"}, "properties": {"repobilityId": "dbe5967437ea88d2", "scanner": "scanner-primary", "fingerprint": "b35cd584ba2d666d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2afec6a16fef618b", "level": "note", "message": {"text": "Very large file: modules/termbase_entry_editor.py (1823 lines)"}, "properties": {"repobilityId": "48ef847ee2adb155", "scanner": "scanner-primary", "fingerprint": "2afec6a16fef618b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-335f8e5c4bf45402", "level": "note", "message": {"text": "Very large file: modules/translation_results_panel.py (2427 lines)"}, "properties": {"repobilityId": "e80890a7375488e7", "scanner": "scanner-primary", "fingerprint": "335f8e5c4bf45402", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b969231ee7b1bd91", "level": "note", "message": {"text": "Very large file: modules/tm_manager_qt.py (1376 lines)"}, "properties": {"repobilityId": "f47d42127a129361", "scanner": "scanner-primary", "fingerprint": "b969231ee7b1bd91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bb657bb2e0e7eb7e", "level": "note", "message": {"text": "Very large file: modules/platform_helpers.py (1520 lines)"}, "properties": {"repobilityId": "9546db138d1a0054", "scanner": "scanner-primary", "fingerprint": "bb657bb2e0e7eb7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cce790a2c65b6dad", "level": "note", "message": {"text": "Very large file: modules/database_manager.py (3196 lines)"}, "properties": {"repobilityId": "4fa34b2f1f29f037", "scanner": "scanner-primary", "fingerprint": "cce790a2c65b6dad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d866a661b8a6db24", "level": "note", "message": {"text": "Very large file: modules/tmx_editor_qt.py (2706 lines)"}, "properties": {"repobilityId": "d5bb53deb329d3ce", "scanner": "scanner-primary", "fingerprint": "d866a661b8a6db24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-35f9a55afae70bee", "level": "note", "message": {"text": "Very large file: modules/termbase_manager.py (1443 lines)"}, "properties": {"repobilityId": "b7454c3a3070364f", "scanner": "scanner-primary", "fingerprint": "35f9a55afae70bee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa8d1625ae1ab3e1", "level": "note", "message": {"text": "Very large file: modules/clipboard_manager_widget.py (1540 lines)"}, "properties": {"repobilityId": "fa319a86b848f70a", "scanner": "scanner-primary", "fingerprint": "aa8d1625ae1ab3e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-783e89589448a679", "level": "note", "message": {"text": "Very large file: modules/quicktrans.py (1389 lines)"}, "properties": {"repobilityId": "ff8cf6026965767b", "scanner": "scanner-primary", "fingerprint": "783e89589448a679", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1b4af14cf43e8e94", "level": "note", "message": {"text": "Very large file: modules/tmx_editor.py (1467 lines)"}, "properties": {"repobilityId": "e5eab942ae0014d0", "scanner": "scanner-primary", "fingerprint": "1b4af14cf43e8e94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe49c18c203e0e8d", "level": "note", "message": {"text": "Very large file: modules/sdlppx_handler.py (2270 lines)"}, "properties": {"repobilityId": "b518d1c57e8506d9", "scanner": "scanner-primary", "fingerprint": "fe49c18c203e0e8d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-754c2cd3ae6dac79", "level": "note", "message": {"text": "Very large file: okapi-sidecar/src/main/java/com/supervertaler/sidecar/FilterService.java (1142 lines)"}, "properties": {"repobilityId": "234bd139b76fccb9", "scanner": "scanner-primary", "fingerprint": "754c2cd3ae6dac79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "fe1835a6c8cf9fa4", "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": "e662cbbd3733d9c3", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "9fdc80888c75382d", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "d942e32b277d0a2f", "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": "fa21c24d629e52ff", "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": "df6e2b4e5ff6e672", "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": "b2ea752e55aa0e21", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-505bc666a82f9849", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/settings.local.json"}, "properties": {"repobilityId": "777970b0fce0a93b", "scanner": "scanner-primary", "fingerprint": "505bc666a82f9849", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-0cb8088d8e6292b8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 _create_release.py:12"}, "properties": {"repobilityId": "0ae45158f9a655fa", "scanner": "scanner-primary", "fingerprint": "0cb8088d8e6292b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4785f923fc36f49c", "level": "none", "message": {"text": "Commented-code block (12 lines) in legacy_versions/Supervertaler_v2.5.0-CLASSIC.py:1497"}, "properties": {"repobilityId": "8c783faa7bd0abba", "scanner": "scanner-primary", "fingerprint": "4785f923fc36f49c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8412986eb2f47e07", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 legacy_versions/Supervertaler_v2.5.0-CLASSIC.py:3716"}, "properties": {"repobilityId": "aff94f7ff3869e26", "scanner": "scanner-primary", "fingerprint": "8412986eb2f47e07", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-155cdf6daed4b6d9", "level": "note", "message": {"text": "Legacy-named symbol `_show_custom_prompts_old` in legacy_versions/Supervertaler_tkinter.py:16395"}, "properties": {"repobilityId": "781a3c69dcd5b3db", "scanner": "scanner-primary", "fingerprint": "155cdf6daed4b6d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b5508062691341bc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 legacy_versions/Supervertaler_tkinter.py:6145"}, "properties": {"repobilityId": "058fc8a7562ee472", "scanner": "scanner-primary", "fingerprint": "b5508062691341bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a4238d19cdb9d73", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/snippet_library.py:209"}, "properties": {"repobilityId": "a4871bb5aa37b5a7", "scanner": "scanner-primary", "fingerprint": "6a4238d19cdb9d73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cae6f766fd18c1be", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/llm_clients.py:1039"}, "properties": {"repobilityId": "e480a96277fda201", "scanner": "scanner-primary", "fingerprint": "cae6f766fd18c1be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28134ec5d74cf62b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/llm_clients.py:1885"}, "properties": {"repobilityId": "4ab8b37a03007194", "scanner": "scanner-primary", "fingerprint": "28134ec5d74cf62b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-84a2337d4b0a0dc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/unified_prompt_manager_qt.py:1262"}, "properties": {"repobilityId": "70410dc0aa194aa5", "scanner": "scanner-primary", "fingerprint": "84a2337d4b0a0dc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3109678a9def2544", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/unified_prompt_manager_qt.py:3401"}, "properties": {"repobilityId": "319d60b6adecd478", "scanner": "scanner-primary", "fingerprint": "3109678a9def2544", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-80d52796e36f5fe8", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/chat_backend.py:131"}, "properties": {"repobilityId": "7310db7fa35db235", "scanner": "scanner-primary", "fingerprint": "80d52796e36f5fe8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96a0725a729c2da4", "level": "note", "message": {"text": "Legacy-named symbol `_ahk_v1_to_v2` in modules/voice_commands.py:496"}, "properties": {"repobilityId": "36b992cd39cfdd0e", "scanner": "scanner-primary", "fingerprint": "96a0725a729c2da4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cba66331b4fe3d08", "level": "none", "message": {"text": "Commented-code block (10 lines) in modules/voice_commands.py:162"}, "properties": {"repobilityId": "110c02356e3dba1f", "scanner": "scanner-primary", "fingerprint": "cba66331b4fe3d08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60c1d31227290d49", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/voice_commands.py:480"}, "properties": {"repobilityId": "f9af013877954310", "scanner": "scanner-primary", "fingerprint": "60c1d31227290d49", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9732125dd4da2e58", "level": "none", "message": {"text": "Commented-code block (9 lines) in modules/voice_tab.py:132"}, "properties": {"repobilityId": "0d67af50313586e1", "scanner": "scanner-primary", "fingerprint": "9732125dd4da2e58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27341cb0567481d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/unified_prompt_library.py:406"}, "properties": {"repobilityId": "dbd30ec7c3821132", "scanner": "scanner-primary", "fingerprint": "27341cb0567481d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82bab97b4c651e44", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/i18n.py:85"}, "properties": {"repobilityId": "5b7e3f8c7c6e6e89", "scanner": "scanner-primary", "fingerprint": "82bab97b4c651e44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32b6b1f9b3ad99e9", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/voice_release_poller.py:180"}, "properties": {"repobilityId": "f9cce54b8fd56db1", "scanner": "scanner-primary", "fingerprint": "32b6b1f9b3ad99e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9467481417e7097", "level": "note", "message": {"text": "Legacy-named symbol `shortcut_copy` in modules/voice_dictation.py:326"}, "properties": {"repobilityId": "c9d5cc6bb0c72a7d", "scanner": "scanner-primary", "fingerprint": "f9467481417e7097", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e87bfd166caea46d", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/help_system.py:100"}, "properties": {"repobilityId": "aadbc70a8957c4e2", "scanner": "scanner-primary", "fingerprint": "e87bfd166caea46d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c0c2028cf2db116", "level": "none", "message": {"text": "Commented-code block (10 lines) in modules/termlens_widget.py:48"}, "properties": {"repobilityId": "d3adbe9a98229980", "scanner": "scanner-primary", "fingerprint": "7c0c2028cf2db116", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-188f5d499022e70b", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/autocorrect.py:194"}, "properties": {"repobilityId": "658105fd6c093115", "scanner": "scanner-primary", "fingerprint": "188f5d499022e70b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fc9e30b9d78c300", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/termbase_entry_editor.py:211"}, "properties": {"repobilityId": "b1009f998e23c9d9", "scanner": "scanner-primary", "fingerprint": "4fc9e30b9d78c300", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fe2cd5a6793b3b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/translation_results_panel.py:369"}, "properties": {"repobilityId": "070a4018adca1795", "scanner": "scanner-primary", "fingerprint": "4fe2cd5a6793b3b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15ce4758a9939bf8", "level": "note", "message": {"text": "Legacy-named symbol `send_copy` in modules/superlookup.py:97"}, "properties": {"repobilityId": "62fa1e4fe5931515", "scanner": "scanner-primary", "fingerprint": "15ce4758a9939bf8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a75c68735752bfe0", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/termlens_popup.py:108"}, "properties": {"repobilityId": "08a137bef0ca1d97", "scanner": "scanner-primary", "fingerprint": "a75c68735752bfe0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf2240d44d3b299e", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/shortcut_manager.py:97"}, "properties": {"repobilityId": "01b610186b1fe486", "scanner": "scanner-primary", "fingerprint": "cf2240d44d3b299e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0d0d7f337b749bd", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/trados_bridge_client.py:101"}, "properties": {"repobilityId": "065c89c8162afd5e", "scanner": "scanner-primary", "fingerprint": "a0d0d7f337b749bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84eda02609243215", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/document_analyzer.py:23"}, "properties": {"repobilityId": "52d7ad0311cf4627", "scanner": "scanner-primary", "fingerprint": "84eda02609243215", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23aa188db5f850c9", "level": "none", "message": {"text": "Commented-code block (10 lines) in modules/voice_dictation_lite.py:68"}, "properties": {"repobilityId": "33dd41af27d02bda", "scanner": "scanner-primary", "fingerprint": "23aa188db5f850c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57cd338f65bb0830", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/language_codes.py:124"}, "properties": {"repobilityId": "392313c236a6af95", "scanner": "scanner-primary", "fingerprint": "57cd338f65bb0830", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53f7151f4ed44118", "level": "note", "message": {"text": "Legacy-named symbol `img_copy` in modules/figure_context_manager.py:230"}, "properties": {"repobilityId": "51d1572bce073193", "scanner": "scanner-primary", "fingerprint": "53f7151f4ed44118", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-106fad105b3d052d", "level": "note", "message": {"text": "Legacy-named symbol `send_copy` in modules/platform_helpers.py:975"}, "properties": {"repobilityId": "2b324c4600cd13ed", "scanner": "scanner-primary", "fingerprint": "106fad105b3d052d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7ab08cee6cf2c706", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/platform_helpers.py:148"}, "properties": {"repobilityId": "166ed42b22a76ab2", "scanner": "scanner-primary", "fingerprint": "7ab08cee6cf2c706", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02125e7472d1f5c5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/platform_helpers.py:107"}, "properties": {"repobilityId": "5604233a38225bf7", "scanner": "scanner-primary", "fingerprint": "02125e7472d1f5c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ef4cee605f003c2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/local_llm_setup.py:479"}, "properties": {"repobilityId": "b9d66f8a8938008f", "scanner": "scanner-primary", "fingerprint": "6ef4cee605f003c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e850806a89046198", "level": "note", "message": {"text": "Legacy-named symbol `folders_to_backup` in modules/prompt_library_migration.py:370"}, "properties": {"repobilityId": "ba36dcff01817cad", "scanner": "scanner-primary", "fingerprint": "e850806a89046198", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8b997f95aa97377b", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/dejavurtf_handler.py:361"}, "properties": {"repobilityId": "9b7803ad696369f2", "scanner": "scanner-primary", "fingerprint": "8b997f95aa97377b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9f0f27b7881ebaa", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/database_manager.py:29"}, "properties": {"repobilityId": "714f52e589a59bdb", "scanner": "scanner-primary", "fingerprint": "d9f0f27b7881ebaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b065ec04d314be0", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/okapi_sidecar.py:63"}, "properties": {"repobilityId": "b8a369df4eab28c9", "scanner": "scanner-primary", "fingerprint": "2b065ec04d314be0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-721f1932810ddab9", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/voice_vocabulary.py:127"}, "properties": {"repobilityId": "695c22b054bac9dc", "scanner": "scanner-primary", "fingerprint": "721f1932810ddab9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5f16d87913c78a7", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/keyboard_shortcuts_widget.py:70"}, "properties": {"repobilityId": "86d087aed7489b63", "scanner": "scanner-primary", "fingerprint": "f5f16d87913c78a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e4b25e9e22d4877", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/image_extractor.py:92"}, "properties": {"repobilityId": "490ad9ab9f7d2df9", "scanner": "scanner-primary", "fingerprint": "3e4b25e9e22d4877", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7f9a75bd094dbfe", "level": "none", "message": {"text": "Commented-code block (8 lines) in modules/docx_handler.py:339"}, "properties": {"repobilityId": "f54415cf0339b056", "scanner": "scanner-primary", "fingerprint": "e7f9a75bd094dbfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df041f802f9fd1f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/term_picker_dialog.py:330"}, "properties": {"repobilityId": "790820cde2b6d8ae", "scanner": "scanner-primary", "fingerprint": "df041f802f9fd1f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7800f613b91b89de", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/voice_command_dialog.py:81"}, "properties": {"repobilityId": "c9d7b5af1f1f116d", "scanner": "scanner-primary", "fingerprint": "7800f613b91b89de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86aa4b8cd1c689dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/termbase_manager.py:20"}, "properties": {"repobilityId": "36b46dc951ed07ea", "scanner": "scanner-primary", "fingerprint": "86aa4b8cd1c689dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3261569ea294e3ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/bilingual_markdown_handler.py:146"}, "properties": {"repobilityId": "35d9939309169110", "scanner": "scanner-primary", "fingerprint": "3261569ea294e3ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85e52c98e55ab353", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/phrase_docx_handler.py:108"}, "properties": {"repobilityId": "93184c79968857ff", "scanner": "scanner-primary", "fingerprint": "85e52c98e55ab353", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ac429843e7ac160", "level": "note", "message": {"text": "Legacy-named symbol `_open_clipboard_after_copy` in modules/clipboard_manager_widget.py:1266"}, "properties": {"repobilityId": "fc6978f70b2ae658", "scanner": "scanner-primary", "fingerprint": "9ac429843e7ac160", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15b6d31e1135045f", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/clipboard_manager_widget.py:87"}, "properties": {"repobilityId": "1e50f36ba60c6679", "scanner": "scanner-primary", "fingerprint": "15b6d31e1135045f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e37d5b62a98fac23", "level": "none", "message": {"text": "Commented-code block (10 lines) in modules/quicktrans.py:565"}, "properties": {"repobilityId": "bad7df414685645e", "scanner": "scanner-primary", "fingerprint": "e37d5b62a98fac23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82de27a4f27ca462", "level": "none", "message": {"text": "Commented-code block (6 lines) in modules/memoqrtf_handler.py:371"}, "properties": {"repobilityId": "dbee5da7c930fc88", "scanner": "scanner-primary", "fingerprint": "82de27a4f27ca462", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43ec97546f38ecd8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 modules/superdocs_viewer_qt.py:246"}, "properties": {"repobilityId": "0cc9455c1a027180", "scanner": "scanner-primary", "fingerprint": "43ec97546f38ecd8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c56f9526ce83ae6", "level": "note", "message": {"text": "Legacy-named symbol `esc_old` in modules/sdlppx_handler.py:631"}, "properties": {"repobilityId": "cf11c9366a556cb4", "scanner": "scanner-primary", "fingerprint": "1c56f9526ce83ae6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-08135a2734cb6701", "level": "none", "message": {"text": "Commented-code block (5 lines) in modules/sdlppx_handler.py:871"}, "properties": {"repobilityId": "16cfc50d8a9bf401", "scanner": "scanner-primary", "fingerprint": "08135a2734cb6701", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d6fdaf48bf2805f", "level": "none", "message": {"text": "Commented-code block (7 lines) in modules/chat_view_widget.py:325"}, "properties": {"repobilityId": "84021ee53626544b", "scanner": "scanner-primary", "fingerprint": "5d6fdaf48bf2805f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a82ddc364d6ff29a", "level": "none", "message": {"text": "Commented-code block (7 lines) in tools/merge_template.py:182"}, "properties": {"repobilityId": "7dbbddb0fb46d577", "scanner": "scanner-primary", "fingerprint": "a82ddc364d6ff29a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "eea6bf8898a60236", "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": "a4acfb1aaabaefa4", "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": "34ce8a2297be4f82", "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": "b98e00a2a2af8bcc", "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": "76c783db581f6477", "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": "b339f70c33260015", "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": "535476f41766c435", "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": "7d48d835f70fbdc9", "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": "2f2d7de3912c3542", "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": "82e65ad16880ad0a", "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": "19c8d8f8b4de995a", "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": "8b4b2c555c75e3d8", "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": "07e634b968f65ae1", "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": "73e050f2d5a26640", "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": "72b7a26227fa8c3b", "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": "2630b04d997266e1", "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": "48308c47100a4ca3", "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": "e6c107b966446285", "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": "f39a80c538cc3ea8", "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": "895622848cf268e3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}