{"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-d4b5d6b9be7a7e01", "name": "Possibly dead Python function: open_terms_pages", "shortDescription": {"text": "Possibly dead Python function: open_terms_pages"}, "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-28374b55f17a36b2", "name": "Possibly dead Python function: verify_access", "shortDescription": {"text": "Possibly dead Python function: verify_access"}, "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-fd4a2a0bf738cac3", "name": "Possibly dead Python function: pick_ffmpeg", "shortDescription": {"text": "Possibly dead Python function: pick_ffmpeg"}, "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-154746d6f42b3ced", "name": "Possibly dead Python function: pick_ffprobe", "shortDescription": {"text": "Possibly dead Python function: pick_ffprobe"}, "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-1c7c972d9aa6545d", "name": "Possibly dead Python function: pick_mlx_whisper", "shortDescription": {"text": "Possibly dead Python function: pick_mlx_whisper"}, "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-4430dd2f1e00fd9c", "name": "Possibly dead Python function: export_logs", "shortDescription": {"text": "Possibly dead Python function: export_logs"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18226e1be7f60b09", "name": "Possibly dead Python function: open_huggingface_auth", "shortDescription": {"text": "Possibly dead Python function: open_huggingface_auth"}, "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-53a72476982b2fcf", "name": "Possibly dead Python function: dragEnterEvent", "shortDescription": {"text": "Possibly dead Python function: dragEnterEvent"}, "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-4f0f64fec8d9699f", "name": "Possibly dead Python function: dropEvent", "shortDescription": {"text": "Possibly dead Python function: dropEvent"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90c44eac7be58529", "name": "Possibly dead Python function: set_expanded", "shortDescription": {"text": "Possibly dead Python function: set_expanded"}, "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-2d2872b664b82f0a", "name": "Possibly dead Python function: open_settings", "shortDescription": {"text": "Possibly dead Python function: open_settings"}, "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-856f77ea0fe95f40", "name": "Possibly dead Python function: check_updates", "shortDescription": {"text": "Possibly dead Python function: check_updates"}, "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-203b0026567d4942", "name": "Possibly dead Python function: pick_output_dir", "shortDescription": {"text": "Possibly dead Python function: pick_output_dir"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed06d4b48afaca3b", "name": "Possibly dead Python function: open_output_dir", "shortDescription": {"text": "Possibly dead Python function: open_output_dir"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43f4ce31c65514ad", "name": "Possibly dead Python function: pick_files", "shortDescription": {"text": "Possibly dead Python function: pick_files"}, "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-602cb8c923f7a857", "name": "Possibly dead Python function: remove_selected_files", "shortDescription": {"text": "Possibly dead Python function: remove_selected_files"}, "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-3a1648ec13583d3c", "name": "Possibly dead Python function: clear_queue", "shortDescription": {"text": "Possibly dead Python function: clear_queue"}, "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-62fc632e965f82d1", "name": "Possibly dead Python function: apply_current_settings_to_all", "shortDescription": {"text": "Possibly dead Python function: apply_current_settings_to_all"}, "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-0e0ce65ecbeaf0da", "name": "Possibly dead Python function: reset_current_job_to_preset", "shortDescription": {"text": "Possibly dead Python function: reset_current_job_to_preset"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3d76b90742c18c8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6fa79005bbf219e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03dc122aa328663d", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ed8fff217b230de", "name": "Very large file: cloud_transcription.py (2010 lines)", "shortDescription": {"text": "Very large file: cloud_transcription.py (2010 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-9d947fa7a3c7c3d2", "name": "Very large file: video_compactor.py (7535 lines)", "shortDescription": {"text": "Very large file: video_compactor.py (7535 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-044ceac83aba231b", "name": "Very large file: transcription_utils.py (3324 lines)", "shortDescription": {"text": "Very large file: transcription_utils.py (3324 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-53b9accafa3bef57", "name": "Very large file: tests/test_engine_pipeline.py (1297 lines)", "shortDescription": {"text": "Very large file: tests/test_engine_pipeline.py (1297 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-e84728ed989c01d3", "name": "Very large file: tests/test_engine_library.py (1578 lines)", "shortDescription": {"text": "Very large file: tests/test_engine_library.py (1578 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-76b5ecf006299384", "name": "Very large file: ekovideo_engine/library.py (1692 lines)", "shortDescription": {"text": "Very large file: ekovideo_engine/library.py (1692 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-59964addb51e488d", "name": "Very large file: ekovideo_engine/pipeline.py (4670 lines)", "shortDescription": {"text": "Very large file: ekovideo_engine/pipeline.py (4670 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 43 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 12 placeholder/mock markers across 4 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-b1f52d33acfcf1c3", "name": "Commented-code block (7 lines) in llm_corrections.py:386", "shortDescription": {"text": "Commented-code block (7 lines) in llm_corrections.py:386"}, "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-fff21fd4e3d23ad4", "name": "Commented-code block (5 lines) in cloud_transcription.py:55", "shortDescription": {"text": "Commented-code block (5 lines) in cloud_transcription.py:55"}, "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-bd3ba26292d13e71", "name": "Legacy-named symbol `seg_copy` in video_compactor.py:4363", "shortDescription": {"text": "Legacy-named symbol `seg_copy` in video_compactor.py:4363"}, "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-e903353b3dd18cd1", "name": "Commented-code block (6 lines) in video_compactor.py:2562", "shortDescription": {"text": "Commented-code block (6 lines) in video_compactor.py:2562"}, "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-f04b829f9e7dcfea", "name": "Network/subprocess call without timeout or try/except \u2014 video_compactor.py:801", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 video_compactor.py:801"}, "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-a0783b3853802df4", "name": "Commented-code block (5 lines) in web_context.py:201", "shortDescription": {"text": "Commented-code block (5 lines) in web_context.py:201"}, "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-79a863fd7fbb5132", "name": "Commented-code block (5 lines) in multipass.py:89", "shortDescription": {"text": "Commented-code block (5 lines) in multipass.py:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de50581c3ed3cc4a", "name": "Commented-code block (5 lines) in odoo_client.py:61", "shortDescription": {"text": "Commented-code block (5 lines) in odoo_client.py:61"}, "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-eb7aaefc35f434ab", "name": "Commented-code block (7 lines) in transcription_utils.py:17", "shortDescription": {"text": "Commented-code block (7 lines) in transcription_utils.py:17"}, "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-12798ad06bfcfa20", "name": "Commented-code block (5 lines) in database_manager.py:90", "shortDescription": {"text": "Commented-code block (5 lines) in database_manager.py:90"}, "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-5643da7246ba7951", "name": "Commented-code block (5 lines) in glossary_postprocess.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in glossary_postprocess.py:45"}, "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-f7adc8558ae8f618", "name": "Commented-code block (5 lines) in tests/test_engine_pipeline.py:546", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_engine_pipeline.py:546"}, "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-7413c1871c977b28", "name": "Commented-code block (5 lines) in tests/test_ffmpeg_cmd.py:568", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_ffmpeg_cmd.py:568"}, "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-1742b062ca651876", "name": "Legacy-named symbol `test_prepare_job_workspace_can_delete_original_after_copy` in tests/test_engine_cli.py:151", "shortDescription": {"text": "Legacy-named symbol `test_prepare_job_workspace_can_delete_original_after_copy` in tests/test_engine_cli.py:151"}, "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-8f9341fe1b4aa719", "name": "Legacy-named symbol `workspace_copy` in tests/test_runner_source_resolution.py:67", "shortDescription": {"text": "Legacy-named symbol `workspace_copy` in tests/test_runner_source_resolution.py:67"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ba55ed88f6ed1b2", "name": "Commented-code block (5 lines) in tests/test_runner_source_resolution.py:180", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_runner_source_resolution.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-d48f4083e0b32fb2", "name": "Commented-code block (5 lines) in tests/test_web_context.py:30", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_web_context.py:30"}, "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-d6a28a62afc4b126", "name": "Commented-code block (8 lines) in tests/test_quality_presets.py:35", "shortDescription": {"text": "Commented-code block (8 lines) in tests/test_quality_presets.py:35"}, "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-e4e4ce0130e7ed54", "name": "Commented-code block (7 lines) in tests/test_llm_speakers_prompt.py:102", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_llm_speakers_prompt.py:102"}, "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-ca4fcfba956f28ff", "name": "Commented-code block (5 lines) in tests/test_glossary_postprocess.py:233", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_glossary_postprocess.py:233"}, "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-a24e2df157ca16f1", "name": "Commented-code block (5 lines) in tests/test_loop_recovery.py:158", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_loop_recovery.py:158"}, "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-42ec11db7095eda6", "name": "Commented-code block (6 lines) in tests/test_model_catalog.py:123", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_model_catalog.py:123"}, "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-3aa9e29a7574ee44", "name": "Commented-code block (5 lines) in tests/test_hot_prompt_cycling.py:55", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_hot_prompt_cycling.py:55"}, "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-c395f355b45c627c", "name": "Commented-code block (7 lines) in tests/test_engine_library.py:795", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_engine_library.py:795"}, "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-b64f47f27de1a04a", "name": "Commented-code block (6 lines) in tests/test_llm_corrections.py:165", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_llm_corrections.py:165"}, "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-ae38aaf5e7ec5018", "name": "Commented-code block (8 lines) in ekovideo_engine/library.py:211", "shortDescription": {"text": "Commented-code block (8 lines) in ekovideo_engine/library.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-0e346f759844123f", "name": "Commented-code block (5 lines) in ekovideo_engine/deps.py:56", "shortDescription": {"text": "Commented-code block (5 lines) in ekovideo_engine/deps.py:56"}, "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-462561b000726f70", "name": "Commented-code block (6 lines) in ekovideo_engine/cli.py:227", "shortDescription": {"text": "Commented-code block (6 lines) in ekovideo_engine/cli.py:227"}, "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-18ea20ab1da302bc", "name": "Commented-code block (5 lines) in ekovideo_engine/models.py:58", "shortDescription": {"text": "Commented-code block (5 lines) in ekovideo_engine/models.py:58"}, "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-1ccf0739c645eb27", "name": "Legacy-named symbol `workspace_copy` in ekovideo_engine/runner.py:116", "shortDescription": {"text": "Legacy-named symbol `workspace_copy` in ekovideo_engine/runner.py:116"}, "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-57b007e8226ad6f9", "name": "Commented-code block (5 lines) in ekovideo_engine/runner.py:181", "shortDescription": {"text": "Commented-code block (5 lines) in ekovideo_engine/runner.py:181"}, "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-918fccc6877c0b8f", "name": "Commented-code block (7 lines) in ekovideo_engine/model_cache.py:82", "shortDescription": {"text": "Commented-code block (7 lines) in ekovideo_engine/model_cache.py:82"}, "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-904cdcb21a0bb64a", "name": "Commented-code block (5 lines) in ekovideo_engine/pipeline.py:400", "shortDescription": {"text": "Commented-code block (5 lines) in ekovideo_engine/pipeline.py:400"}, "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-a4fb3d31467e3cc1", "name": "Network/subprocess call without timeout or try/except \u2014 ekovideo_engine/pipeline.py:1611", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 ekovideo_engine/pipeline.py:1611"}, "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-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncloud_transcription.py:check_access, cloud_transcription.py:check_access, cloud_transcription.py:check_access, cloud_transcription.py:check_access\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-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ncloud_transcription.py:transcribe, cloud_transcription.py:transcribe, cloud_transcription.py:transcribe, cloud_transcription.py:transcribe\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nvideo_compactor.py:app_support_dir, ekovideo_engine/paths.py:app_support_dir\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nvideo_compactor.py:run, video_compactor.py:run, video_compactor.py:run, video_compactor.py:run\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:\nvideo_compactor.py:values, video_compactor.py:values, video_compactor.py:values\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nekovideo_engine/models.py:from_dict, ekovideo_engine/models.py:from_dict, ekovideo_engine/models.py:from_dict, ekovideo_engine/models.py:from_dict\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/18312"}, "properties": {"repository": "robjo82/EkoVideoCompressor", "repoUrl": "https://github.com/robjo82/EkoVideoCompressor", "branch": "main"}, "results": [{"ruleId": "scanner-d4b5d6b9be7a7e01", "level": "note", "message": {"text": "Possibly dead Python function: open_terms_pages"}, "properties": {"repobilityId": "a7fdf103333a9b47", "scanner": "scanner-primary", "fingerprint": "d4b5d6b9be7a7e01", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:918"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28374b55f17a36b2", "level": "note", "message": {"text": "Possibly dead Python function: verify_access"}, "properties": {"repobilityId": "9080bc11249434ad", "scanner": "scanner-primary", "fingerprint": "28374b55f17a36b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:923"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd4a2a0bf738cac3", "level": "note", "message": {"text": "Possibly dead Python function: pick_ffmpeg"}, "properties": {"repobilityId": "fc68a5eb6897bc68", "scanner": "scanner-primary", "fingerprint": "fd4a2a0bf738cac3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:1602"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-154746d6f42b3ced", "level": "note", "message": {"text": "Possibly dead Python function: pick_ffprobe"}, "properties": {"repobilityId": "7837b3a605abef8c", "scanner": "scanner-primary", "fingerprint": "154746d6f42b3ced", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:1607"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c7c972d9aa6545d", "level": "note", "message": {"text": "Possibly dead Python function: pick_mlx_whisper"}, "properties": {"repobilityId": "fbff145a02e3e9d7", "scanner": "scanner-primary", "fingerprint": "1c7c972d9aa6545d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6308"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4430dd2f1e00fd9c", "level": "note", "message": {"text": "Possibly dead Python function: export_logs"}, "properties": {"repobilityId": "e762d03eb352ff0b", "scanner": "scanner-primary", "fingerprint": "4430dd2f1e00fd9c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:1617"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-18226e1be7f60b09", "level": "note", "message": {"text": "Possibly dead Python function: open_huggingface_auth"}, "properties": {"repobilityId": "0a269e357aab5d77", "scanner": "scanner-primary", "fingerprint": "18226e1be7f60b09", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:1626"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53a72476982b2fcf", "level": "note", "message": {"text": "Possibly dead Python function: dragEnterEvent"}, "properties": {"repobilityId": "b697340237933307", "scanner": "scanner-primary", "fingerprint": "53a72476982b2fcf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:3590"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f0f64fec8d9699f", "level": "note", "message": {"text": "Possibly dead Python function: dropEvent"}, "properties": {"repobilityId": "357965e641e9f054", "scanner": "scanner-primary", "fingerprint": "4f0f64fec8d9699f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:3594"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-90c44eac7be58529", "level": "note", "message": {"text": "Possibly dead Python function: set_expanded"}, "properties": {"repobilityId": "27c22c31bfcbc153", "scanner": "scanner-primary", "fingerprint": "90c44eac7be58529", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:3647"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d2872b664b82f0a", "level": "note", "message": {"text": "Possibly dead Python function: open_settings"}, "properties": {"repobilityId": "d2ef2fdcb0f3da70", "scanner": "scanner-primary", "fingerprint": "2d2872b664b82f0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:5858"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-856f77ea0fe95f40", "level": "note", "message": {"text": "Possibly dead Python function: check_updates"}, "properties": {"repobilityId": "c257462a52351fde", "scanner": "scanner-primary", "fingerprint": "856f77ea0fe95f40", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:5968"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-203b0026567d4942", "level": "note", "message": {"text": "Possibly dead Python function: pick_output_dir"}, "properties": {"repobilityId": "b3d18f5d433fbc39", "scanner": "scanner-primary", "fingerprint": "203b0026567d4942", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6302"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed06d4b48afaca3b", "level": "note", "message": {"text": "Possibly dead Python function: open_output_dir"}, "properties": {"repobilityId": "6d5797c02892c61d", "scanner": "scanner-primary", "fingerprint": "ed06d4b48afaca3b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6397"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43f4ce31c65514ad", "level": "note", "message": {"text": "Possibly dead Python function: pick_files"}, "properties": {"repobilityId": "ec3adcf09224a076", "scanner": "scanner-primary", "fingerprint": "43f4ce31c65514ad", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6407"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-602cb8c923f7a857", "level": "note", "message": {"text": "Possibly dead Python function: remove_selected_files"}, "properties": {"repobilityId": "1f5e0df40583de32", "scanner": "scanner-primary", "fingerprint": "602cb8c923f7a857", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6521"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a1648ec13583d3c", "level": "note", "message": {"text": "Possibly dead Python function: clear_queue"}, "properties": {"repobilityId": "400e9c7b13f49dcf", "scanner": "scanner-primary", "fingerprint": "3a1648ec13583d3c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6540"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-62fc632e965f82d1", "level": "note", "message": {"text": "Possibly dead Python function: apply_current_settings_to_all"}, "properties": {"repobilityId": "36abafac3bdfc612", "scanner": "scanner-primary", "fingerprint": "62fc632e965f82d1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6757"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e0ce65ecbeaf0da", "level": "note", "message": {"text": "Possibly dead Python function: reset_current_job_to_preset"}, "properties": {"repobilityId": "f4e670b9a322c20f", "scanner": "scanner-primary", "fingerprint": "0e0ce65ecbeaf0da", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video_compactor.py:6783"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-e3d76b90742c18c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bc3e4674640e66d0", "scanner": "scanner-primary", "fingerprint": "e3d76b90742c18c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-macos.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-e3d76b90742c18c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "33a69bbbc7800905", "scanner": "scanner-primary", "fingerprint": "e3d76b90742c18c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-macos.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-e3d76b90742c18c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a0e36880f0330084", "scanner": "scanner-primary", "fingerprint": "e3d76b90742c18c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-macos.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-a6fa79005bbf219e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "58f477a97953e9ff", "scanner": "scanner-primary", "fingerprint": "a6fa79005bbf219e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-macos.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-a6fa79005bbf219e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f67f035f9c1d44b0", "scanner": "scanner-primary", "fingerprint": "a6fa79005bbf219e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-macos.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-a6fa79005bbf219e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d7906a40345f5858", "scanner": "scanner-primary", "fingerprint": "a6fa79005bbf219e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-macos.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-03dc122aa328663d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f01b003bf320f619", "scanner": "scanner-primary", "fingerprint": "03dc122aa328663d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-macos.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ed8fff217b230de", "level": "note", "message": {"text": "Very large file: cloud_transcription.py (2010 lines)"}, "properties": {"repobilityId": "e3f81d85c1af6759", "scanner": "scanner-primary", "fingerprint": "9ed8fff217b230de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d947fa7a3c7c3d2", "level": "note", "message": {"text": "Very large file: video_compactor.py (7535 lines)"}, "properties": {"repobilityId": "46be28dc3e20b57f", "scanner": "scanner-primary", "fingerprint": "9d947fa7a3c7c3d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-044ceac83aba231b", "level": "note", "message": {"text": "Very large file: transcription_utils.py (3324 lines)"}, "properties": {"repobilityId": "109a79ddaf0c61b0", "scanner": "scanner-primary", "fingerprint": "044ceac83aba231b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-53b9accafa3bef57", "level": "note", "message": {"text": "Very large file: tests/test_engine_pipeline.py (1297 lines)"}, "properties": {"repobilityId": "e0418ed42c7ca5ec", "scanner": "scanner-primary", "fingerprint": "53b9accafa3bef57", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e84728ed989c01d3", "level": "note", "message": {"text": "Very large file: tests/test_engine_library.py (1578 lines)"}, "properties": {"repobilityId": "71f17166ba0b9ef7", "scanner": "scanner-primary", "fingerprint": "e84728ed989c01d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-76b5ecf006299384", "level": "note", "message": {"text": "Very large file: ekovideo_engine/library.py (1692 lines)"}, "properties": {"repobilityId": "35cc0e66b069aa71", "scanner": "scanner-primary", "fingerprint": "76b5ecf006299384", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-59964addb51e488d", "level": "note", "message": {"text": "Very large file: ekovideo_engine/pipeline.py (4670 lines)"}, "properties": {"repobilityId": "6ad0c2ef984a368c", "scanner": "scanner-primary", "fingerprint": "59964addb51e488d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0a4081f934f1e5a4", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "3cc4c43629222045", "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": "ee49962fbf06d8f4", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "7084c4cbcf44c896", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "ecdc4505d0152381", "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": "4f9ba067e3797ba7", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-b1f52d33acfcf1c3", "level": "none", "message": {"text": "Commented-code block (7 lines) in llm_corrections.py:386"}, "properties": {"repobilityId": "3d979ad3741413e7", "scanner": "scanner-primary", "fingerprint": "b1f52d33acfcf1c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fff21fd4e3d23ad4", "level": "none", "message": {"text": "Commented-code block (5 lines) in cloud_transcription.py:55"}, "properties": {"repobilityId": "321baae50d1e18bf", "scanner": "scanner-primary", "fingerprint": "fff21fd4e3d23ad4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd3ba26292d13e71", "level": "note", "message": {"text": "Legacy-named symbol `seg_copy` in video_compactor.py:4363"}, "properties": {"repobilityId": "0f6ba5bcc5dad993", "scanner": "scanner-primary", "fingerprint": "bd3ba26292d13e71", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e903353b3dd18cd1", "level": "none", "message": {"text": "Commented-code block (6 lines) in video_compactor.py:2562"}, "properties": {"repobilityId": "e7ba631ac61d649a", "scanner": "scanner-primary", "fingerprint": "e903353b3dd18cd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f04b829f9e7dcfea", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 video_compactor.py:801"}, "properties": {"repobilityId": "d32820bcabb60d49", "scanner": "scanner-primary", "fingerprint": "f04b829f9e7dcfea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a0783b3853802df4", "level": "none", "message": {"text": "Commented-code block (5 lines) in web_context.py:201"}, "properties": {"repobilityId": "50239e9db8de7dd6", "scanner": "scanner-primary", "fingerprint": "a0783b3853802df4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79a863fd7fbb5132", "level": "none", "message": {"text": "Commented-code block (5 lines) in multipass.py:89"}, "properties": {"repobilityId": "a493637a5b703e33", "scanner": "scanner-primary", "fingerprint": "79a863fd7fbb5132", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de50581c3ed3cc4a", "level": "none", "message": {"text": "Commented-code block (5 lines) in odoo_client.py:61"}, "properties": {"repobilityId": "ea5f8b9baa2424e5", "scanner": "scanner-primary", "fingerprint": "de50581c3ed3cc4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb7aaefc35f434ab", "level": "none", "message": {"text": "Commented-code block (7 lines) in transcription_utils.py:17"}, "properties": {"repobilityId": "c044faa83b94ed5f", "scanner": "scanner-primary", "fingerprint": "eb7aaefc35f434ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12798ad06bfcfa20", "level": "none", "message": {"text": "Commented-code block (5 lines) in database_manager.py:90"}, "properties": {"repobilityId": "344e0eb8ac089cbe", "scanner": "scanner-primary", "fingerprint": "12798ad06bfcfa20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5643da7246ba7951", "level": "none", "message": {"text": "Commented-code block (5 lines) in glossary_postprocess.py:45"}, "properties": {"repobilityId": "1d1b410601a97722", "scanner": "scanner-primary", "fingerprint": "5643da7246ba7951", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7adc8558ae8f618", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_engine_pipeline.py:546"}, "properties": {"repobilityId": "bed8e6852dde7e79", "scanner": "scanner-primary", "fingerprint": "f7adc8558ae8f618", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7413c1871c977b28", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_ffmpeg_cmd.py:568"}, "properties": {"repobilityId": "9832a8f21f7d9716", "scanner": "scanner-primary", "fingerprint": "7413c1871c977b28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1742b062ca651876", "level": "note", "message": {"text": "Legacy-named symbol `test_prepare_job_workspace_can_delete_original_after_copy` in tests/test_engine_cli.py:151"}, "properties": {"repobilityId": "de7c46e0bdc123db", "scanner": "scanner-primary", "fingerprint": "1742b062ca651876", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8f9341fe1b4aa719", "level": "note", "message": {"text": "Legacy-named symbol `workspace_copy` in tests/test_runner_source_resolution.py:67"}, "properties": {"repobilityId": "f1f8b4eadd77b79f", "scanner": "scanner-primary", "fingerprint": "8f9341fe1b4aa719", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ba55ed88f6ed1b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_runner_source_resolution.py:180"}, "properties": {"repobilityId": "f2579e4e989e928f", "scanner": "scanner-primary", "fingerprint": "6ba55ed88f6ed1b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d48f4083e0b32fb2", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_web_context.py:30"}, "properties": {"repobilityId": "74066a501663b7dd", "scanner": "scanner-primary", "fingerprint": "d48f4083e0b32fb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6a28a62afc4b126", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/test_quality_presets.py:35"}, "properties": {"repobilityId": "4d758a0eb3415266", "scanner": "scanner-primary", "fingerprint": "d6a28a62afc4b126", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4e4ce0130e7ed54", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_llm_speakers_prompt.py:102"}, "properties": {"repobilityId": "dfa15e0f4376374f", "scanner": "scanner-primary", "fingerprint": "e4e4ce0130e7ed54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca4fcfba956f28ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_glossary_postprocess.py:233"}, "properties": {"repobilityId": "5f38189353895da0", "scanner": "scanner-primary", "fingerprint": "ca4fcfba956f28ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a24e2df157ca16f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_loop_recovery.py:158"}, "properties": {"repobilityId": "68913e0cd553b208", "scanner": "scanner-primary", "fingerprint": "a24e2df157ca16f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42ec11db7095eda6", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_model_catalog.py:123"}, "properties": {"repobilityId": "599d0b59877fe6f2", "scanner": "scanner-primary", "fingerprint": "42ec11db7095eda6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3aa9e29a7574ee44", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_hot_prompt_cycling.py:55"}, "properties": {"repobilityId": "cbc130c8776f1669", "scanner": "scanner-primary", "fingerprint": "3aa9e29a7574ee44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c395f355b45c627c", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_engine_library.py:795"}, "properties": {"repobilityId": "0334ec2f30e0f836", "scanner": "scanner-primary", "fingerprint": "c395f355b45c627c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b64f47f27de1a04a", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_llm_corrections.py:165"}, "properties": {"repobilityId": "a088296e2631d387", "scanner": "scanner-primary", "fingerprint": "b64f47f27de1a04a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae38aaf5e7ec5018", "level": "none", "message": {"text": "Commented-code block (8 lines) in ekovideo_engine/library.py:211"}, "properties": {"repobilityId": "868ea51b9624be07", "scanner": "scanner-primary", "fingerprint": "ae38aaf5e7ec5018", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e346f759844123f", "level": "none", "message": {"text": "Commented-code block (5 lines) in ekovideo_engine/deps.py:56"}, "properties": {"repobilityId": "761f6a4aa6a5af89", "scanner": "scanner-primary", "fingerprint": "0e346f759844123f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-462561b000726f70", "level": "none", "message": {"text": "Commented-code block (6 lines) in ekovideo_engine/cli.py:227"}, "properties": {"repobilityId": "51b7d96daa771943", "scanner": "scanner-primary", "fingerprint": "462561b000726f70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18ea20ab1da302bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in ekovideo_engine/models.py:58"}, "properties": {"repobilityId": "a5feece65e8b0664", "scanner": "scanner-primary", "fingerprint": "18ea20ab1da302bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ccf0739c645eb27", "level": "note", "message": {"text": "Legacy-named symbol `workspace_copy` in ekovideo_engine/runner.py:116"}, "properties": {"repobilityId": "20be69db88357428", "scanner": "scanner-primary", "fingerprint": "1ccf0739c645eb27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-57b007e8226ad6f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in ekovideo_engine/runner.py:181"}, "properties": {"repobilityId": "3d622f6bdae9a647", "scanner": "scanner-primary", "fingerprint": "57b007e8226ad6f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-918fccc6877c0b8f", "level": "none", "message": {"text": "Commented-code block (7 lines) in ekovideo_engine/model_cache.py:82"}, "properties": {"repobilityId": "1050fa7f1efe4fbf", "scanner": "scanner-primary", "fingerprint": "918fccc6877c0b8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-904cdcb21a0bb64a", "level": "none", "message": {"text": "Commented-code block (5 lines) in ekovideo_engine/pipeline.py:400"}, "properties": {"repobilityId": "49e9556edb29e15d", "scanner": "scanner-primary", "fingerprint": "904cdcb21a0bb64a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4fb3d31467e3cc1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 ekovideo_engine/pipeline.py:1611"}, "properties": {"repobilityId": "900bd6222bbf3086", "scanner": "scanner-primary", "fingerprint": "a4fb3d31467e3cc1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "512dae068f068e6d", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "090717012b7df231", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e8482266ccc1d07e", "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": "fca6e69a57a5ad3b", "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": "a0a1664a72f90c7f", "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": "693349afbd7b5243", "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": "f0109d91707023ec", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "586b753d1bdc1d62", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "dfe6d2164ac44ed7", "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": "06a49eedda258041", "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": "26d2a15dcdf58a41", "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": "f899d4dbd8c394ff", "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": "28cdca0a7b6935f8", "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": "c3b6dd2d7cc5baac", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "267860a56f0e847b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "38adbc624b7389de", "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": "8d0585b3763ebdf5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}