{"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-c954bec4ce33ecd0", "name": "Possibly dead Python function: load_all_fragments", "shortDescription": {"text": "Possibly dead Python function: load_all_fragments"}, "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-b48fe392841b0982", "name": "Possibly dead Python function: calls_for", "shortDescription": {"text": "Possibly dead Python function: calls_for"}, "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-ee7eaa0afc6ab356", "name": "Possibly dead Python function: scan_skill_templates", "shortDescription": {"text": "Possibly dead Python function: scan_skill_templates"}, "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-1ca3e617d40578cd", "name": "Possibly dead Python function: save_skill_graph", "shortDescription": {"text": "Possibly dead Python function: save_skill_graph"}, "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-060fc3a533ba9da2", "name": "Possibly dead Python function: heuristic_evaluate_discovery", "shortDescription": {"text": "Possibly dead Python function: heuristic_evaluate_discovery"}, "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-66ebe6557af3e545", "name": "Possibly dead Python function: heuristic_evaluate_candidates", "shortDescription": {"text": "Possibly dead Python function: heuristic_evaluate_candidates"}, "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-821448c4238c4250", "name": "Possibly dead Python function: heuristic_evaluate_convergence", "shortDescription": {"text": "Possibly dead Python function: heuristic_evaluate_convergence"}, "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-645a3e61129c5ab0", "name": "Possibly dead Python function: save_root_skill_contract", "shortDescription": {"text": "Possibly dead Python function: save_root_skill_contract"}, "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-800875e84a7aefd6", "name": "Possibly dead Python function: save_clarification_gate_report", "shortDescription": {"text": "Possibly dead Python function: save_clarification_gate_report"}, "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-08ac5c5f76d4db50", "name": "Possibly dead Python function: load_template_pack", "shortDescription": {"text": "Possibly dead Python function: load_template_pack"}, "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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7bd6c2ffded1cd78", "name": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_observability_unit.py", "shortDescription": {"text": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_observability_unit.py"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-10e4bfe5c3359001", "name": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_candidates_batch_orchestrator.py", "shortDescription": {"text": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_candidates_batch_orchestrator.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-13d7fe526ce70e48", "name": "Insecure pattern 'subprocess_shell_true' in Plugins/AgentBridge/Scripts/bridge/uat_runner.py:180", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in Plugins/AgentBridge/Scripts/bridge/uat_runner.py:180"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99f41c7bac63160c", "name": "Possible secret in Plugins/AgentBridge/Config/llm_config.example.yaml", "shortDescription": {"text": "Possible secret in Plugins/AgentBridge/Config/llm_config.example.yaml"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9ec01721fdccc790", "name": "Insecure pattern 'exec_used' in ProjectState/phase10/task07_orchestrate.py:78", "shortDescription": {"text": "Insecure pattern 'exec_used' in ProjectState/phase10/task07_orchestrate.py:78"}, "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-a83cb10f4f11b800", "name": "Insecure pattern 'exec_used' in ProjectState/phase10/task08_orchestrate.py:106", "shortDescription": {"text": "Insecure pattern 'exec_used' in ProjectState/phase10/task08_orchestrate.py:106"}, "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-04fcbf10c3683f91", "name": "Insecure pattern 'exec_used' in ProjectState/phase10/task08_backend_summary.json:143", "shortDescription": {"text": "Insecure pattern 'exec_used' in ProjectState/phase10/task08_backend_summary.json:143"}, "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-07234f25c2460122", "name": "Very large file: Plugins/AgentBridge/Compiler/pipeline/pipeline_orchestrator.py (1374 lines)", "shortDescription": {"text": "Very large file: Plugins/AgentBridge/Compiler/pipeline/pipeline_orchestrator.py (1374 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-98fb8011b8b96e7b", "name": "Very large file: Plugins/AgentBridge/Compiler/stages/agent_protocol.py (1373 lines)", "shortDescription": {"text": "Very large file: Plugins/AgentBridge/Compiler/stages/agent_protocol.py (1373 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-0d2c5086e231a31c", "name": "Very large file: Plugins/AgentBridge/Compiler/stages/domain_skill_runtime.py (1829 lines)", "shortDescription": {"text": "Very large file: Plugins/AgentBridge/Compiler/stages/domain_skill_runtime.py (1829 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-f3ba9a9d69919fc4", "name": "Very large file: Plugins/AgentBridge/Tests/run_system_tests.py (3452 lines)", "shortDescription": {"text": "Very large file: Plugins/AgentBridge/Tests/run_system_tests.py (3452 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-51c513f6ca0fda39", "name": "Very large file: ProjectState/phase10/task08_orchestrate.py (1761 lines)", "shortDescription": {"text": "Very large file: ProjectState/phase10/task08_orchestrate.py (1761 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 266 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 12 placeholder/mock markers across 6 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bea357a6497a2d5d", "name": "Agent authority lacks a verifier contract: CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CLAUDE.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-2679282aa1c484b5", "name": "Agent authority lacks a verifier contract: AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: AGENTS.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-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ed0a1b86e453821", "name": "Commented-code block (5 lines) in Plugins/AgentBridge/Compiler/providers/litellm_adapter.py:35", "shortDescription": {"text": "Commented-code block (5 lines) in Plugins/AgentBridge/Compiler/providers/litellm_adapter.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c44554d199b12937", "name": "Legacy-named symbol `cross_review_v2` in Plugins/AgentBridge/Compiler/pipeline/pipeline_orchestrator.py:25", "shortDescription": {"text": "Legacy-named symbol `cross_review_v2` in Plugins/AgentBridge/Compiler/pipeline/pipeline_orchestrator.py:25"}, "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-72640f0475ae652e", "name": "Legacy-named symbol `create_cross_review_report_v2` in Plugins/AgentBridge/Compiler/stages/cross_review_v2.py:438", "shortDescription": {"text": "Legacy-named symbol `create_cross_review_report_v2` in Plugins/AgentBridge/Compiler/stages/cross_review_v2.py:438"}, "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-f936c774ebb36116", "name": "Legacy-named symbol `create_build_ir_v2` in Plugins/AgentBridge/Compiler/stages/lowering_v2.py:357", "shortDescription": {"text": "Legacy-named symbol `create_build_ir_v2` in Plugins/AgentBridge/Compiler/stages/lowering_v2.py:357"}, "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-9cf4914fe19b494b", "name": "Legacy-named symbol `reviewed_handoff_v2` in Plugins/AgentBridge/Tests/run_system_tests.py:1266", "shortDescription": {"text": "Legacy-named symbol `reviewed_handoff_v2` in Plugins/AgentBridge/Tests/run_system_tests.py:1266"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c54857326a8ffd65", "name": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase4_compiler.py:41", "shortDescription": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase4_compiler.py:41"}, "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-fef814ce8941280e", "name": "Legacy-named symbol `cross_review_report_v2` in Plugins/AgentBridge/Tests/scripts/task13_phase11_fast_mode_validation.py", "shortDescription": {"text": "Legacy-named symbol `cross_review_report_v2` in Plugins/AgentBridge/Tests/scripts/task13_phase11_fast_mode_validation.py:258"}, "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-736fee21ebe6542a", "name": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Tests/scripts/task13_phase11_fast_mode_valid", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Tests/scripts/task13_phase11_fast_mode_validation.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-d90d8f1e67cb5832", "name": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_compiler_plane_foundation.py:223", "shortDescription": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_compiler_plane_foundation.py:223"}, "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-cdb8d02236f018e6", "name": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase6_playable_runtime.py:330", "shortDescription": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase6_playable_runtime.py:330"}, "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-b2d613574fdd06b0", "name": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase5_brownfield.py:136", "shortDescription": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase5_brownfield.py:136"}, "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-2e3755d3d2d6841d", "name": "Legacy-named symbol `jrpg_turn_based_v1` in Plugins/AgentBridge/Tests/scripts/test_phase7_governance_and_jrpg.py:542", "shortDescription": {"text": "Legacy-named symbol `jrpg_turn_based_v1` in Plugins/AgentBridge/Tests/scripts/test_phase7_governance_and_jrpg.py:542"}, "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-657ac76211c31f8f", "name": "Legacy-named symbol `skill_fragment_v2` in Plugins/AgentBridge/Tests/scripts/task11_phase11_mcp_e2e.py:280", "shortDescription": {"text": "Legacy-named symbol `skill_fragment_v2` in Plugins/AgentBridge/Tests/scripts/task11_phase11_mcp_e2e.py:280"}, "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-53f3a5dfdafa725b", "name": "Commented-code block (6 lines) in Plugins/AgentBridge/Tests/scripts/llm_internal_batch_real_run.py:40", "shortDescription": {"text": "Commented-code block (6 lines) in Plugins/AgentBridge/Tests/scripts/llm_internal_batch_real_run.py:40"}, "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-6c3bbef4e87f529b", "name": "Legacy-named symbol `test_sks04_family_map_derived_equals_legacy` in Plugins/AgentBridge/Tests/scripts/test_phase13_frag", "shortDescription": {"text": "Legacy-named symbol `test_sks04_family_map_derived_equals_legacy` in Plugins/AgentBridge/Tests/scripts/test_phase13_fragment_family.py:29"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da74c7377e4df532", "name": "Legacy-named symbol `skill_fragment_v2` in Plugins/AgentBridge/Tests/scripts/task14_phase11_baseline_template_validation", "shortDescription": {"text": "Legacy-named symbol `skill_fragment_v2` in Plugins/AgentBridge/Tests/scripts/task14_phase11_baseline_template_validation.py:384"}, "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-d382a31056a86450", "name": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Tests/scripts/task14_phase11_baseline_templa", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Tests/scripts/task14_phase11_baseline_template_validation.py:175"}, "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-da894ae6a66c9adc", "name": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Scripts/bridge/uat_runner.py:193", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Scripts/bridge/uat_runner.py:193"}, "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-812c2098390f750f", "name": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Scripts/compiler/intake/design_input_intake.py:521", "shortDescription": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Scripts/compiler/intake/design_input_intake.py:521"}, "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-a4fbc8788c34f81e", "name": "Legacy-named symbol `Greenfield_Brownfield_\u6a21\u5f0f\u5207\u6362\u89c4\u5219_v2` in Plugins/AgentBridge/Scripts/compiler/routing/mode_router.py:5", "shortDescription": {"text": "Legacy-named symbol `Greenfield_Brownfield_\u6a21\u5f0f\u5207\u6362\u89c4\u5219_v2` in Plugins/AgentBridge/Scripts/compiler/routing/mode_router.py:5"}, "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-2c0d956efb56216b", "name": "Legacy-named symbol `actor_copy` in Plugins/AgentBridge/Scripts/orchestrator/spec_reader.py:232", "shortDescription": {"text": "Legacy-named symbol `actor_copy` in Plugins/AgentBridge/Scripts/orchestrator/spec_reader.py:232"}, "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-e37f78b6da931578", "name": "Legacy-named symbol `phase11_skill_fragment_v2` in Plugins/AgentBridge/Scripts/validation/validate_examples.py:103", "shortDescription": {"text": "Legacy-named symbol `phase11_skill_fragment_v2` in Plugins/AgentBridge/Scripts/validation/validate_examples.py:103"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-147aa811428566ec", "name": "Legacy-named symbol `reviewed_handoff_v2` in ProjectState/phase10/task08_orchestrate.py:1321", "shortDescription": {"text": "Legacy-named symbol `reviewed_handoff_v2` in ProjectState/phase10/task08_orchestrate.py:1321"}, "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-85176758e2297d74", "name": "Network/subprocess call without timeout or try/except \u2014 ProjectState/phase10/task08_orchestrate.py:179", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 ProjectState/phase10/task08_orchestrate.py:179"}, "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-f632e081ae92538b", "name": "Network/subprocess call without timeout or try/except \u2014 ProjectState/Reports/2026-06-11/run_submits.py:36", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 ProjectState/Reports/2026-06-11/run_submits.py:36"}, "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-e9f6b10fc0f6640e", "name": "Legacy-named symbol `boardgame_tictactoe_v1` in Scripts/run_brownfield_demo.py:48", "shortDescription": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Scripts/run_brownfield_demo.py:48"}, "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-79a923ad2288edc8", "name": "Legacy-named symbol `jrpg_turn_based_v1` in Scripts/run_phase7_p1_convergence.py:283", "shortDescription": {"text": "Legacy-named symbol `jrpg_turn_based_v1` in Scripts/run_phase7_p1_convergence.py:283"}, "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-c03617a80dc6b96e", "name": "Network/subprocess call without timeout or try/except \u2014 Scripts/run_phase7_p1_convergence.py:161", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 Scripts/run_phase7_p1_convergence.py:161"}, "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-2415b88ee10bc6a3", "name": "Legacy-named symbol `jrpg_turn_based_v1` in Scripts/run_jrpg_turn_based_demo.py:48", "shortDescription": {"text": "Legacy-named symbol `jrpg_turn_based_v1` in Scripts/run_jrpg_turn_based_demo.py:48"}, "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-edfe54ecf0301b13", "name": "Network/subprocess call without timeout or try/except \u2014 Scripts/run_jrpg_turn_based_demo.py:247", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 Scripts/run_jrpg_turn_based_demo.py:247"}, "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-05cf5d0429154c10", "name": "Legacy-named symbol `test_sync_creates_copy` in Scripts/hooks/tests/test_sync_skills.py:22", "shortDescription": {"text": "Legacy-named symbol `test_sync_creates_copy` in Scripts/hooks/tests/test_sync_skills.py:22"}, "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-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:\nPlugins/AgentBridge/Compiler/stages/agent_protocol.py:provider_type, Plugins/AgentBridge/Compiler/stages/agent_protocol.py:provider_type, Plugins/AgentBridge/Compiler/stages/agent_protocol.py:provider_type\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:\nPlugins/AgentBridge/Tests/run_system_tests.py:snapshot_reports_by_prefix, Plugins/AgentBridge/Tests/run_system_tests.py:snapshot_reports\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:\nPlugins/AgentBridge/Tests/run_system_tests.py:record_case, Plugins/AgentBridge/Tests/run_system_tests.py:record_case, Plugins/AgentBridge/Tests/run_system_tests.py:record_case, Plugins/AgentBridge/Tests/run_system_tests.py:record_case\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/23879"}, "properties": {"repository": "Accelerator-mzq/AGENT_UE5", "repoUrl": "https://github.com/Accelerator-mzq/AGENT_UE5", "branch": "main"}, "results": [{"ruleId": "scanner-c954bec4ce33ecd0", "level": "note", "message": {"text": "Possibly dead Python function: load_all_fragments"}, "properties": {"repobilityId": "1a3189a75502a143", "scanner": "scanner-primary", "fingerprint": "c954bec4ce33ecd0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/cross_review/cross_review.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b48fe392841b0982", "level": "note", "message": {"text": "Possibly dead Python function: calls_for"}, "properties": {"repobilityId": "d5027efbb099f7f6", "scanner": "scanner-primary", "fingerprint": "b48fe392841b0982", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/providers/fake_adapter.py:68"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee7eaa0afc6ab356", "level": "note", "message": {"text": "Possibly dead Python function: scan_skill_templates"}, "properties": {"repobilityId": "aee09b0c02d38bad", "scanner": "scanner-primary", "fingerprint": "ee7eaa0afc6ab356", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/planner/planner.py:43"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ca3e617d40578cd", "level": "note", "message": {"text": "Possibly dead Python function: save_skill_graph"}, "properties": {"repobilityId": "832df561d12c6604", "scanner": "scanner-primary", "fingerprint": "1ca3e617d40578cd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/stages/skill_graph_planning.py:637"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-060fc3a533ba9da2", "level": "note", "message": {"text": "Possibly dead Python function: heuristic_evaluate_discovery"}, "properties": {"repobilityId": "761d981c0c1695d7", "scanner": "scanner-primary", "fingerprint": "060fc3a533ba9da2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/stages/agent_protocol.py:344"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-66ebe6557af3e545", "level": "note", "message": {"text": "Possibly dead Python function: heuristic_evaluate_candidates"}, "properties": {"repobilityId": "51e28eba790054dc", "scanner": "scanner-primary", "fingerprint": "66ebe6557af3e545", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/stages/agent_protocol.py:408"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-821448c4238c4250", "level": "note", "message": {"text": "Possibly dead Python function: heuristic_evaluate_convergence"}, "properties": {"repobilityId": "b18094f4a1913db8", "scanner": "scanner-primary", "fingerprint": "821448c4238c4250", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/stages/agent_protocol.py:473"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-645a3e61129c5ab0", "level": "note", "message": {"text": "Possibly dead Python function: save_root_skill_contract"}, "properties": {"repobilityId": "fa85208fea7228d5", "scanner": "scanner-primary", "fingerprint": "645a3e61129c5ab0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/stages/root_skill_contract.py:495"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-800875e84a7aefd6", "level": "note", "message": {"text": "Possibly dead Python function: save_clarification_gate_report"}, "properties": {"repobilityId": "3b422f934b33f3d3", "scanner": "scanner-primary", "fingerprint": "800875e84a7aefd6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/stages/clarification_gate.py:375"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08ac5c5f76d4db50", "level": "note", "message": {"text": "Possibly dead Python function: load_template_pack"}, "properties": {"repobilityId": "74b3d2ef89ffe0f6", "scanner": "scanner-primary", "fingerprint": "08ac5c5f76d4db50", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Compiler/skill_runtime/skill_runtime.py:46"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-7bd6c2ffded1cd78", "level": "error", "message": {"text": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_observability_unit.py"}, "properties": {"repobilityId": "7f6dc23d23ca8355", "scanner": "scanner-primary", "fingerprint": "7bd6c2ffded1cd78", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Tests/scripts/test_observability_unit.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-7bd6c2ffded1cd78", "level": "error", "message": {"text": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_observability_unit.py"}, "properties": {"repobilityId": "7f6dc23d23ca8355", "scanner": "scanner-primary", "fingerprint": "7bd6c2ffded1cd78", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Tests/scripts/test_observability_unit.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-10e4bfe5c3359001", "level": "error", "message": {"text": "Possible secret in Plugins/AgentBridge/Tests/scripts/test_candidates_batch_orchestrator.py"}, "properties": {"repobilityId": "b8ff3f3e3a4aad1e", "scanner": "scanner-primary", "fingerprint": "10e4bfe5c3359001", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Tests/scripts/test_candidates_batch_orchestrator.py"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-13d7fe526ce70e48", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in Plugins/AgentBridge/Scripts/bridge/uat_runner.py:180"}, "properties": {"repobilityId": "d2a49d3472a84b61", "scanner": "scanner-primary", "fingerprint": "13d7fe526ce70e48", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Scripts/bridge/uat_runner.py"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-99f41c7bac63160c", "level": "error", "message": {"text": "Possible secret in Plugins/AgentBridge/Config/llm_config.example.yaml"}, "properties": {"repobilityId": "4231997f9f962df4", "scanner": "scanner-primary", "fingerprint": "99f41c7bac63160c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Plugins/AgentBridge/Config/llm_config.example.yaml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-9ec01721fdccc790", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in ProjectState/phase10/task07_orchestrate.py:78"}, "properties": {"repobilityId": "286a4dc670a16389", "scanner": "scanner-primary", "fingerprint": "9ec01721fdccc790", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ProjectState/phase10/task07_orchestrate.py"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-a83cb10f4f11b800", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in ProjectState/phase10/task08_orchestrate.py:106"}, "properties": {"repobilityId": "711ccb3d7bf79556", "scanner": "scanner-primary", "fingerprint": "a83cb10f4f11b800", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ProjectState/phase10/task08_orchestrate.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-04fcbf10c3683f91", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in ProjectState/phase10/task08_backend_summary.json:143"}, "properties": {"repobilityId": "635c99718d0d8898", "scanner": "scanner-primary", "fingerprint": "04fcbf10c3683f91", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ProjectState/phase10/task08_backend_summary.json"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-07234f25c2460122", "level": "note", "message": {"text": "Very large file: Plugins/AgentBridge/Compiler/pipeline/pipeline_orchestrator.py (1374 lines)"}, "properties": {"repobilityId": "992624e5852980f9", "scanner": "scanner-primary", "fingerprint": "07234f25c2460122", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98fb8011b8b96e7b", "level": "note", "message": {"text": "Very large file: Plugins/AgentBridge/Compiler/stages/agent_protocol.py (1373 lines)"}, "properties": {"repobilityId": "9ba695a2c34f4292", "scanner": "scanner-primary", "fingerprint": "98fb8011b8b96e7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d2c5086e231a31c", "level": "note", "message": {"text": "Very large file: Plugins/AgentBridge/Compiler/stages/domain_skill_runtime.py (1829 lines)"}, "properties": {"repobilityId": "5a36c13cf720d2a9", "scanner": "scanner-primary", "fingerprint": "0d2c5086e231a31c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f3ba9a9d69919fc4", "level": "note", "message": {"text": "Very large file: Plugins/AgentBridge/Tests/run_system_tests.py (3452 lines)"}, "properties": {"repobilityId": "77a9240bf7cbb0e8", "scanner": "scanner-primary", "fingerprint": "f3ba9a9d69919fc4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-51c513f6ca0fda39", "level": "note", "message": {"text": "Very large file: ProjectState/phase10/task08_orchestrate.py (1761 lines)"}, "properties": {"repobilityId": "dfd6bcb1c7062563", "scanner": "scanner-primary", "fingerprint": "51c513f6ca0fda39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "50b097d7811bf722", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "27144f78e7e8f4c5", "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": "7b83fddca190171f", "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": "d92f97faea6638aa", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "115f7e5f70dbca20", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "ec6a4bee85683682", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2679282aa1c484b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "properties": {"repobilityId": "27d579812e6be614", "scanner": "scanner-primary", "fingerprint": "2679282aa1c484b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-8ed0a1b86e453821", "level": "none", "message": {"text": "Commented-code block (5 lines) in Plugins/AgentBridge/Compiler/providers/litellm_adapter.py:35"}, "properties": {"repobilityId": "f9176f0605d5bd30", "scanner": "scanner-primary", "fingerprint": "8ed0a1b86e453821", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c44554d199b12937", "level": "note", "message": {"text": "Legacy-named symbol `cross_review_v2` in Plugins/AgentBridge/Compiler/pipeline/pipeline_orchestrator.py:25"}, "properties": {"repobilityId": "dbede62d8b0b3a56", "scanner": "scanner-primary", "fingerprint": "c44554d199b12937", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-72640f0475ae652e", "level": "note", "message": {"text": "Legacy-named symbol `create_cross_review_report_v2` in Plugins/AgentBridge/Compiler/stages/cross_review_v2.py:438"}, "properties": {"repobilityId": "962af0b3a285d97d", "scanner": "scanner-primary", "fingerprint": "72640f0475ae652e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f936c774ebb36116", "level": "note", "message": {"text": "Legacy-named symbol `create_build_ir_v2` in Plugins/AgentBridge/Compiler/stages/lowering_v2.py:357"}, "properties": {"repobilityId": "b935697529b854e7", "scanner": "scanner-primary", "fingerprint": "f936c774ebb36116", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9cf4914fe19b494b", "level": "note", "message": {"text": "Legacy-named symbol `reviewed_handoff_v2` in Plugins/AgentBridge/Tests/run_system_tests.py:1266"}, "properties": {"repobilityId": "16a260dd228deef0", "scanner": "scanner-primary", "fingerprint": "9cf4914fe19b494b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c54857326a8ffd65", "level": "note", "message": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase4_compiler.py:41"}, "properties": {"repobilityId": "471192b65f3c2e20", "scanner": "scanner-primary", "fingerprint": "c54857326a8ffd65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fef814ce8941280e", "level": "note", "message": {"text": "Legacy-named symbol `cross_review_report_v2` in Plugins/AgentBridge/Tests/scripts/task13_phase11_fast_mode_validation.py:258"}, "properties": {"repobilityId": "d82e4ad36d8bfb81", "scanner": "scanner-primary", "fingerprint": "fef814ce8941280e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-736fee21ebe6542a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Tests/scripts/task13_phase11_fast_mode_validation.py:119"}, "properties": {"repobilityId": "eecf4d62698ec684", "scanner": "scanner-primary", "fingerprint": "736fee21ebe6542a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d90d8f1e67cb5832", "level": "note", "message": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_compiler_plane_foundation.py:223"}, "properties": {"repobilityId": "d78cfb96dfa7ba3b", "scanner": "scanner-primary", "fingerprint": "d90d8f1e67cb5832", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cdb8d02236f018e6", "level": "note", "message": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase6_playable_runtime.py:330"}, "properties": {"repobilityId": "e63abc58a4ebf5ec", "scanner": "scanner-primary", "fingerprint": "cdb8d02236f018e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b2d613574fdd06b0", "level": "note", "message": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Tests/scripts/test_phase5_brownfield.py:136"}, "properties": {"repobilityId": "efd9fc43b4200586", "scanner": "scanner-primary", "fingerprint": "b2d613574fdd06b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2e3755d3d2d6841d", "level": "note", "message": {"text": "Legacy-named symbol `jrpg_turn_based_v1` in Plugins/AgentBridge/Tests/scripts/test_phase7_governance_and_jrpg.py:542"}, "properties": {"repobilityId": "70e3b4f4cf1324d8", "scanner": "scanner-primary", "fingerprint": "2e3755d3d2d6841d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-657ac76211c31f8f", "level": "note", "message": {"text": "Legacy-named symbol `skill_fragment_v2` in Plugins/AgentBridge/Tests/scripts/task11_phase11_mcp_e2e.py:280"}, "properties": {"repobilityId": "20533c82fd61b5df", "scanner": "scanner-primary", "fingerprint": "657ac76211c31f8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-53f3a5dfdafa725b", "level": "none", "message": {"text": "Commented-code block (6 lines) in Plugins/AgentBridge/Tests/scripts/llm_internal_batch_real_run.py:40"}, "properties": {"repobilityId": "61375f9685015353", "scanner": "scanner-primary", "fingerprint": "53f3a5dfdafa725b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c3bbef4e87f529b", "level": "note", "message": {"text": "Legacy-named symbol `test_sks04_family_map_derived_equals_legacy` in Plugins/AgentBridge/Tests/scripts/test_phase13_fragment_family.py:29"}, "properties": {"repobilityId": "7922ff5f9a515d26", "scanner": "scanner-primary", "fingerprint": "6c3bbef4e87f529b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-da74c7377e4df532", "level": "note", "message": {"text": "Legacy-named symbol `skill_fragment_v2` in Plugins/AgentBridge/Tests/scripts/task14_phase11_baseline_template_validation.py:384"}, "properties": {"repobilityId": "a118dd1be4e58683", "scanner": "scanner-primary", "fingerprint": "da74c7377e4df532", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d382a31056a86450", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Tests/scripts/task14_phase11_baseline_template_validation.py:175"}, "properties": {"repobilityId": "6e97d92b9ca6ed4d", "scanner": "scanner-primary", "fingerprint": "d382a31056a86450", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da894ae6a66c9adc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 Plugins/AgentBridge/Scripts/bridge/uat_runner.py:193"}, "properties": {"repobilityId": "eff407393dd25d16", "scanner": "scanner-primary", "fingerprint": "da894ae6a66c9adc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-812c2098390f750f", "level": "note", "message": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Plugins/AgentBridge/Scripts/compiler/intake/design_input_intake.py:521"}, "properties": {"repobilityId": "079cc438fa69aa38", "scanner": "scanner-primary", "fingerprint": "812c2098390f750f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a4fbc8788c34f81e", "level": "note", "message": {"text": "Legacy-named symbol `Greenfield_Brownfield_\u6a21\u5f0f\u5207\u6362\u89c4\u5219_v2` in Plugins/AgentBridge/Scripts/compiler/routing/mode_router.py:5"}, "properties": {"repobilityId": "1cf87331b2c07735", "scanner": "scanner-primary", "fingerprint": "a4fbc8788c34f81e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c0d956efb56216b", "level": "note", "message": {"text": "Legacy-named symbol `actor_copy` in Plugins/AgentBridge/Scripts/orchestrator/spec_reader.py:232"}, "properties": {"repobilityId": "852bf325f900eb58", "scanner": "scanner-primary", "fingerprint": "2c0d956efb56216b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e37f78b6da931578", "level": "note", "message": {"text": "Legacy-named symbol `phase11_skill_fragment_v2` in Plugins/AgentBridge/Scripts/validation/validate_examples.py:103"}, "properties": {"repobilityId": "29ac52ae8f7f2137", "scanner": "scanner-primary", "fingerprint": "e37f78b6da931578", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-147aa811428566ec", "level": "note", "message": {"text": "Legacy-named symbol `reviewed_handoff_v2` in ProjectState/phase10/task08_orchestrate.py:1321"}, "properties": {"repobilityId": "97cd242ae5b7a74e", "scanner": "scanner-primary", "fingerprint": "147aa811428566ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85176758e2297d74", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 ProjectState/phase10/task08_orchestrate.py:179"}, "properties": {"repobilityId": "3b5bcdefc8350316", "scanner": "scanner-primary", "fingerprint": "85176758e2297d74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f632e081ae92538b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 ProjectState/Reports/2026-06-11/run_submits.py:36"}, "properties": {"repobilityId": "f114610ed78a5891", "scanner": "scanner-primary", "fingerprint": "f632e081ae92538b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9f6b10fc0f6640e", "level": "note", "message": {"text": "Legacy-named symbol `boardgame_tictactoe_v1` in Scripts/run_brownfield_demo.py:48"}, "properties": {"repobilityId": "fba41bde26c68fe8", "scanner": "scanner-primary", "fingerprint": "e9f6b10fc0f6640e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-79a923ad2288edc8", "level": "note", "message": {"text": "Legacy-named symbol `jrpg_turn_based_v1` in Scripts/run_phase7_p1_convergence.py:283"}, "properties": {"repobilityId": "abc8b16666daebfd", "scanner": "scanner-primary", "fingerprint": "79a923ad2288edc8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c03617a80dc6b96e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 Scripts/run_phase7_p1_convergence.py:161"}, "properties": {"repobilityId": "0a6a5b8a1b7ed23a", "scanner": "scanner-primary", "fingerprint": "c03617a80dc6b96e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2415b88ee10bc6a3", "level": "note", "message": {"text": "Legacy-named symbol `jrpg_turn_based_v1` in Scripts/run_jrpg_turn_based_demo.py:48"}, "properties": {"repobilityId": "16369a60f8300607", "scanner": "scanner-primary", "fingerprint": "2415b88ee10bc6a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-edfe54ecf0301b13", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 Scripts/run_jrpg_turn_based_demo.py:247"}, "properties": {"repobilityId": "2ffefb0e54a01bab", "scanner": "scanner-primary", "fingerprint": "edfe54ecf0301b13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05cf5d0429154c10", "level": "note", "message": {"text": "Legacy-named symbol `test_sync_creates_copy` in Scripts/hooks/tests/test_sync_skills.py:22"}, "properties": {"repobilityId": "c41ea3eb3b1197d2", "scanner": "scanner-primary", "fingerprint": "05cf5d0429154c10", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "a8bbfb30f81756f2", "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": "cf612a6e26b5db24", "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": "fa57f3b1c6f5c9e0", "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": "f89b8ba0319a7920", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "f2edf0401d4e8110", "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": "cca52ff6b45e02e2", "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": "eb2de31f55f1f995", "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": "5cd3944fd2e773c8", "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": "848d043e943cd144", "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": "7198f288b3fe01c4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}