{"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-ce170a6f35b593be", "name": "Possibly dead Python function: execute_tool", "shortDescription": {"text": "Possibly dead Python function: execute_tool"}, "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-d410d4d3749c53b2", "name": "Possibly dead Python function: reconnect_server", "shortDescription": {"text": "Possibly dead Python function: reconnect_server"}, "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-486d524597e1ab80", "name": "Possibly dead Python function: register_impl", "shortDescription": {"text": "Possibly dead Python function: register_impl"}, "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-a612c988e10cdaae", "name": "Possibly dead Python function: pre_hook_caller", "shortDescription": {"text": "Possibly dead Python function: pre_hook_caller"}, "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-21d8a6f427abd4a6", "name": "Possibly dead Python function: post_hook_caller", "shortDescription": {"text": "Possibly dead Python function: post_hook_caller"}, "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-8f5b2e9f3f2d812f", "name": "Possibly dead Python function: call_agent_start", "shortDescription": {"text": "Possibly dead Python function: call_agent_start"}, "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-533eac001ead75d8", "name": "Possibly dead Python function: call_agent_end", "shortDescription": {"text": "Possibly dead Python function: call_agent_end"}, "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-5624b9eb476f5085", "name": "Possibly dead Python function: call_on_event", "shortDescription": {"text": "Possibly dead Python function: call_on_event"}, "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-fe16942ef401afdd", "name": "Possibly dead Python function: dispatch_frontend_subagent", "shortDescription": {"text": "Possibly dead Python function: dispatch_frontend_subagent"}, "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-573b125e7f7e98eb", "name": "Possibly dead Python function: abort", "shortDescription": {"text": "Possibly dead Python function: abort"}, "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-a1c3ee11d06060a4", "name": "Possibly dead Python function: decorator", "shortDescription": {"text": "Possibly dead Python function: decorator"}, "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-1d4130cae2b9d9c1", "name": "Possibly dead Python function: filtered", "shortDescription": {"text": "Possibly dead Python function: filtered"}, "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-c4d5c3f4148460ed", "name": "Possibly dead Python function: one_shot", "shortDescription": {"text": "Possibly dead Python function: one_shot"}, "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-1a041e491bfd8f36", "name": "Possibly dead Python function: replay_and_resubmit", "shortDescription": {"text": "Possibly dead Python function: replay_and_resubmit"}, "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-84973bd8465700b2", "name": "Possibly dead Python function: trim_context", "shortDescription": {"text": "Possibly dead Python function: trim_context"}, "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-c7cbb8077f8bd7e0", "name": "Possibly dead Python function: set_gathered", "shortDescription": {"text": "Possibly dead Python function: set_gathered"}, "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-2e07e70eccd0235e", "name": "Possibly dead Python function: init_app", "shortDescription": {"text": "Possibly dead Python function: init_app"}, "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-6fe53a2ee94efd47", "name": "Possibly dead Python function: summarize", "shortDescription": {"text": "Possibly dead Python function: summarize"}, "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-6c5d16fb7406019b", "name": "Possibly dead Python function: start_app", "shortDescription": {"text": "Possibly dead Python function: start_app"}, "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-61cd079f97882906", "name": "Possibly dead Python function: list_agents", "shortDescription": {"text": "Possibly dead Python function: list_agents"}, "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-4202041a05c91d1d", "name": "Possibly dead Python function: list_divisions", "shortDescription": {"text": "Possibly dead Python function: list_divisions"}, "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-3f3fb99039bc355c", "name": "Possibly dead Python function: slice_success_by_fixture", "shortDescription": {"text": "Possibly dead Python function: slice_success_by_fixture"}, "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-97ab55de097838e2", "name": "Stray `console.log` in TS/JS \u2014 src/localharness/assets/design-screenshot.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/localharness/assets/design-screenshot.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-959df4ff0a507d6d", "name": "Very large file: tests/unit/test_agent_loop.py (1293 lines)", "shortDescription": {"text": "Very large file: tests/unit/test_agent_loop.py (1293 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-bc05922f8f83f408", "name": "Very large file: src/localharness/agent/loop.py (1192 lines)", "shortDescription": {"text": "Very large file: src/localharness/agent/loop.py (1192 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-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-20df913650d08e69", "name": "Legacy-named symbol `test_all_base_urls_include_v1` in tests/unit/test_detector.py:244", "shortDescription": {"text": "Legacy-named symbol `test_all_base_urls_include_v1` in tests/unit/test_detector.py:244"}, "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-2e8f5379b00de548", "name": "Commented-code block (6 lines) in tests/unit/test_bench_subagent_delegation.py:57", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_bench_subagent_delegation.py:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b81682213c5bca3d", "name": "Commented-code block (7 lines) in tests/unit/test_bench_corpus.py:99", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/test_bench_corpus.py:99"}, "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-f814a0fc0e4a49e7", "name": "Commented-code block (6 lines) in tests/unit/test_budget_enforcement_gap.py:159", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_budget_enforcement_gap.py:159"}, "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-1b5aca1ec140a09a", "name": "Legacy-named symbol `model_copy` in tests/unit/test_events.py:199", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/unit/test_events.py:199"}, "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-f722ce771676a3c1", "name": "Commented-code block (8 lines) in tests/integration/test_experiment_overlay_e2e.py:90", "shortDescription": {"text": "Commented-code block (8 lines) in tests/integration/test_experiment_overlay_e2e.py:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9654af350ef8112e", "name": "Legacy-named symbol `model_copy` in tests/integration/test_spine_real_e2e.py:409", "shortDescription": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_spine_real_e2e.py:409"}, "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-169a2c7e3ce84448", "name": "Commented-code block (6 lines) in tests/integration/test_spine_real_e2e.py:200", "shortDescription": {"text": "Commented-code block (6 lines) in tests/integration/test_spine_real_e2e.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-7ecec2a62c465af0", "name": "Commented-code block (5 lines) in src/localharness/provider/client.py:295", "shortDescription": {"text": "Commented-code block (5 lines) in src/localharness/provider/client.py:295"}, "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-1604270fd597e19f", "name": "Legacy-named symbol `_extract_legacy` in src/localharness/provider/fn_call.py:107", "shortDescription": {"text": "Legacy-named symbol `_extract_legacy` in src/localharness/provider/fn_call.py:107"}, "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-22211896ec3322a0", "name": "Commented-code block (5 lines) in src/localharness/provider/fn_call.py:75", "shortDescription": {"text": "Commented-code block (5 lines) in src/localharness/provider/fn_call.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-fd0c7047eb4fd3be", "name": "Legacy-named symbol `model_copy` in src/localharness/tools/registry.py:272", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/localharness/tools/registry.py:272"}, "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-f8f02fee03681206", "name": "Legacy-named symbol `model_copy` in src/localharness/agent/subagent.py:162", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/localharness/agent/subagent.py:162"}, "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-923642d74e6ff84d", "name": "Commented-code block (6 lines) in src/localharness/agent/loop.py:829", "shortDescription": {"text": "Commented-code block (6 lines) in src/localharness/agent/loop.py:829"}, "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-c67ffc4ca900d63d", "name": "Legacy-named symbol `model_copy` in src/localharness/core/events.py:6", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/localharness/core/events.py:6"}, "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-14c1980d8c8f7441", "name": "Legacy-named symbol `model_copy` in src/localharness/core/bus.py:86", "shortDescription": {"text": "Legacy-named symbol `model_copy` in src/localharness/core/bus.py:86"}, "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-f9102700bb90b32d", "name": "Network/subprocess call without timeout or try/except \u2014 src/localharness/cli/autoresearch_cmd.py:464", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/localharness/cli/autoresearch_cmd.py:464"}, "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-a165e50957abe4df", "name": "Commented-code block (6 lines) in src/localharness/bench/runner.py:370", "shortDescription": {"text": "Commented-code block (6 lines) in src/localharness/bench/runner.py:370"}, "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-11eee58275693ca6", "name": "Commented-code block (10 lines) in src/localharness/autoresearch/archive.py:273", "shortDescription": {"text": "Commented-code block (10 lines) in src/localharness/autoresearch/archive.py:273"}, "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-94cdaa5afef6fc75", "name": "Network/subprocess call without timeout or try/except \u2014 src/localharness/autoresearch/experiment.py:74", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/localharness/autoresearch/experiment.py:74"}, "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-3bb5964847bf889b", "name": "Network/subprocess call without timeout or try/except \u2014 src/localharness/autoresearch/adoption.py:64", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/localharness/autoresearch/adoption.py:64"}, "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-57371e23bf017634", "name": "Commented-code block (5 lines) in src/localharness/assets/design-screenshot.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in src/localharness/assets/design-screenshot.js:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/localharness/tools/mcp.py:connected, src/localharness/tools/mcp.py:connect\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/localharness/channels/discord.py:send_message, src/localharness/channels/terminal.py:send_message, src/localharness/channels/base.py:send_message\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/localharness/agent/subagent.py:dispatch_data_subagent, src/localharness/agent/subagent.py:dispatch_frontend_subagent, src/localharness/agent/subagent.py:dispatch_explore_subagent, src/localharness/agent/subagent.py:dispatch_web_subagent\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/23969"}, "properties": {"repository": "ahwurm/localharness", "repoUrl": "https://github.com/ahwurm/localharness", "branch": "main"}, "results": [{"ruleId": "scanner-ce170a6f35b593be", "level": "note", "message": {"text": "Possibly dead Python function: execute_tool"}, "properties": {"repobilityId": "0e530e8ee3947a19", "scanner": "scanner-primary", "fingerprint": "ce170a6f35b593be", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/mcp.py:216"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d410d4d3749c53b2", "level": "note", "message": {"text": "Possibly dead Python function: reconnect_server"}, "properties": {"repobilityId": "42735a2ef14f3f23", "scanner": "scanner-primary", "fingerprint": "d410d4d3749c53b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/mcp.py:309"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-486d524597e1ab80", "level": "note", "message": {"text": "Possibly dead Python function: register_impl"}, "properties": {"repobilityId": "f12dccf08569fcc6", "scanner": "scanner-primary", "fingerprint": "486d524597e1ab80", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/hooks.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a612c988e10cdaae", "level": "note", "message": {"text": "Possibly dead Python function: pre_hook_caller"}, "properties": {"repobilityId": "f3a9605572471897", "scanner": "scanner-primary", "fingerprint": "a612c988e10cdaae", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/hooks.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-21d8a6f427abd4a6", "level": "note", "message": {"text": "Possibly dead Python function: post_hook_caller"}, "properties": {"repobilityId": "a9fca65ebb871fe1", "scanner": "scanner-primary", "fingerprint": "21d8a6f427abd4a6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/hooks.py:126"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f5b2e9f3f2d812f", "level": "note", "message": {"text": "Possibly dead Python function: call_agent_start"}, "properties": {"repobilityId": "22a6672b3885f87e", "scanner": "scanner-primary", "fingerprint": "8f5b2e9f3f2d812f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/hooks.py:144"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-533eac001ead75d8", "level": "note", "message": {"text": "Possibly dead Python function: call_agent_end"}, "properties": {"repobilityId": "e357f92ac6c948c4", "scanner": "scanner-primary", "fingerprint": "533eac001ead75d8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/hooks.py:157"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5624b9eb476f5085", "level": "note", "message": {"text": "Possibly dead Python function: call_on_event"}, "properties": {"repobilityId": "addfd39492e67fd0", "scanner": "scanner-primary", "fingerprint": "5624b9eb476f5085", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/tools/hooks.py:178"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe16942ef401afdd", "level": "note", "message": {"text": "Possibly dead Python function: dispatch_frontend_subagent"}, "properties": {"repobilityId": "1571ad747b9aa07a", "scanner": "scanner-primary", "fingerprint": "fe16942ef401afdd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/agent/subagent.py:346"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-573b125e7f7e98eb", "level": "note", "message": {"text": "Possibly dead Python function: abort"}, "properties": {"repobilityId": "188a75cec2ab35fd", "scanner": "scanner-primary", "fingerprint": "573b125e7f7e98eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/agent/loop.py:1181"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1c3ee11d06060a4", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "a1c3ee11d06060a4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/core/bus.py:140"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d4130cae2b9d9c1", "level": "note", "message": {"text": "Possibly dead Python function: filtered"}, "properties": {"repobilityId": "497e2193403a9831", "scanner": "scanner-primary", "fingerprint": "1d4130cae2b9d9c1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/core/bus.py:157"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c4d5c3f4148460ed", "level": "note", "message": {"text": "Possibly dead Python function: one_shot"}, "properties": {"repobilityId": "64e4630dc9e4a7ec", "scanner": "scanner-primary", "fingerprint": "c4d5c3f4148460ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/core/bus.py:191"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a041e491bfd8f36", "level": "note", "message": {"text": "Possibly dead Python function: replay_and_resubmit"}, "properties": {"repobilityId": "c82f62777b78e2c2", "scanner": "scanner-primary", "fingerprint": "1a041e491bfd8f36", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/core/bus.py:243"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84973bd8465700b2", "level": "note", "message": {"text": "Possibly dead Python function: trim_context"}, "properties": {"repobilityId": "032988560cbf7807", "scanner": "scanner-primary", "fingerprint": "84973bd8465700b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/orchestrator/router.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c7cbb8077f8bd7e0", "level": "note", "message": {"text": "Possibly dead Python function: set_gathered"}, "properties": {"repobilityId": "b88ced4d43f04ea2", "scanner": "scanner-primary", "fingerprint": "c7cbb8077f8bd7e0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/orchestrator/workflow.py:99"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e07e70eccd0235e", "level": "note", "message": {"text": "Possibly dead Python function: init_app"}, "properties": {"repobilityId": "48140818d54e6737", "scanner": "scanner-primary", "fingerprint": "2e07e70eccd0235e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/cli/init_cmd.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6fe53a2ee94efd47", "level": "note", "message": {"text": "Possibly dead Python function: summarize"}, "properties": {"repobilityId": "2f031b6e55dee53f", "scanner": "scanner-primary", "fingerprint": "6fe53a2ee94efd47", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/cli/start_cmd.py:292"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c5d16fb7406019b", "level": "note", "message": {"text": "Possibly dead Python function: start_app"}, "properties": {"repobilityId": "d22f16b50c24f776", "scanner": "scanner-primary", "fingerprint": "6c5d16fb7406019b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/cli/start_cmd.py:460"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61cd079f97882906", "level": "note", "message": {"text": "Possibly dead Python function: list_agents"}, "properties": {"repobilityId": "8dc98b8520dcda4f", "scanner": "scanner-primary", "fingerprint": "61cd079f97882906", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/config/loader.py:397"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4202041a05c91d1d", "level": "note", "message": {"text": "Possibly dead Python function: list_divisions"}, "properties": {"repobilityId": "02d831f91aa3a71c", "scanner": "scanner-primary", "fingerprint": "4202041a05c91d1d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/config/loader.py:406"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3f3fb99039bc355c", "level": "note", "message": {"text": "Possibly dead Python function: slice_success_by_fixture"}, "properties": {"repobilityId": "880b5dd9485986ed", "scanner": "scanner-primary", "fingerprint": "3f3fb99039bc355c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/localharness/autoresearch/experiment.py:273"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-97ab55de097838e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/localharness/assets/design-screenshot.js:31"}, "properties": {"repobilityId": "8e92d9afe0c5c2cf", "scanner": "scanner-primary", "fingerprint": "97ab55de097838e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-959df4ff0a507d6d", "level": "note", "message": {"text": "Very large file: tests/unit/test_agent_loop.py (1293 lines)"}, "properties": {"repobilityId": "8761066d745adb21", "scanner": "scanner-primary", "fingerprint": "959df4ff0a507d6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc05922f8f83f408", "level": "note", "message": {"text": "Very large file: src/localharness/agent/loop.py (1192 lines)"}, "properties": {"repobilityId": "ec6a543797afec94", "scanner": "scanner-primary", "fingerprint": "bc05922f8f83f408", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a100827d2de6db0f", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-20df913650d08e69", "level": "note", "message": {"text": "Legacy-named symbol `test_all_base_urls_include_v1` in tests/unit/test_detector.py:244"}, "properties": {"repobilityId": "416e559ddc0fd3b7", "scanner": "scanner-primary", "fingerprint": "20df913650d08e69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2e8f5379b00de548", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_bench_subagent_delegation.py:57"}, "properties": {"repobilityId": "44282ac80e9ce80e", "scanner": "scanner-primary", "fingerprint": "2e8f5379b00de548", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b81682213c5bca3d", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/test_bench_corpus.py:99"}, "properties": {"repobilityId": "ac37e31f2d1d5fa0", "scanner": "scanner-primary", "fingerprint": "b81682213c5bca3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f814a0fc0e4a49e7", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_budget_enforcement_gap.py:159"}, "properties": {"repobilityId": "276b1a5d19ae8c30", "scanner": "scanner-primary", "fingerprint": "f814a0fc0e4a49e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b5aca1ec140a09a", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/unit/test_events.py:199"}, "properties": {"repobilityId": "0aa5ae440bc700a6", "scanner": "scanner-primary", "fingerprint": "1b5aca1ec140a09a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f722ce771676a3c1", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/integration/test_experiment_overlay_e2e.py:90"}, "properties": {"repobilityId": "c575283d93580496", "scanner": "scanner-primary", "fingerprint": "f722ce771676a3c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9654af350ef8112e", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in tests/integration/test_spine_real_e2e.py:409"}, "properties": {"repobilityId": "c4d4b87f6f910459", "scanner": "scanner-primary", "fingerprint": "9654af350ef8112e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-169a2c7e3ce84448", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/integration/test_spine_real_e2e.py:200"}, "properties": {"repobilityId": "b8e7d53bc1079fd7", "scanner": "scanner-primary", "fingerprint": "169a2c7e3ce84448", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ecec2a62c465af0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/localharness/provider/client.py:295"}, "properties": {"repobilityId": "95ceba66ca44a616", "scanner": "scanner-primary", "fingerprint": "7ecec2a62c465af0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1604270fd597e19f", "level": "note", "message": {"text": "Legacy-named symbol `_extract_legacy` in src/localharness/provider/fn_call.py:107"}, "properties": {"repobilityId": "ee9e77c7513e383a", "scanner": "scanner-primary", "fingerprint": "1604270fd597e19f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-22211896ec3322a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/localharness/provider/fn_call.py:75"}, "properties": {"repobilityId": "712e775831ce7801", "scanner": "scanner-primary", "fingerprint": "22211896ec3322a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd0c7047eb4fd3be", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/localharness/tools/registry.py:272"}, "properties": {"repobilityId": "db184ced50d114e1", "scanner": "scanner-primary", "fingerprint": "fd0c7047eb4fd3be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f8f02fee03681206", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/localharness/agent/subagent.py:162"}, "properties": {"repobilityId": "c47e6bb853549de2", "scanner": "scanner-primary", "fingerprint": "f8f02fee03681206", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-923642d74e6ff84d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/localharness/agent/loop.py:829"}, "properties": {"repobilityId": "938be9125bf1945a", "scanner": "scanner-primary", "fingerprint": "923642d74e6ff84d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c67ffc4ca900d63d", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/localharness/core/events.py:6"}, "properties": {"repobilityId": "ae99d3ef3fbd7931", "scanner": "scanner-primary", "fingerprint": "c67ffc4ca900d63d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-14c1980d8c8f7441", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in src/localharness/core/bus.py:86"}, "properties": {"repobilityId": "c3d1ee8a48a7c0ab", "scanner": "scanner-primary", "fingerprint": "14c1980d8c8f7441", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f9102700bb90b32d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/localharness/cli/autoresearch_cmd.py:464"}, "properties": {"repobilityId": "c7f372da8143a8c8", "scanner": "scanner-primary", "fingerprint": "f9102700bb90b32d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a165e50957abe4df", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/localharness/bench/runner.py:370"}, "properties": {"repobilityId": "74af8277d8f49e4e", "scanner": "scanner-primary", "fingerprint": "a165e50957abe4df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11eee58275693ca6", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/localharness/autoresearch/archive.py:273"}, "properties": {"repobilityId": "d0fae1ddaf9a5bf0", "scanner": "scanner-primary", "fingerprint": "11eee58275693ca6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94cdaa5afef6fc75", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/localharness/autoresearch/experiment.py:74"}, "properties": {"repobilityId": "0d3c8c2bbc5a3414", "scanner": "scanner-primary", "fingerprint": "94cdaa5afef6fc75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3bb5964847bf889b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/localharness/autoresearch/adoption.py:64"}, "properties": {"repobilityId": "d3b0553723d4a45a", "scanner": "scanner-primary", "fingerprint": "3bb5964847bf889b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57371e23bf017634", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/localharness/assets/design-screenshot.js:2"}, "properties": {"repobilityId": "78a56497359dae44", "scanner": "scanner-primary", "fingerprint": "57371e23bf017634", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "cba3747a81da98b3", "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": "87e352ddf2e7cb22", "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": "6361ab22bed1fdaf", "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": "73b08edb25968f1b", "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": "0e8d5bb5dc52e01e", "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": "c58155afc0273dd7", "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": "05ba184f9affd7cc", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "cff8616e4419e23f", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "ad7d69b387f24d52", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "df94b89b4d39852c", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "7838b8279c51fbae", "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": "8f6b6f0f6841a587", "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": "4542a9e3c653077e", "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": "b7997fc8978ef7a7", "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": "cc11f3c32d24f7d3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}