{"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-edeb49b0dbaae089", "name": "Possibly dead Python function: require", "shortDescription": {"text": "Possibly dead Python function: require"}, "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-be6fffa3a1a4d87e", "name": "Possibly dead Python function: cb_builder", "shortDescription": {"text": "Possibly dead Python function: cb_builder"}, "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-c6d0be3144af91ad", "name": "Possibly dead Python function: cb_version", "shortDescription": {"text": "Possibly dead Python function: cb_version"}, "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-d2644ea8487388cd", "name": "Possibly dead Python function: do_cmd_test", "shortDescription": {"text": "Possibly dead Python function: do_cmd_test"}, "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-0f79f3d9934f4ede", "name": "Possibly dead Python function: do_rand_test", "shortDescription": {"text": "Possibly dead Python function: do_rand_test"}, "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-499e12bc29944763", "name": "Possibly dead Python function: do_rtl_regression", "shortDescription": {"text": "Possibly dead Python function: do_rtl_regression"}, "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-fe65d29d1e945a43", "name": "Possibly dead Python function: do_gen_model_filelist", "shortDescription": {"text": "Possibly dead Python function: do_gen_model_filelist"}, "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-7f7edcfeaa579072", "name": "Possibly dead Python function: do_cmd_hier", "shortDescription": {"text": "Possibly dead Python function: do_cmd_hier"}, "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-75206cc841156081", "name": "Possibly dead Python function: do_cmd_hier_query", "shortDescription": {"text": "Possibly dead Python function: do_cmd_hier_query"}, "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-db8b898e9254aa5d", "name": "Possibly dead Python function: do_cmd_axi_profile_discover", "shortDescription": {"text": "Possibly dead Python function: do_cmd_axi_profile_discover"}, "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-d60d38b9280294a3", "name": "Possibly dead Python function: do_cmd_axi_profile_run", "shortDescription": {"text": "Possibly dead Python function: do_cmd_axi_profile_run"}, "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-7be9dd760c92eb76", "name": "Possibly dead Python function: do_cmd_axi_profile_gen_monitor", "shortDescription": {"text": "Possibly dead Python function: do_cmd_axi_profile_gen_monitor"}, "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-3cee5267c4dd294e", "name": "Possibly dead Python function: do_cmd_axi_profile_notebook", "shortDescription": {"text": "Possibly dead Python function: do_cmd_axi_profile_notebook"}, "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-493bfa2b2622e0e3", "name": "Possibly dead Python function: do_docs_list", "shortDescription": {"text": "Possibly dead Python function: do_docs_list"}, "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-c05af8b06d36c1c2", "name": "Possibly dead Python function: do_docs_show", "shortDescription": {"text": "Possibly dead Python function: do_docs_show"}, "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-3751635512a2e8b6", "name": "Possibly dead Python function: do_spec_list", "shortDescription": {"text": "Possibly dead Python function: do_spec_list"}, "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-dd8d42abbf62b000", "name": "Possibly dead Python function: do_spec_check_testplan", "shortDescription": {"text": "Possibly dead Python function: do_spec_check_testplan"}, "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-56574305c752df1f", "name": "Possibly dead Python function: do_spec_check_coverage", "shortDescription": {"text": "Possibly dead Python function: do_spec_check_coverage"}, "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-7ccf021c610c10c7", "name": "Possibly dead Python function: do_cmd_synth", "shortDescription": {"text": "Possibly dead Python function: do_cmd_synth"}, "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-0c5ce6e9c866d2b2", "name": "Possibly dead Python function: do_cmd_pnr", "shortDescription": {"text": "Possibly dead Python function: do_cmd_pnr"}, "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-6d274741661b0d71", "name": "Possibly dead Python function: do_cmd_power", "shortDescription": {"text": "Possibly dead Python function: do_cmd_power"}, "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-6447105981defbff", "name": "Possibly dead Python function: do_cmd_fpga", "shortDescription": {"text": "Possibly dead Python function: do_cmd_fpga"}, "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-7fb96cf4b254222f", "name": "Possibly dead Python function: do_fpga_regression", "shortDescription": {"text": "Possibly dead Python function: do_fpga_regression"}, "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-421e7cdeaed03f78", "name": "Possibly dead Python function: do_power_regression", "shortDescription": {"text": "Possibly dead Python function: do_power_regression"}, "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-11f5ca929fc5970e", "name": "Possibly dead Python function: do_synth_regression", "shortDescription": {"text": "Possibly dead Python function: do_synth_regression"}, "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-d37602102d9508bc", "name": "Possibly dead Python function: do_cmd_saif", "shortDescription": {"text": "Possibly dead Python function: do_cmd_saif"}, "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-a3e9e4e3d69b38ea", "name": "Possibly dead Python function: do_cmd_cdc", "shortDescription": {"text": "Possibly dead Python function: do_cmd_cdc"}, "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-cf5efe689d7d3208", "name": "Possibly dead Python function: do_cdc_regression", "shortDescription": {"text": "Possibly dead Python function: do_cdc_regression"}, "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-c6db5fc1383dfe93", "name": "Possibly dead Python function: do_cmd_fpv", "shortDescription": {"text": "Possibly dead Python function: do_cmd_fpv"}, "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-645a1a9c44a47b38", "name": "Insecure pattern 'exec_used' in src/rtl_buddy/rtl_buddy.py:1121", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/rtl_buddy/rtl_buddy.py:1121"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c1749b624fa2736", "name": "Insecure pattern 'exec_used' in src/rtl_buddy/tools/vlog_sim.py:402", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/rtl_buddy/tools/vlog_sim.py:402"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78360de89f0e90a8", "name": "Insecure pattern 'subprocess_shell_true' in src/rtl_buddy/tools/surfer_wcp.py:411", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/rtl_buddy/tools/surfer_wcp.py:411"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7efbda965f283c17", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@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-0763d85002569570", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "lycheeverse/lychee-action@v2 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": "medium", "confidence": 1.0}}, {"id": "scanner-14ce8614dd03f409", "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-de53ac274e5b4ecf", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v8 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-37716d9c0a33ad5c", "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-46c644c6227e4d4a", "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@v5 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-1838a141491ce38c", "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-c298aa570d6599b3", "name": "Very large file: tests/test_synth.py (1734 lines)", "shortDescription": {"text": "Very large file: tests/test_synth.py (1734 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-e36bf7a28a253a4d", "name": "Very large file: src/rtl_buddy/rtl_buddy.py (6054 lines)", "shortDescription": {"text": "Very large file: src/rtl_buddy/rtl_buddy.py (6054 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 30 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 33 placeholder/mock markers across 9 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-5892f377c14a34c1", "name": "Agent authority lacks a verifier contract: .claude/skills/audit-template/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/audit-template/SKILL.md"}, "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-2565fa3f81b28fa4", "name": "Legacy-named symbol `too_old` in tests/test_tool_manifest.py:487", "shortDescription": {"text": "Legacy-named symbol `too_old` in tests/test_tool_manifest.py:487"}, "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-93fe9c2453f7985b", "name": "Commented-code block (5 lines) in tests/test_tool_manifest.py:704", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_tool_manifest.py:704"}, "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-7b5d7b2dc3c5da36", "name": "Commented-code block (5 lines) in tests/test_verible_filelist.py:145", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_verible_filelist.py:145"}, "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-0c64a07b64ffa50b", "name": "Commented-code block (6 lines) in tests/test_hub_send_cli.py:104", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_hub_send_cli.py:104"}, "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-6765b5c01d4096b8", "name": "Legacy-named symbol `test_check_view_version_raises_when_too_old` in tests/test_hub_viewer_bundle_discovery.py:121", "shortDescription": {"text": "Legacy-named symbol `test_check_view_version_raises_when_too_old` in tests/test_hub_viewer_bundle_discovery.py:121"}, "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-e229aade71e0d67f", "name": "Commented-code block (5 lines) in tests/test_wave_hub_bridge.py:36", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_wave_hub_bridge.py:36"}, "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-faa5c1065c5a341e", "name": "Legacy-named symbol `t_old` in tests/test_hub_viewer_http.py:1092", "shortDescription": {"text": "Legacy-named symbol `t_old` in tests/test_hub_viewer_http.py:1092"}, "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-c2e339d34d05310c", "name": "Commented-code block (6 lines) in tests/test_hub_viewer_http.py:787", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_hub_viewer_http.py:787"}, "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-2754d2c87ca02c76", "name": "Commented-code block (6 lines) in tests/test_fpv_slang.py:187", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_fpv_slang.py:187"}, "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-06547f97675906f2", "name": "Commented-code block (7 lines) in tests/test_hub_server.py:761", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_hub_server.py:761"}, "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-5fb2d25809d14748", "name": "Commented-code block (5 lines) in scripts/gen_cli_reference.py:15", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen_cli_reference.py:15"}, "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-7bd9d08cae7c9476", "name": "Commented-code block (7 lines) in src/rtl_buddy/tool_manifest.py:562", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tool_manifest.py:562"}, "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-be55e4045af06692", "name": "Commented-code block (9 lines) in src/rtl_buddy/process_utils.py:95", "shortDescription": {"text": "Commented-code block (9 lines) in src/rtl_buddy/process_utils.py:95"}, "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-7b26624c1bd2e861", "name": "Commented-code block (5 lines) in src/rtl_buddy/rtl_buddy.py:628", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/rtl_buddy.py:628"}, "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-91e693df87998ebe", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/rtl_buddy.py:5969", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/rtl_buddy.py:5969"}, "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-5e00fca308ea6cef", "name": "Commented-code block (5 lines) in src/rtl_buddy/runner/fpga_runner.py:14", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/runner/fpga_runner.py:14"}, "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-b887ca39ff62b9af", "name": "Commented-code block (7 lines) in src/rtl_buddy/runner/mut_runner.py:46", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/runner/mut_runner.py:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb4ece14bec94e2d", "name": "Commented-code block (6 lines) in src/rtl_buddy/hub/model_discovery.py:75", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/model_discovery.py:75"}, "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-19d57eb0c87871e5", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/hub/launchagent.py:148", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/hub/launchagent.py:148"}, "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-5c4d28554a637e72", "name": "Commented-code block (6 lines) in src/rtl_buddy/hub/viewer_http.py:193", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/viewer_http.py:193"}, "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-31da07cdd64fac71", "name": "Commented-code block (5 lines) in src/rtl_buddy/hub/cli.py:348", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/hub/cli.py:348"}, "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-da6619ce6fd0f56f", "name": "Commented-code block (9 lines) in src/rtl_buddy/hub/loop.py:37", "shortDescription": {"text": "Commented-code block (9 lines) in src/rtl_buddy/hub/loop.py:37"}, "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-94b2b60ad8a624f9", "name": "Commented-code block (6 lines) in src/rtl_buddy/hub/server.py:375", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/server.py:375"}, "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-5385d312fb25b0b3", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/hub/cdc_builder.py:235", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/hub/cdc_builder.py:235"}, "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-c88a5751c5dc606f", "name": "Commented-code block (5 lines) in src/rtl_buddy/hub/axi_notebook_launcher.py:44", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/hub/axi_notebook_launcher.py:44"}, "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-993078747ab9b726", "name": "Commented-code block (6 lines) in src/rtl_buddy/hub/test_discovery.py:123", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/test_discovery.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-6f61a7611cecd097", "name": "Commented-code block (7 lines) in src/rtl_buddy/hub/resolver.py:148", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/hub/resolver.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-7da68db88afb013a", "name": "Commented-code block (6 lines) in src/rtl_buddy/config/cdc.py:95", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/cdc.py:95"}, "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-48593e278e70024b", "name": "Commented-code block (6 lines) in src/rtl_buddy/config/mut.py:118", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/mut.py:118"}, "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-dac1acadbe327536", "name": "Commented-code block (5 lines) in src/rtl_buddy/config/model.py:200", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/config/model.py:200"}, "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-21f246178258f2ba", "name": "Commented-code block (6 lines) in src/rtl_buddy/config/fpga.py:46", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/fpga.py:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb8e0bdc43d12916", "name": "Commented-code block (6 lines) in src/rtl_buddy/config/fpv.py:108", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/fpv.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-6feb8a3a5d3fc57c", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/config/root.py:343", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/config/root.py:343"}, "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-170185ad3a727a74", "name": "Commented-code block (9 lines) in src/rtl_buddy/config/test.py:165", "shortDescription": {"text": "Commented-code block (9 lines) in src/rtl_buddy/config/test.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-235a4ffb33168580", "name": "Commented-code block (5 lines) in src/rtl_buddy/pnr/klayout/gds2png.py:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/pnr/klayout/gds2png.py:3"}, "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-408f1511cfe67341", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/verible.py:43", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/verible.py:43"}, "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-7bb04afd571424d8", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/vlog_sim.py:91", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/vlog_sim.py:91"}, "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-3725024f2372e143", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/vlog_cov.py:550", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/vlog_cov.py:550"}, "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-703cee7d9d5ff5db", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/power_openroad.py:192", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/power_openroad.py:192"}, "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-c7451fbe4f1aa0ea", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/power_openroad.py:309", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/power_openroad.py:309"}, "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-e38529f4765ec44c", "name": "Commented-code block (10 lines) in src/rtl_buddy/tools/fpv_vacuity.py:37", "shortDescription": {"text": "Commented-code block (10 lines) in src/rtl_buddy/tools/fpv_vacuity.py:37"}, "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-5c6852b66aa9f50a", "name": "Commented-code block (6 lines) in src/rtl_buddy/tools/vlog_post.py:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/rtl_buddy/tools/vlog_post.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c9789867115c9c5", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/wave_hub_bridge.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/wave_hub_bridge.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f56e0a987e9310f9", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/sby_fpv.py:50", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/sby_fpv.py:50"}, "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-6be63ee29de63963", "name": "Commented-code block (7 lines) in src/rtl_buddy/tools/fpga_vivado_flow.py:166", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/fpga_vivado_flow.py:166"}, "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-e0d2e2ffa9d3817f", "name": "Legacy-named symbol `memrd_v2` in src/rtl_buddy/tools/fpv_coi.py:219", "shortDescription": {"text": "Legacy-named symbol `memrd_v2` in src/rtl_buddy/tools/fpv_coi.py:219"}, "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-e259803cd6c3a237", "name": "Commented-code block (9 lines) in src/rtl_buddy/tools/fpv_coi.py:48", "shortDescription": {"text": "Commented-code block (9 lines) in src/rtl_buddy/tools/fpv_coi.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-0b1219bad4729d05", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/synth_openroad.py:125", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/synth_openroad.py:125"}, "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-57ac950816001484", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/synth_openroad.py:395", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/synth_openroad.py:395"}, "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-e7c5375efcb280fd", "name": "Commented-code block (7 lines) in src/rtl_buddy/tools/synth_yosys.py:87", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/synth_yosys.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-a298358b10a94f0e", "name": "Legacy-named symbol `_remove_legacy` in src/rtl_buddy/tools/nvim_install.py:165", "shortDescription": {"text": "Legacy-named symbol `_remove_legacy` in src/rtl_buddy/tools/nvim_install.py:165"}, "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-2c324800705c7a9c", "name": "Commented-code block (7 lines) in src/rtl_buddy/tools/nvim_install.py:41", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/nvim_install.py:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-515604d9438cbce4", "name": "Commented-code block (7 lines) in src/rtl_buddy/tools/hier_rtl_buddy_view.py:98", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/hier_rtl_buddy_view.py:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-777de1fd1c52419a", "name": "Commented-code block (7 lines) in src/rtl_buddy/tools/pnr_openroad.py:308", "shortDescription": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/pnr_openroad.py:308"}, "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-cf7ee2c24573d1a7", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/pnr_openroad.py:306", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/pnr_openroad.py:306"}, "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-75d7a17b75b39c0f", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/cdc_rtl_buddy.py:189", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/cdc_rtl_buddy.py:189"}, "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-3c23cede9565adfe", "name": "Commented-code block (5 lines) in src/rtl_buddy/tools/axi_profile_rtl_buddy.py:230", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/axi_profile_rtl_buddy.py:230"}, "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-8a8058c37e011397", "name": "Commented-code block (9 lines) in src/rtl_buddy/tools/surfer_wcp.py:694", "shortDescription": {"text": "Commented-code block (9 lines) in src/rtl_buddy/tools/surfer_wcp.py:694"}, "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-bcfa8068ce7b0182", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/surfer_wcp.py:410", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/surfer_wcp.py:410"}, "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-8e31d4968191690b", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/coverview.py:82", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/coverview.py:82"}, "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-5167a26b502f4b48", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/xplr/commands.py:119", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/xplr/commands.py:119"}, "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-aea5d61d5eacdc93", "name": "Commented-code block (5 lines) in src/rtl_buddy/xplr/schema.py:86", "shortDescription": {"text": "Commented-code block (5 lines) in src/rtl_buddy/xplr/schema.py:86"}, "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-a517dc8cb545696e", "name": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/xplr/gitprov.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/xplr/gitprov.py:77"}, "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-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rtl_buddy/tool_manifest.py:detect, src/rtl_buddy/tool_manifest.py:detect, src/rtl_buddy/tool_manifest.py:detect, src/rtl_buddy/tool_manifest.py:detect\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rtl_buddy/rtl_buddy.py:do_cmd_axi_profile_discover, src/rtl_buddy/rtl_buddy.py:do_cmd_axi_profile_gen_monitor\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rtl_buddy/rtl_buddy.py:do_spec_list, src/rtl_buddy/rtl_buddy.py:do_spec_check_testplan, src/rtl_buddy/rtl_buddy.py:do_spec_check_coverage\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-122053f21232d80c", "name": "Near-duplicate function bodies in 14 places", "shortDescription": {"text": "Near-duplicate function bodies in 14 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rtl_buddy/config/pnr.py:get_name, src/rtl_buddy/config/pnr.py:get_name, src/rtl_buddy/config/cdc.py:get_name, src/rtl_buddy/config/cdc.py:get_name\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/rtl_buddy/config/pnr.py:is_xfail, src/rtl_buddy/config/power.py:is_xfail, src/rtl_buddy/config/fpga.py:is_xfail, src/rtl_buddy/config/synth.py:is_xfail\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/18534"}, "properties": {"repository": "rtl-buddy/rtl_buddy", "repoUrl": "https://github.com/rtl-buddy/rtl_buddy", "branch": "main"}, "results": [{"ruleId": "scanner-edeb49b0dbaae089", "level": "note", "message": {"text": "Possibly dead Python function: require"}, "properties": {"repobilityId": "debfa90dcc9e5806", "scanner": "scanner-primary", "fingerprint": "edeb49b0dbaae089", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/tool_manifest.py:1096"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be6fffa3a1a4d87e", "level": "note", "message": {"text": "Possibly dead Python function: cb_builder"}, "properties": {"repobilityId": "adbc9a8fe4d52562", "scanner": "scanner-primary", "fingerprint": "be6fffa3a1a4d87e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:118"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c6d0be3144af91ad", "level": "note", "message": {"text": "Possibly dead Python function: cb_version"}, "properties": {"repobilityId": "d1dace90e7188d91", "scanner": "scanner-primary", "fingerprint": "c6d0be3144af91ad", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:133"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2644ea8487388cd", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_test"}, "properties": {"repobilityId": "d92259b6f3c4bce9", "scanner": "scanner-primary", "fingerprint": "d2644ea8487388cd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:809"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f79f3d9934f4ede", "level": "note", "message": {"text": "Possibly dead Python function: do_rand_test"}, "properties": {"repobilityId": "740d954e12bb4d11", "scanner": "scanner-primary", "fingerprint": "0f79f3d9934f4ede", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:997"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-499e12bc29944763", "level": "note", "message": {"text": "Possibly dead Python function: do_rtl_regression"}, "properties": {"repobilityId": "f31dde22b031cdb7", "scanner": "scanner-primary", "fingerprint": "499e12bc29944763", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:1277"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe65d29d1e945a43", "level": "note", "message": {"text": "Possibly dead Python function: do_gen_model_filelist"}, "properties": {"repobilityId": "0114be43be85e182", "scanner": "scanner-primary", "fingerprint": "fe65d29d1e945a43", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:1565"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f7edcfeaa579072", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_hier"}, "properties": {"repobilityId": "0f465a627a929166", "scanner": "scanner-primary", "fingerprint": "7f7edcfeaa579072", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:1619"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75206cc841156081", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_hier_query"}, "properties": {"repobilityId": "d32a8f17547c9aa9", "scanner": "scanner-primary", "fingerprint": "75206cc841156081", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:1767"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db8b898e9254aa5d", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_axi_profile_discover"}, "properties": {"repobilityId": "42140d01847d4da0", "scanner": "scanner-primary", "fingerprint": "db8b898e9254aa5d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:1855"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d60d38b9280294a3", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_axi_profile_run"}, "properties": {"repobilityId": "8ec61805f0016a45", "scanner": "scanner-primary", "fingerprint": "d60d38b9280294a3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:1912"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7be9dd760c92eb76", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_axi_profile_gen_monitor"}, "properties": {"repobilityId": "dae2df845e6608c4", "scanner": "scanner-primary", "fingerprint": "7be9dd760c92eb76", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2014"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3cee5267c4dd294e", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_axi_profile_notebook"}, "properties": {"repobilityId": "1021357da39307a1", "scanner": "scanner-primary", "fingerprint": "3cee5267c4dd294e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2086"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-493bfa2b2622e0e3", "level": "note", "message": {"text": "Possibly dead Python function: do_docs_list"}, "properties": {"repobilityId": "a33f4c9bbc451a48", "scanner": "scanner-primary", "fingerprint": "493bfa2b2622e0e3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2166"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c05af8b06d36c1c2", "level": "note", "message": {"text": "Possibly dead Python function: do_docs_show"}, "properties": {"repobilityId": "ca57bb253f82ddc8", "scanner": "scanner-primary", "fingerprint": "c05af8b06d36c1c2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2175"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3751635512a2e8b6", "level": "note", "message": {"text": "Possibly dead Python function: do_spec_list"}, "properties": {"repobilityId": "75138170b8fd903a", "scanner": "scanner-primary", "fingerprint": "3751635512a2e8b6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2219"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd8d42abbf62b000", "level": "note", "message": {"text": "Possibly dead Python function: do_spec_check_testplan"}, "properties": {"repobilityId": "ebb8d0c8516a33d9", "scanner": "scanner-primary", "fingerprint": "dd8d42abbf62b000", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2287"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56574305c752df1f", "level": "note", "message": {"text": "Possibly dead Python function: do_spec_check_coverage"}, "properties": {"repobilityId": "297e0c088c9fb15d", "scanner": "scanner-primary", "fingerprint": "56574305c752df1f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2375"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ccf021c610c10c7", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_synth"}, "properties": {"repobilityId": "d58246a27ed15486", "scanner": "scanner-primary", "fingerprint": "7ccf021c610c10c7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2641"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c5ce6e9c866d2b2", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_pnr"}, "properties": {"repobilityId": "67518d59b5c24221", "scanner": "scanner-primary", "fingerprint": "0c5ce6e9c866d2b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2709"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d274741661b0d71", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_power"}, "properties": {"repobilityId": "ffac15902c046984", "scanner": "scanner-primary", "fingerprint": "6d274741661b0d71", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:2919"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6447105981defbff", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_fpga"}, "properties": {"repobilityId": "3d59971435b2c3ff", "scanner": "scanner-primary", "fingerprint": "6447105981defbff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:3110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fb96cf4b254222f", "level": "note", "message": {"text": "Possibly dead Python function: do_fpga_regression"}, "properties": {"repobilityId": "d9308c6bb02a6141", "scanner": "scanner-primary", "fingerprint": "7fb96cf4b254222f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:3318"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-421e7cdeaed03f78", "level": "note", "message": {"text": "Possibly dead Python function: do_power_regression"}, "properties": {"repobilityId": "88d0710ef1031b7a", "scanner": "scanner-primary", "fingerprint": "421e7cdeaed03f78", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:3412"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11f5ca929fc5970e", "level": "note", "message": {"text": "Possibly dead Python function: do_synth_regression"}, "properties": {"repobilityId": "69786e917704c215", "scanner": "scanner-primary", "fingerprint": "11f5ca929fc5970e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:3496"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d37602102d9508bc", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_saif"}, "properties": {"repobilityId": "103df8eda8c8b804", "scanner": "scanner-primary", "fingerprint": "d37602102d9508bc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:3668"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3e9e4e3d69b38ea", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_cdc"}, "properties": {"repobilityId": "a243b00907b76c90", "scanner": "scanner-primary", "fingerprint": "a3e9e4e3d69b38ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:3685"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf5efe689d7d3208", "level": "note", "message": {"text": "Possibly dead Python function: do_cdc_regression"}, "properties": {"repobilityId": "78b5f94f684523bc", "scanner": "scanner-primary", "fingerprint": "cf5efe689d7d3208", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:4037"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c6db5fc1383dfe93", "level": "note", "message": {"text": "Possibly dead Python function: do_cmd_fpv"}, "properties": {"repobilityId": "1b62d1e35bdab042", "scanner": "scanner-primary", "fingerprint": "c6db5fc1383dfe93", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py:4288"}, "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-645a1a9c44a47b38", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/rtl_buddy/rtl_buddy.py:1121"}, "properties": {"repobilityId": "4c15d84b996bebc7", "scanner": "scanner-primary", "fingerprint": "645a1a9c44a47b38", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/rtl_buddy.py"}, "region": {"startLine": 1121}}}]}, {"ruleId": "scanner-1c1749b624fa2736", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/rtl_buddy/tools/vlog_sim.py:402"}, "properties": {"repobilityId": "a5f879e3eae9ecb7", "scanner": "scanner-primary", "fingerprint": "1c1749b624fa2736", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/tools/vlog_sim.py"}, "region": {"startLine": 402}}}]}, {"ruleId": "scanner-78360de89f0e90a8", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/rtl_buddy/tools/surfer_wcp.py:411"}, "properties": {"repobilityId": "228c892c5e7b8998", "scanner": "scanner-primary", "fingerprint": "78360de89f0e90a8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/rtl_buddy/tools/surfer_wcp.py"}, "region": {"startLine": 411}}}]}, {"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-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8299da264abbc94", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-0763d85002569570", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "48e031c9b0bc19eb", "scanner": "scanner-primary", "fingerprint": "0763d85002569570", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-14ce8614dd03f409", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "81c5c697653f94e8", "scanner": "scanner-primary", "fingerprint": "14ce8614dd03f409", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de53ac274e5b4ecf", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c989f6fb8054220e", "scanner": "scanner-primary", "fingerprint": "de53ac274e5b4ecf", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-de53ac274e5b4ecf", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b8decd2763556e20", "scanner": "scanner-primary", "fingerprint": "de53ac274e5b4ecf", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-de53ac274e5b4ecf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8ead6a2c2bfe167b", "scanner": "scanner-primary", "fingerprint": "de53ac274e5b4ecf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-37716d9c0a33ad5c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "abfb5752158cf655", "scanner": "scanner-primary", "fingerprint": "37716d9c0a33ad5c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a236e5722d902eaf", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "40935cfbecf47512", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3863e0af2f2768cd", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a6b989c9e6964e37", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8eb96fb1706184f3", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c298aa570d6599b3", "level": "note", "message": {"text": "Very large file: tests/test_synth.py (1734 lines)"}, "properties": {"repobilityId": "3ccba98c1c16db7e", "scanner": "scanner-primary", "fingerprint": "c298aa570d6599b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e36bf7a28a253a4d", "level": "note", "message": {"text": "Very large file: src/rtl_buddy/rtl_buddy.py (6054 lines)"}, "properties": {"repobilityId": "c395b0bfd9cda7c7", "scanner": "scanner-primary", "fingerprint": "e36bf7a28a253a4d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "3ea0a9ffc6638983", "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": "deea741ef0d5fe70", "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": "0eedda60f273f729", "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": "610c5c1c3e118e0a", "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": "b30d68f5303fd982", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-5892f377c14a34c1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/audit-template/SKILL.md"}, "properties": {"repobilityId": "19d9990514c68add", "scanner": "scanner-primary", "fingerprint": "5892f377c14a34c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/audit-template/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2565fa3f81b28fa4", "level": "note", "message": {"text": "Legacy-named symbol `too_old` in tests/test_tool_manifest.py:487"}, "properties": {"repobilityId": "0b1124588c88706b", "scanner": "scanner-primary", "fingerprint": "2565fa3f81b28fa4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-93fe9c2453f7985b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_tool_manifest.py:704"}, "properties": {"repobilityId": "c162eac7f9a243c5", "scanner": "scanner-primary", "fingerprint": "93fe9c2453f7985b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b5d7b2dc3c5da36", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_verible_filelist.py:145"}, "properties": {"repobilityId": "c7eab40bf4d8d63f", "scanner": "scanner-primary", "fingerprint": "7b5d7b2dc3c5da36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c64a07b64ffa50b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_hub_send_cli.py:104"}, "properties": {"repobilityId": "640f2b33e471f246", "scanner": "scanner-primary", "fingerprint": "0c64a07b64ffa50b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6765b5c01d4096b8", "level": "note", "message": {"text": "Legacy-named symbol `test_check_view_version_raises_when_too_old` in tests/test_hub_viewer_bundle_discovery.py:121"}, "properties": {"repobilityId": "8272871b2ed3ca96", "scanner": "scanner-primary", "fingerprint": "6765b5c01d4096b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e229aade71e0d67f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_wave_hub_bridge.py:36"}, "properties": {"repobilityId": "4952dc615e5db95e", "scanner": "scanner-primary", "fingerprint": "e229aade71e0d67f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-faa5c1065c5a341e", "level": "note", "message": {"text": "Legacy-named symbol `t_old` in tests/test_hub_viewer_http.py:1092"}, "properties": {"repobilityId": "c26da66a41c4ec57", "scanner": "scanner-primary", "fingerprint": "faa5c1065c5a341e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c2e339d34d05310c", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_hub_viewer_http.py:787"}, "properties": {"repobilityId": "bc78e2258d2a0b34", "scanner": "scanner-primary", "fingerprint": "c2e339d34d05310c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2754d2c87ca02c76", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_fpv_slang.py:187"}, "properties": {"repobilityId": "ca9e59ab41fdcef8", "scanner": "scanner-primary", "fingerprint": "2754d2c87ca02c76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06547f97675906f2", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_hub_server.py:761"}, "properties": {"repobilityId": "615ce73b9cfad5df", "scanner": "scanner-primary", "fingerprint": "06547f97675906f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fb2d25809d14748", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen_cli_reference.py:15"}, "properties": {"repobilityId": "9016f2ecc60256b2", "scanner": "scanner-primary", "fingerprint": "5fb2d25809d14748", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bd9d08cae7c9476", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tool_manifest.py:562"}, "properties": {"repobilityId": "1298b89c1a056f45", "scanner": "scanner-primary", "fingerprint": "7bd9d08cae7c9476", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be55e4045af06692", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rtl_buddy/process_utils.py:95"}, "properties": {"repobilityId": "651266a4dfc349a7", "scanner": "scanner-primary", "fingerprint": "be55e4045af06692", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b26624c1bd2e861", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/rtl_buddy.py:628"}, "properties": {"repobilityId": "2e809d38e6cf6123", "scanner": "scanner-primary", "fingerprint": "7b26624c1bd2e861", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91e693df87998ebe", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/rtl_buddy.py:5969"}, "properties": {"repobilityId": "bc6ac8df5674aa3b", "scanner": "scanner-primary", "fingerprint": "91e693df87998ebe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e00fca308ea6cef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/runner/fpga_runner.py:14"}, "properties": {"repobilityId": "2091428fd0d0db76", "scanner": "scanner-primary", "fingerprint": "5e00fca308ea6cef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b887ca39ff62b9af", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/runner/mut_runner.py:46"}, "properties": {"repobilityId": "837af5609aca08b9", "scanner": "scanner-primary", "fingerprint": "b887ca39ff62b9af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb4ece14bec94e2d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/model_discovery.py:75"}, "properties": {"repobilityId": "2b71e001991593db", "scanner": "scanner-primary", "fingerprint": "cb4ece14bec94e2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19d57eb0c87871e5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/hub/launchagent.py:148"}, "properties": {"repobilityId": "6ac941427e2bea77", "scanner": "scanner-primary", "fingerprint": "19d57eb0c87871e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5c4d28554a637e72", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/viewer_http.py:193"}, "properties": {"repobilityId": "72cec38fe88eba91", "scanner": "scanner-primary", "fingerprint": "5c4d28554a637e72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31da07cdd64fac71", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/hub/cli.py:348"}, "properties": {"repobilityId": "4a4f9fe3617ec40a", "scanner": "scanner-primary", "fingerprint": "31da07cdd64fac71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da6619ce6fd0f56f", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rtl_buddy/hub/loop.py:37"}, "properties": {"repobilityId": "d56f4446eec8a13c", "scanner": "scanner-primary", "fingerprint": "da6619ce6fd0f56f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94b2b60ad8a624f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/server.py:375"}, "properties": {"repobilityId": "709cd15a37f03c64", "scanner": "scanner-primary", "fingerprint": "94b2b60ad8a624f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5385d312fb25b0b3", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/hub/cdc_builder.py:235"}, "properties": {"repobilityId": "c823b55c4d6f2f1d", "scanner": "scanner-primary", "fingerprint": "5385d312fb25b0b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c88a5751c5dc606f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/hub/axi_notebook_launcher.py:44"}, "properties": {"repobilityId": "3f2a2d11395d296f", "scanner": "scanner-primary", "fingerprint": "c88a5751c5dc606f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-993078747ab9b726", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/hub/test_discovery.py:123"}, "properties": {"repobilityId": "374a3e9d2deca206", "scanner": "scanner-primary", "fingerprint": "993078747ab9b726", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f61a7611cecd097", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/hub/resolver.py:148"}, "properties": {"repobilityId": "a9d8a6753c357a2a", "scanner": "scanner-primary", "fingerprint": "6f61a7611cecd097", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7da68db88afb013a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/cdc.py:95"}, "properties": {"repobilityId": "aefdc5f1778005be", "scanner": "scanner-primary", "fingerprint": "7da68db88afb013a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48593e278e70024b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/mut.py:118"}, "properties": {"repobilityId": "836b1565dfef385f", "scanner": "scanner-primary", "fingerprint": "48593e278e70024b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dac1acadbe327536", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/config/model.py:200"}, "properties": {"repobilityId": "87d7e41154ad8c5a", "scanner": "scanner-primary", "fingerprint": "dac1acadbe327536", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21f246178258f2ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/fpga.py:46"}, "properties": {"repobilityId": "bf79e9f5abf934c5", "scanner": "scanner-primary", "fingerprint": "21f246178258f2ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb8e0bdc43d12916", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/config/fpv.py:108"}, "properties": {"repobilityId": "eee7675234401993", "scanner": "scanner-primary", "fingerprint": "bb8e0bdc43d12916", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6feb8a3a5d3fc57c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/config/root.py:343"}, "properties": {"repobilityId": "2a16dd462b56799b", "scanner": "scanner-primary", "fingerprint": "6feb8a3a5d3fc57c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-170185ad3a727a74", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rtl_buddy/config/test.py:165"}, "properties": {"repobilityId": "d3dc320203724923", "scanner": "scanner-primary", "fingerprint": "170185ad3a727a74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-235a4ffb33168580", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/pnr/klayout/gds2png.py:3"}, "properties": {"repobilityId": "f68f1b6980180ba8", "scanner": "scanner-primary", "fingerprint": "235a4ffb33168580", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-408f1511cfe67341", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/verible.py:43"}, "properties": {"repobilityId": "3abd0429c109fd0d", "scanner": "scanner-primary", "fingerprint": "408f1511cfe67341", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bb04afd571424d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/vlog_sim.py:91"}, "properties": {"repobilityId": "913ad476a621e55f", "scanner": "scanner-primary", "fingerprint": "7bb04afd571424d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3725024f2372e143", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/vlog_cov.py:550"}, "properties": {"repobilityId": "6de247cde8cea3d5", "scanner": "scanner-primary", "fingerprint": "3725024f2372e143", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-703cee7d9d5ff5db", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/power_openroad.py:192"}, "properties": {"repobilityId": "965e9be3429ab637", "scanner": "scanner-primary", "fingerprint": "703cee7d9d5ff5db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7451fbe4f1aa0ea", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/power_openroad.py:309"}, "properties": {"repobilityId": "25761efc1ea887b3", "scanner": "scanner-primary", "fingerprint": "c7451fbe4f1aa0ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e38529f4765ec44c", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/rtl_buddy/tools/fpv_vacuity.py:37"}, "properties": {"repobilityId": "9c7e5dee024ef4be", "scanner": "scanner-primary", "fingerprint": "e38529f4765ec44c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c6852b66aa9f50a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/rtl_buddy/tools/vlog_post.py:19"}, "properties": {"repobilityId": "cdf6d1908c213113", "scanner": "scanner-primary", "fingerprint": "5c6852b66aa9f50a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c9789867115c9c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/wave_hub_bridge.py:78"}, "properties": {"repobilityId": "b56cc63b2e8adbfc", "scanner": "scanner-primary", "fingerprint": "4c9789867115c9c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f56e0a987e9310f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/sby_fpv.py:50"}, "properties": {"repobilityId": "3966360a294f7202", "scanner": "scanner-primary", "fingerprint": "f56e0a987e9310f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6be63ee29de63963", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/fpga_vivado_flow.py:166"}, "properties": {"repobilityId": "d03b1606e1bd48ab", "scanner": "scanner-primary", "fingerprint": "6be63ee29de63963", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0d2e2ffa9d3817f", "level": "note", "message": {"text": "Legacy-named symbol `memrd_v2` in src/rtl_buddy/tools/fpv_coi.py:219"}, "properties": {"repobilityId": "6869e764c8e8a539", "scanner": "scanner-primary", "fingerprint": "e0d2e2ffa9d3817f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e259803cd6c3a237", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rtl_buddy/tools/fpv_coi.py:48"}, "properties": {"repobilityId": "a7ddb2398bd5cce8", "scanner": "scanner-primary", "fingerprint": "e259803cd6c3a237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b1219bad4729d05", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/synth_openroad.py:125"}, "properties": {"repobilityId": "c021d5261e82dccd", "scanner": "scanner-primary", "fingerprint": "0b1219bad4729d05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57ac950816001484", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/synth_openroad.py:395"}, "properties": {"repobilityId": "9c4dc218e984acfb", "scanner": "scanner-primary", "fingerprint": "57ac950816001484", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7c5375efcb280fd", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/synth_yosys.py:87"}, "properties": {"repobilityId": "f5bd377af48a1c9c", "scanner": "scanner-primary", "fingerprint": "e7c5375efcb280fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a298358b10a94f0e", "level": "note", "message": {"text": "Legacy-named symbol `_remove_legacy` in src/rtl_buddy/tools/nvim_install.py:165"}, "properties": {"repobilityId": "3d67c36e0a830f4a", "scanner": "scanner-primary", "fingerprint": "a298358b10a94f0e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c324800705c7a9c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/nvim_install.py:41"}, "properties": {"repobilityId": "e1ecb416ec2c2d51", "scanner": "scanner-primary", "fingerprint": "2c324800705c7a9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-515604d9438cbce4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/hier_rtl_buddy_view.py:98"}, "properties": {"repobilityId": "b4fa7c8978a620fa", "scanner": "scanner-primary", "fingerprint": "515604d9438cbce4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-777de1fd1c52419a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/rtl_buddy/tools/pnr_openroad.py:308"}, "properties": {"repobilityId": "c74c6bec41827292", "scanner": "scanner-primary", "fingerprint": "777de1fd1c52419a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf7ee2c24573d1a7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/pnr_openroad.py:306"}, "properties": {"repobilityId": "6b73fb48d3999b9c", "scanner": "scanner-primary", "fingerprint": "cf7ee2c24573d1a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75d7a17b75b39c0f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/cdc_rtl_buddy.py:189"}, "properties": {"repobilityId": "7b80bb3638c74396", "scanner": "scanner-primary", "fingerprint": "75d7a17b75b39c0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c23cede9565adfe", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/tools/axi_profile_rtl_buddy.py:230"}, "properties": {"repobilityId": "4a9ec25379c7948b", "scanner": "scanner-primary", "fingerprint": "3c23cede9565adfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a8058c37e011397", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/rtl_buddy/tools/surfer_wcp.py:694"}, "properties": {"repobilityId": "9f5a4b41bfb32065", "scanner": "scanner-primary", "fingerprint": "8a8058c37e011397", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcfa8068ce7b0182", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/surfer_wcp.py:410"}, "properties": {"repobilityId": "cd0efb6bf48d4351", "scanner": "scanner-primary", "fingerprint": "bcfa8068ce7b0182", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e31d4968191690b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/tools/coverview.py:82"}, "properties": {"repobilityId": "71b851ab551f5476", "scanner": "scanner-primary", "fingerprint": "8e31d4968191690b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5167a26b502f4b48", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/xplr/commands.py:119"}, "properties": {"repobilityId": "7d4b4639129e2206", "scanner": "scanner-primary", "fingerprint": "5167a26b502f4b48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aea5d61d5eacdc93", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/rtl_buddy/xplr/schema.py:86"}, "properties": {"repobilityId": "e28987b5356d9713", "scanner": "scanner-primary", "fingerprint": "aea5d61d5eacdc93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a517dc8cb545696e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/rtl_buddy/xplr/gitprov.py:77"}, "properties": {"repobilityId": "55977a9ee2ab25f7", "scanner": "scanner-primary", "fingerprint": "a517dc8cb545696e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "835229fb0031ca69", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "c2a487edd4f80a11", "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": "e842da4be536d420", "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": "ce8b0334085d5cec", "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": "78136d733bc14218", "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": "037236cc7cffcfae", "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": "ce3358c7c8387857", "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": "d519b2d943e62ed4", "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": "3267bb0f75d60902", "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": "742dcfdf5cf35515", "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": "808153533ac9eb31", "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": "3d6c7b45fa3067ee", "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": "eddd42f68f3ffe71", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-122053f21232d80c", "level": "note", "message": {"text": "Near-duplicate function bodies in 14 places"}, "properties": {"repobilityId": "245f4d3d9a2a0c13", "scanner": "scanner-primary", "fingerprint": "122053f21232d80c", "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": "83bc64bd46873b0e", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "d7086298b753f3cb", "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": "bb3ea4b1606cf840", "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": "815035e2c8852aef", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "b0d4c2dec96ca52f", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "01721b0902b26f0a", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}