{"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-1a9a441328d57aaf", "name": "Possibly dead Python function: trace_db_query", "shortDescription": {"text": "Possibly dead Python function: trace_db_query"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ad88af50c68f257", "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-6606518e8a5bdcfc", "name": "Possibly dead Python function: timed_search", "shortDescription": {"text": "Possibly dead Python function: timed_search"}, "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-e0273940f55075d9", "name": "Possibly dead Python function: delete_dataset", "shortDescription": {"text": "Possibly dead Python function: delete_dataset"}, "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-d46cbf0f20eef096", "name": "Possibly dead Python function: clear_screen", "shortDescription": {"text": "Possibly dead Python function: clear_screen"}, "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-08e0a2cf63c9e035", "name": "Possibly dead Python function: handle_mcp_connection", "shortDescription": {"text": "Possibly dead Python function: handle_mcp_connection"}, "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-b6930957beee7374", "name": "Possibly dead Python function: handle_messages", "shortDescription": {"text": "Possibly dead Python function: handle_messages"}, "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-cd832627d3b33819", "name": "Possibly dead Python function: health_endpoint", "shortDescription": {"text": "Possibly dead Python function: health_endpoint"}, "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-2a98b8187938ebcf", "name": "Possibly dead Python function: visit_AsyncFunctionDef", "shortDescription": {"text": "Possibly dead Python function: visit_AsyncFunctionDef"}, "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-c48c51f77470d59b", "name": "Possibly dead Python function: visit_If", "shortDescription": {"text": "Possibly dead Python function: visit_If"}, "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-a6c3c239c324f4aa", "name": "Possibly dead Python function: visit_While", "shortDescription": {"text": "Possibly dead Python function: visit_While"}, "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-bbb553fe181e237b", "name": "Possibly dead Python function: visit_For", "shortDescription": {"text": "Possibly dead Python function: visit_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-a68d1b82e49b206a", "name": "Possibly dead Python function: visit_ExceptHandler", "shortDescription": {"text": "Possibly dead Python function: visit_ExceptHandler"}, "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-fc0ebc195848edc5", "name": "Possibly dead Python function: visit_And", "shortDescription": {"text": "Possibly dead Python function: visit_And"}, "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-163f78342c8d17a4", "name": "Possibly dead Python function: visit_Or", "shortDescription": {"text": "Possibly dead Python function: visit_Or"}, "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-40d2f5d76ce63119", "name": "Possibly dead Python function: visit_Try", "shortDescription": {"text": "Possibly dead Python function: visit_Try"}, "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-54641524d4e5eafe", "name": "Possibly dead Python function: visit_Import", "shortDescription": {"text": "Possibly dead Python function: visit_Import"}, "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-b91442d55df2f466", "name": "Possibly dead Python function: visit_ImportFrom", "shortDescription": {"text": "Possibly dead Python function: visit_ImportFrom"}, "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-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fba194dff2bdc0b4", "name": "Insecure pattern 'eval_used' in mcp_servers/code_analyzer_server.py:239", "shortDescription": {"text": "Insecure pattern 'eval_used' in mcp_servers/code_analyzer_server.py:239"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b488d6970bd6dbae", "name": "Insecure pattern 'exec_used' in mcp_servers/code_analyzer_server.py:240", "shortDescription": {"text": "Insecure pattern 'exec_used' in mcp_servers/code_analyzer_server.py:240"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 97 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 2340 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 22 placeholder/mock markers across 11 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, tests. 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": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.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-386a607238d84091", "name": "Legacy-named symbol `novashield_v2` in graphiti_examples/13_temporal_queries.py:143", "shortDescription": {"text": "Legacy-named symbol `novashield_v2` in graphiti_examples/13_temporal_queries.py:143"}, "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-53b86707a235e212", "name": "Legacy-named symbol `authenticate_v1` in graphiti_examples/24_code_evolution.py:118", "shortDescription": {"text": "Legacy-named symbol `authenticate_v1` in graphiti_examples/24_code_evolution.py:118"}, "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-1604e4bb39ae28e2", "name": "Commented-code block (6 lines) in graphiti_examples/06_configuration.py:104", "shortDescription": {"text": "Commented-code block (6 lines) in graphiti_examples/06_configuration.py:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f560d2a3123d3738", "name": "Blocking `requests.post(...)` inside `async def main` \u2014 cognee_examples/18_code_analysis.py:114", "shortDescription": {"text": "Blocking `requests.post(...)` inside `async def main` \u2014 cognee_examples/18_code_analysis.py:114"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `requests.post(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce29f91a3c94daa1", "name": "Stub function `find_user` (body is just `pass`/`return`) \u2014 cognee_examples/18_code_analysis.py:140", "shortDescription": {"text": "Stub function `find_user` (body is just `pass`/`return`) \u2014 cognee_examples/18_code_analysis.py:140"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9ec065d9e4f0854", "name": "Blocking `time.sleep(...)` inside `async def main` \u2014 cognee_examples/07_rest_api_client.py:131", "shortDescription": {"text": "Blocking `time.sleep(...)` inside `async def main` \u2014 cognee_examples/07_rest_api_client.py:131"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `time.sleep(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52b3bb5453391beb", "name": "Commented-code block (6 lines) in workflow-examples/01-deep-research.js:78", "shortDescription": {"text": "Commented-code block (6 lines) in workflow-examples/01-deep-research.js:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58a92aa471283864", "name": "Commented-code block (7 lines) in workflow-examples/02-security-audit.js:12", "shortDescription": {"text": "Commented-code block (7 lines) in workflow-examples/02-security-audit.js:12"}, "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-cada1485a617b7be", "name": "Commented-code block (5 lines) in workflow-examples/03-parallel-migration.js:126", "shortDescription": {"text": "Commented-code block (5 lines) in workflow-examples/03-parallel-migration.js:126"}, "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-14cec756072d2996", "name": "Commented-code block (6 lines) in workflow-examples/06-parameterized-workflow.js:273", "shortDescription": {"text": "Commented-code block (6 lines) in workflow-examples/06-parameterized-workflow.js: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-f6682afb157adbae", "name": "Commented-code block (5 lines) in workflow-examples/04-pr-review.js:132", "shortDescription": {"text": "Commented-code block (5 lines) in workflow-examples/04-pr-review.js:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d870131ed76dcbb", "name": "Commented-code block (6 lines) in .claude/workflows/graph-workflow-demo.js:26", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/workflows/graph-workflow-demo.js:26"}, "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-a2491976c99c1cf5", "name": "Blocking `urllib.request.urlopen(...)` inside `async def health_check` \u2014 mcp_servers/monitoring_server.py:193", "shortDescription": {"text": "Blocking `urllib.request.urlopen(...)` inside `async def health_check` \u2014 mcp_servers/monitoring_server.py:193"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `urllib.request.urlopen(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-094a005c87544b00", "name": "Network/subprocess call without timeout or try/except \u2014 mcp_servers/project_scaffolder_server.py:119", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 mcp_servers/project_scaffolder_server.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-2d6ffa20a9f1093b", "name": "24 env vars used in code but missing from .env.example", "shortDescription": {"text": "24 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANTHROPIC_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_KEY`, `BRAVE_API_KEY`, `CONVERTER_OUTPUT_DIR`, `DEVOPS_ALLOWED_DIRS`, `DEVOPS_BLOCKED_COMMANDS`, `EMAIL_TEMPLATES_FILE` + 16 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9dad557909b86499", "name": "Near-duplicate function bodies in 10 places", "shortDescription": {"text": "Near-duplicate function bodies in 10 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ngraphiti_examples/01_hello_graphiti.py:check_neo4j_connection, graphiti_examples/22_research_knowledge.py:check_neo4j_connection, graphiti_examples/04_extraction_pipeline.py:check_neo4j_connection, graphiti_examples/03_episode_patterns.py:check_neo4j_connection\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ngraphiti_examples/12_rest_api.py:check_neo4j_connection, graphiti_examples/08_search_api.py:check_neo4j_connection, graphiti_examples/14_contradictions.py:check_neo4j_connection, graphiti_examples/09_custom_entities.py:check_neo4j_connection\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:\ngraphiti_examples/22_research_knowledge.py:print_edges, graphiti_examples/24_code_evolution.py:print_edges, graphiti_examples/23_multi_agent.py:print_edges\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:\ncognee_examples/13_skills.py:execute, cognee_examples/13_skills.py:execute\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nexamples/11_interleaved_thinking.py:print_header, examples/14_vision_pdf.py:print_header, examples/16_citations.py:print_header, examples/15_structured_output.py:print_header\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-6297377883dd7783", "name": "Near-duplicate function bodies in 13 places", "shortDescription": {"text": "Near-duplicate function bodies in 13 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmcp_servers/search_aggregator_server.py:main, mcp_servers/email_server.py:main, mcp_servers/file_converter_server.py:main, mcp_servers/weather_server.py:main\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-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmcp_servers/email_server.py:compose_campaign_prompt, mcp_servers/monitoring_server.py:diagnose_prompt, mcp_servers/notification_server.py:pomodoro_prompt, mcp_servers/crypto_server.py:security_checklist_prompt\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/20800"}, "properties": {"repository": "tamajit-guharoy/genai-explore", "repoUrl": "https://github.com/tamajit-guharoy/genai-explore", "branch": "main"}, "results": [{"ruleId": "scanner-1a9a441328d57aaf", "level": "note", "message": {"text": "Possibly dead Python function: trace_db_query"}, "properties": {"repobilityId": "ddf263ba959e9424", "scanner": "scanner-primary", "fingerprint": "1a9a441328d57aaf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "graphiti_examples/19_observability.py:155"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ad88af50c68f257", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "9ad88af50c68f257", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "graphiti_examples/19_observability.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6606518e8a5bdcfc", "level": "note", "message": {"text": "Possibly dead Python function: timed_search"}, "properties": {"repobilityId": "8ccdfefed22f3deb", "scanner": "scanner-primary", "fingerprint": "6606518e8a5bdcfc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "graphiti_examples/19_observability.py:239"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0273940f55075d9", "level": "note", "message": {"text": "Possibly dead Python function: delete_dataset"}, "properties": {"repobilityId": "2e202c78b03c4117", "scanner": "scanner-primary", "fingerprint": "e0273940f55075d9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cognee_examples/07_rest_api_client.py:84"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d46cbf0f20eef096", "level": "note", "message": {"text": "Possibly dead Python function: clear_screen"}, "properties": {"repobilityId": "256818834d65d5d3", "scanner": "scanner-primary", "fingerprint": "d46cbf0f20eef096", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/16_citations.py:45"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08e0a2cf63c9e035", "level": "note", "message": {"text": "Possibly dead Python function: handle_mcp_connection"}, "properties": {"repobilityId": "9c3cab1600be1dac", "scanner": "scanner-primary", "fingerprint": "08e0a2cf63c9e035", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/http_team_server.py:373"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b6930957beee7374", "level": "note", "message": {"text": "Possibly dead Python function: handle_messages"}, "properties": {"repobilityId": "9213ebb0bebd1965", "scanner": "scanner-primary", "fingerprint": "b6930957beee7374", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/http_team_server.py:401"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd832627d3b33819", "level": "note", "message": {"text": "Possibly dead Python function: health_endpoint"}, "properties": {"repobilityId": "cfbd75a3e1bc7da8", "scanner": "scanner-primary", "fingerprint": "cd832627d3b33819", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/http_team_server.py:415"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2a98b8187938ebcf", "level": "note", "message": {"text": "Possibly dead Python function: visit_AsyncFunctionDef"}, "properties": {"repobilityId": "eac17513dd240cf3", "scanner": "scanner-primary", "fingerprint": "2a98b8187938ebcf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c48c51f77470d59b", "level": "note", "message": {"text": "Possibly dead Python function: visit_If"}, "properties": {"repobilityId": "553331d7d151e6cd", "scanner": "scanner-primary", "fingerprint": "c48c51f77470d59b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:70"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a6c3c239c324f4aa", "level": "note", "message": {"text": "Possibly dead Python function: visit_While"}, "properties": {"repobilityId": "6d00f8262e510abc", "scanner": "scanner-primary", "fingerprint": "a6c3c239c324f4aa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bbb553fe181e237b", "level": "note", "message": {"text": "Possibly dead Python function: visit_For"}, "properties": {"repobilityId": "ae2ec616a70d29c5", "scanner": "scanner-primary", "fingerprint": "bbb553fe181e237b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a68d1b82e49b206a", "level": "note", "message": {"text": "Possibly dead Python function: visit_ExceptHandler"}, "properties": {"repobilityId": "0a02b2323610b180", "scanner": "scanner-primary", "fingerprint": "a68d1b82e49b206a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:73"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc0ebc195848edc5", "level": "note", "message": {"text": "Possibly dead Python function: visit_And"}, "properties": {"repobilityId": "9be5274ab47d0f6b", "scanner": "scanner-primary", "fingerprint": "fc0ebc195848edc5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-163f78342c8d17a4", "level": "note", "message": {"text": "Possibly dead Python function: visit_Or"}, "properties": {"repobilityId": "c0140d20e3d4916d", "scanner": "scanner-primary", "fingerprint": "163f78342c8d17a4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40d2f5d76ce63119", "level": "note", "message": {"text": "Possibly dead Python function: visit_Try"}, "properties": {"repobilityId": "32dff0ca2038d76e", "scanner": "scanner-primary", "fingerprint": "40d2f5d76ce63119", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54641524d4e5eafe", "level": "note", "message": {"text": "Possibly dead Python function: visit_Import"}, "properties": {"repobilityId": "66cd6a2eba488b69", "scanner": "scanner-primary", "fingerprint": "54641524d4e5eafe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:83"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b91442d55df2f466", "level": "note", "message": {"text": "Possibly dead Python function: visit_ImportFrom"}, "properties": {"repobilityId": "9943a88b95a56d70", "scanner": "scanner-primary", "fingerprint": "b91442d55df2f466", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-fba194dff2bdc0b4", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in mcp_servers/code_analyzer_server.py:239"}, "properties": {"repobilityId": "c4da6739530b88df", "scanner": "scanner-primary", "fingerprint": "fba194dff2bdc0b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-b488d6970bd6dbae", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in mcp_servers/code_analyzer_server.py:240"}, "properties": {"repobilityId": "98a6401a004acb0a", "scanner": "scanner-primary", "fingerprint": "b488d6970bd6dbae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/code_analyzer_server.py"}, "region": {"startLine": 240}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "8d1b0610063863fd", "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": "f430be3513430662", "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": "da3ffce834f45a41", "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": "b987631c5844701a", "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": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "51944acfbd07d6bc", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "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": "c6924d2700515799", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "64d23ae8b324a449", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "3d5d017ae03fff4f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-386a607238d84091", "level": "note", "message": {"text": "Legacy-named symbol `novashield_v2` in graphiti_examples/13_temporal_queries.py:143"}, "properties": {"repobilityId": "0f8fa4291751f590", "scanner": "scanner-primary", "fingerprint": "386a607238d84091", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-53b86707a235e212", "level": "note", "message": {"text": "Legacy-named symbol `authenticate_v1` in graphiti_examples/24_code_evolution.py:118"}, "properties": {"repobilityId": "dcfe904065c63331", "scanner": "scanner-primary", "fingerprint": "53b86707a235e212", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1604e4bb39ae28e2", "level": "none", "message": {"text": "Commented-code block (6 lines) in graphiti_examples/06_configuration.py:104"}, "properties": {"repobilityId": "0295080c4846fcc5", "scanner": "scanner-primary", "fingerprint": "1604e4bb39ae28e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f560d2a3123d3738", "level": "error", "message": {"text": "Blocking `requests.post(...)` inside `async def main` \u2014 cognee_examples/18_code_analysis.py:114"}, "properties": {"repobilityId": "e031ecae45d48140", "scanner": "scanner-primary", "fingerprint": "f560d2a3123d3738", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cognee_examples/18_code_analysis.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-ce29f91a3c94daa1", "level": "note", "message": {"text": "Stub function `find_user` (body is just `pass`/`return`) \u2014 cognee_examples/18_code_analysis.py:140"}, "properties": {"repobilityId": "0d44d16545192377", "scanner": "scanner-primary", "fingerprint": "ce29f91a3c94daa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-c9ec065d9e4f0854", "level": "error", "message": {"text": "Blocking `time.sleep(...)` inside `async def main` \u2014 cognee_examples/07_rest_api_client.py:131"}, "properties": {"repobilityId": "9cae024df01973ce", "scanner": "scanner-primary", "fingerprint": "c9ec065d9e4f0854", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cognee_examples/07_rest_api_client.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-52b3bb5453391beb", "level": "none", "message": {"text": "Commented-code block (6 lines) in workflow-examples/01-deep-research.js:78"}, "properties": {"repobilityId": "22761850113f8a87", "scanner": "scanner-primary", "fingerprint": "52b3bb5453391beb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58a92aa471283864", "level": "none", "message": {"text": "Commented-code block (7 lines) in workflow-examples/02-security-audit.js:12"}, "properties": {"repobilityId": "ad38529f5aaf92a4", "scanner": "scanner-primary", "fingerprint": "58a92aa471283864", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cada1485a617b7be", "level": "none", "message": {"text": "Commented-code block (5 lines) in workflow-examples/03-parallel-migration.js:126"}, "properties": {"repobilityId": "870af973b5f6e6d6", "scanner": "scanner-primary", "fingerprint": "cada1485a617b7be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14cec756072d2996", "level": "none", "message": {"text": "Commented-code block (6 lines) in workflow-examples/06-parameterized-workflow.js:273"}, "properties": {"repobilityId": "f337f085b3096232", "scanner": "scanner-primary", "fingerprint": "14cec756072d2996", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6682afb157adbae", "level": "none", "message": {"text": "Commented-code block (5 lines) in workflow-examples/04-pr-review.js:132"}, "properties": {"repobilityId": "da5a9160bb02fcfa", "scanner": "scanner-primary", "fingerprint": "f6682afb157adbae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d870131ed76dcbb", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/workflows/graph-workflow-demo.js:26"}, "properties": {"repobilityId": "004aab9c6e16268f", "scanner": "scanner-primary", "fingerprint": "5d870131ed76dcbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2491976c99c1cf5", "level": "error", "message": {"text": "Blocking `urllib.request.urlopen(...)` inside `async def health_check` \u2014 mcp_servers/monitoring_server.py:193"}, "properties": {"repobilityId": "cd7c489b7607528b", "scanner": "scanner-primary", "fingerprint": "a2491976c99c1cf5", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp_servers/monitoring_server.py"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-094a005c87544b00", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 mcp_servers/project_scaffolder_server.py:119"}, "properties": {"repobilityId": "4cdc10bcfe4cce70", "scanner": "scanner-primary", "fingerprint": "094a005c87544b00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d6ffa20a9f1093b", "level": "note", "message": {"text": "24 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "880bbf29bf1f87e1", "scanner": "scanner-primary", "fingerprint": "2d6ffa20a9f1093b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-9dad557909b86499", "level": "note", "message": {"text": "Near-duplicate function bodies in 10 places"}, "properties": {"repobilityId": "fccfe1ed3b91ddfb", "scanner": "scanner-primary", "fingerprint": "9dad557909b86499", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "64cc14225ea9eec9", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "253f574183ef5468", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "b1c6f000308edf33", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "aacda9f7ed68d455", "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": "2e7b66ab016fd592", "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": "8d6685a64ad807cb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "9d1c91026e10ceba", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "137cf41e982b7e1a", "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": "27227ba1c6533cde", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-6297377883dd7783", "level": "note", "message": {"text": "Near-duplicate function bodies in 13 places"}, "properties": {"repobilityId": "b3360207c16c56fb", "scanner": "scanner-primary", "fingerprint": "6297377883dd7783", "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": "bcf9b890511c24e7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "0c85d878df996720", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}