{"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-75bd2255608b567a", "name": "Possibly dead Python function: evaluate_skill", "shortDescription": {"text": "Possibly dead Python function: evaluate_skill"}, "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-35463d03f77c0117", "name": "Possibly dead Python function: evaluate_suggestion", "shortDescription": {"text": "Possibly dead Python function: evaluate_suggestion"}, "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-2d28b668b348c701", "name": "Possibly dead Python function: resolve_worker_session_script", "shortDescription": {"text": "Possibly dead Python function: resolve_worker_session_script"}, "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-f1fc7a44b61970f1", "name": "Possibly dead Python function: send_to_gateway_async", "shortDescription": {"text": "Possibly dead Python function: send_to_gateway_async"}, "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-995e02ec8cd7f04a", "name": "Possibly dead Python function: receive_from_gateway", "shortDescription": {"text": "Possibly dead Python function: receive_from_gateway"}, "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-8681d9e7cba9a0cc", "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-49c40933debdf115", "name": "Possibly dead Python function: generate_refinement_hint", "shortDescription": {"text": "Possibly dead Python function: generate_refinement_hint"}, "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-1d09323564016754", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-e7a66c35c8248dac", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-40dfd8d3e91dd794", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-0af9bfbbe2071f8f", "name": "Possibly dead Python function: visit_ClassDef", "shortDescription": {"text": "Possibly dead Python function: visit_ClassDef"}, "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-bc6900eed0eb25ff", "name": "Possibly dead Python function: visit_FunctionDef", "shortDescription": {"text": "Possibly dead Python function: visit_FunctionDef"}, "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-af880b2a11504ee2", "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-9de6cbcff7298651", "name": "Possibly dead Python function: enqueue_main", "shortDescription": {"text": "Possibly dead Python function: enqueue_main"}, "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-b1f9c1fa31392bba", "name": "Possibly dead Python function: score_skill", "shortDescription": {"text": "Possibly dead Python function: score_skill"}, "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-1a3bec82ebced85d", "name": "Possibly dead Python function: clear_runtime_tools", "shortDescription": {"text": "Possibly dead Python function: clear_runtime_tools"}, "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-475be1b78e988e86", "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-e0dfd998222f6897", "name": "Possibly dead Python function: visit_FunctionDef", "shortDescription": {"text": "Possibly dead Python function: visit_FunctionDef"}, "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-7ee3094854f40486", "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-a8ca551e7e9b2728", "name": "Possibly dead Python function: to_spec", "shortDescription": {"text": "Possibly dead Python function: to_spec"}, "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-8e8b3b6dffa9fb88", "name": "Possibly dead Python function: to_legacy", "shortDescription": {"text": "Possibly dead Python function: to_legacy"}, "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-40aae541cb3e4fd9", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3cb5006c421cb8c", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "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-77ab34f1e54ece81", "name": "Insecure pattern 'subprocess_shell_true' in src/graduation.py:398", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/graduation.py:398"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af80725e3108f85a", "name": "Insecure pattern 'subprocess_shell_true' in src/quality_gate.py:537", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/quality_gate.py:537"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c873f0d1e8d085d3", "name": "Insecure pattern 'subprocess_shell_true' in src/orch_bridges.py:632", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/orch_bridges.py:632"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ec9fe2194cb5add", "name": "Insecure pattern 'eval_used' in src/constraint.py:290", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/constraint.py:290"}, "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-0b730c1080c310e1", "name": "Insecure pattern 'exec_used' in src/constraint.py:291", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/constraint.py:291"}, "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-135a486366d5ac6f", "name": "Insecure pattern 'subprocess_shell_true' in src/constraint.py:293", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/constraint.py:293"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3058a6809a12910", "name": "Insecure pattern 'subprocess_shell_true' in src/background.py:153", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/background.py:153"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70e808ec681d3a46", "name": "Insecure pattern 'eval_used' in src/sandbox.py:49", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/sandbox.py:49"}, "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-e8b75b989d88bdeb", "name": "Insecure pattern 'exec_used' in src/sandbox.py:50", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/sandbox.py:50"}, "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-1ae83fb711089f64", "name": "Insecure pattern 'subprocess_shell_true' in src/hooks.py:568", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/hooks.py:568"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63081fcced7b25a4", "name": "Insecure pattern 'subprocess_shell_true' in src/director.py:1533", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/director.py:1533"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-e317432f237a5100", "name": "Very large file: tests/test_director.py (1772 lines)", "shortDescription": {"text": "Very large file: tests/test_director.py (1772 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-a4fbcce3a18776cb", "name": "Very large file: tests/test_memory.py (1838 lines)", "shortDescription": {"text": "Very large file: tests/test_memory.py (1838 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-bf563f8d60722ea8", "name": "Very large file: tests/test_agent_loop.py (3121 lines)", "shortDescription": {"text": "Very large file: tests/test_agent_loop.py (3121 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-3bf979bbe0dd4610", "name": "Very large file: tests/test_knowledge_web.py (1349 lines)", "shortDescription": {"text": "Very large file: tests/test_knowledge_web.py (1349 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-e3ebe0a1682f1308", "name": "Very large file: tests/test_evolver.py (2692 lines)", "shortDescription": {"text": "Very large file: tests/test_evolver.py (2692 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-6f76ef5b367c3a32", "name": "Very large file: tests/test_skills.py (2123 lines)", "shortDescription": {"text": "Very large file: tests/test_skills.py (2123 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-fab32a679980ec9d", "name": "Very large file: tests/test_inspector.py (1537 lines)", "shortDescription": {"text": "Very large file: tests/test_inspector.py (1537 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-b6a5fca340cd3e47", "name": "Very large file: tests/test_handle.py (2199 lines)", "shortDescription": {"text": "Very large file: tests/test_handle.py (2199 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-01e146322a347736", "name": "Very large file: src/skills.py (2055 lines)", "shortDescription": {"text": "Very large file: src/skills.py (2055 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-d7742516bac83fd8", "name": "Very large file: src/orch_bridges.py (1378 lines)", "shortDescription": {"text": "Very large file: src/orch_bridges.py (1378 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-f2f9823f68258c07", "name": "Very large file: src/introspect.py (1509 lines)", "shortDescription": {"text": "Very large file: src/introspect.py (1509 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-e3de40b23e1e0032", "name": "Very large file: src/evolver.py (3266 lines)", "shortDescription": {"text": "Very large file: src/evolver.py (3266 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-0068f6c6a9fd5054", "name": "Very large file: src/llm.py (1681 lines)", "shortDescription": {"text": "Very large file: src/llm.py (1681 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-0ebb3ca2ff2df360", "name": "Very large file: src/step_exec.py (1276 lines)", "shortDescription": {"text": "Very large file: src/step_exec.py (1276 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-f384c6779efc8351", "name": "Very large file: src/observe.py (1685 lines)", "shortDescription": {"text": "Very large file: src/observe.py (1685 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-511f3d5e4bbeefcb", "name": "Very large file: src/knowledge_web.py (1633 lines)", "shortDescription": {"text": "Very large file: src/knowledge_web.py (1633 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-bf9b0f6379e43d14", "name": "Very large file: src/cli.py (1848 lines)", "shortDescription": {"text": "Very large file: src/cli.py (1848 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-a23e337d72a4905b", "name": "Very large file: src/handle.py (2131 lines)", "shortDescription": {"text": "Very large file: src/handle.py (2131 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-a340903890afd945", "name": "Very large file: src/persona.py (1376 lines)", "shortDescription": {"text": "Very large file: src/persona.py (1376 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-abb04fcfb6f38b31", "name": "Very large file: src/agent_loop.py (5191 lines)", "shortDescription": {"text": "Very large file: src/agent_loop.py (5191 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-08e3c79685fe17cc", "name": "Very large file: src/director.py (2151 lines)", "shortDescription": {"text": "Very large file: src/director.py (2151 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-379f6e2a9d1cf771", "name": "Very large file: src/inspector.py (2066 lines)", "shortDescription": {"text": "Very large file: src/inspector.py (2066 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1217 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 18 placeholder/mock markers across 12 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-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 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-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-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-af7ded88504fdf38", "name": "Commented-code block (6 lines) in tests/test_hooks.py:540", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_hooks.py:540"}, "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-8673e5797d285f44", "name": "Commented-code block (7 lines) in tests/conftest.py:104", "shortDescription": {"text": "Commented-code block (7 lines) in tests/conftest.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-ce24295b701187ed", "name": "Legacy-named symbol `handler_v1` in tests/test_step_events.py:98", "shortDescription": {"text": "Legacy-named symbol `handler_v1` in tests/test_step_events.py:98"}, "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-0ea022a4271efcc6", "name": "Commented-code block (5 lines) in tests/test_agent_loop.py:547", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_agent_loop.py:547"}, "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-b2cc7b601f936573", "name": "Legacy-named symbol `test_gc_narrative_logs_removes_old` in tests/test_gc_memory.py:193", "shortDescription": {"text": "Legacy-named symbol `test_gc_narrative_logs_removes_old` in tests/test_gc_memory.py:193"}, "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-70c2bf8b83256a0a", "name": "Legacy-named symbol `test_apply_skill_creates_backup` in tests/integration/test_evolver_apply.py:500", "shortDescription": {"text": "Legacy-named symbol `test_apply_skill_creates_backup` in tests/integration/test_evolver_apply.py:500"}, "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-85eebc932828ae1b", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/scope_ab_runner.py:80", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/scope_ab_runner.py:80"}, "fullDescription": {"text": "`subprocess.check_output(...)` 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-54fa00423664f3cd", "name": "Commented-code block (5 lines) in src/heartbeat.py:491", "shortDescription": {"text": "Commented-code block (5 lines) in src/heartbeat.py:491"}, "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-847ea15eb107d72f", "name": "Commented-code block (6 lines) in src/claim_verifier.py:172", "shortDescription": {"text": "Commented-code block (6 lines) in src/claim_verifier.py:172"}, "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-76df14a0ac261ef7", "name": "Commented-code block (5 lines) in src/quality_gate.py:349", "shortDescription": {"text": "Commented-code block (5 lines) in src/quality_gate.py:349"}, "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-0c0fa2dae28e34e6", "name": "Commented-code block (5 lines) in src/navigator_shadow.py:295", "shortDescription": {"text": "Commented-code block (5 lines) in src/navigator_shadow.py:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-937950d4de23de44", "name": "Commented-code block (5 lines) in src/knowledge_lens.py:212", "shortDescription": {"text": "Commented-code block (5 lines) in src/knowledge_lens.py:212"}, "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-848438afc12f470e", "name": "Network/subprocess call without timeout or try/except \u2014 src/orch_bridges.py:630", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/orch_bridges.py:630"}, "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-85569b526a56e448", "name": "Commented-code block (5 lines) in src/constraint.py:506", "shortDescription": {"text": "Commented-code block (5 lines) in src/constraint.py:506"}, "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-c4f6aa2316480e49", "name": "Commented-code block (5 lines) in src/recall.py:320", "shortDescription": {"text": "Commented-code block (5 lines) in src/recall.py:320"}, "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-cb442cbe6a4eff12", "name": "Commented-code block (5 lines) in src/evolver.py:451", "shortDescription": {"text": "Commented-code block (5 lines) in src/evolver.py:451"}, "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-985c5fb1e6af2a0c", "name": "Network/subprocess call without timeout or try/except \u2014 src/background.py:151", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/background.py:151"}, "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-b0c63d1f1dd137fa", "name": "Commented-code block (5 lines) in src/llm.py:494", "shortDescription": {"text": "Commented-code block (5 lines) in src/llm.py:494"}, "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-76d6f5b143b0734a", "name": "Commented-code block (5 lines) in src/step_exec.py:182", "shortDescription": {"text": "Commented-code block (5 lines) in src/step_exec.py:182"}, "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-0bd4733f8f677dfb", "name": "Commented-code block (5 lines) in src/knowledge_web.py:233", "shortDescription": {"text": "Commented-code block (5 lines) in src/knowledge_web.py:233"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eabd0307578dfd2d", "name": "Legacy-named symbol `entry_copy` in src/captains_log.py:674", "shortDescription": {"text": "Legacy-named symbol `entry_copy` in src/captains_log.py:674"}, "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-8f627e8bf090a427", "name": "Commented-code block (5 lines) in src/captains_log.py:108", "shortDescription": {"text": "Commented-code block (5 lines) in src/captains_log.py:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cf973e276af662c", "name": "Commented-code block (7 lines) in src/handle.py:412", "shortDescription": {"text": "Commented-code block (7 lines) in src/handle.py:412"}, "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-28df0f19afbe89a7", "name": "Commented-code block (6 lines) in src/poe.py:337", "shortDescription": {"text": "Commented-code block (6 lines) in src/poe.py:337"}, "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-d871b6053ec99896", "name": "Commented-code block (7 lines) in src/agent_loop.py:353", "shortDescription": {"text": "Commented-code block (7 lines) in src/agent_loop.py:353"}, "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-05885ebb538a33e0", "name": "Commented-code block (6 lines) in src/director.py:1399", "shortDescription": {"text": "Commented-code block (6 lines) in src/director.py:1399"}, "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-18e7f2b19588d0a0", "name": "Legacy-named symbol `to_legacy` in src/inspector.py:259", "shortDescription": {"text": "Legacy-named symbol `to_legacy` in src/inspector.py:259"}, "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-f2d4e4d41ef3b1ab", "name": "Commented-code block (5 lines) in src/inspector.py:172", "shortDescription": {"text": "Commented-code block (5 lines) in src/inspector.py:172"}, "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-9cac7ce15e72817b", "name": "31 env vars used in code but missing from .env.example", "shortDescription": {"text": "31 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ANTHROPIC_API_KEY`, `CLAUDE_BIN`, `CODEX_AUTH_FILE`, `CODEX_BIN`, `OPENCLAW_CFG`, `OPENROUTER_API_KEY`, `ORCH_ITEM_TEXT`, `ORCH_PROJECT` + 23 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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/goal_map.py:find_conflicts, src/goal_map.py:find_conflicts\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/claim_verifier.py:has_hallucinations, src/claim_verifier.py:has_hallucinations, src/claim_verifier.py:has_hallucinations\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:\nsrc/llm.py:complete, src/llm.py:complete, src/llm.py:complete, src/llm.py:complete\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/19856"}, "properties": {"repository": "slycrel/openclaw-orchestration", "repoUrl": "https://github.com/slycrel/openclaw-orchestration", "branch": "main"}, "results": [{"ruleId": "scanner-75bd2255608b567a", "level": "note", "message": {"text": "Possibly dead Python function: evaluate_skill"}, "properties": {"repobilityId": "c7318d7f442a81fd", "scanner": "scanner-primary", "fingerprint": "75bd2255608b567a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/strategy_evaluator.py:322"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-35463d03f77c0117", "level": "note", "message": {"text": "Possibly dead Python function: evaluate_suggestion"}, "properties": {"repobilityId": "a37781722c3aaccd", "scanner": "scanner-primary", "fingerprint": "35463d03f77c0117", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/strategy_evaluator.py:337"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d28b668b348c701", "level": "note", "message": {"text": "Possibly dead Python function: resolve_worker_session_script"}, "properties": {"repobilityId": "e2c8934247f51031", "scanner": "scanner-primary", "fingerprint": "2d28b668b348c701", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/orch_bridges.py:533"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1fc7a44b61970f1", "level": "note", "message": {"text": "Possibly dead Python function: send_to_gateway_async"}, "properties": {"repobilityId": "af167ccbbefb0dbe", "scanner": "scanner-primary", "fingerprint": "f1fc7a44b61970f1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/gateway.py:262"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-995e02ec8cd7f04a", "level": "note", "message": {"text": "Possibly dead Python function: receive_from_gateway"}, "properties": {"repobilityId": "ef2f4dd322d94048", "scanner": "scanner-primary", "fingerprint": "995e02ec8cd7f04a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/gateway.py:328"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8681d9e7cba9a0cc", "level": "note", "message": {"text": "Possibly dead Python function: decorator"}, "properties": {"repobilityId": "ffbcbc9bc189af1c", "scanner": "scanner-primary", "fingerprint": "8681d9e7cba9a0cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/step_events.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-49c40933debdf115", "level": "note", "message": {"text": "Possibly dead Python function: generate_refinement_hint"}, "properties": {"repobilityId": "25f4cdbee1497ac1", "scanner": "scanner-primary", "fingerprint": "49c40933debdf115", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/step_exec.py:496"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d09323564016754", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "1d09323564016754", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/observe.py:1394"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7a66c35c8248dac", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "e7a66c35c8248dac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/observe.py:1406"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40dfd8d3e91dd794", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "40dfd8d3e91dd794", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/observe.py:1453"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0af9bfbbe2071f8f", "level": "note", "message": {"text": "Possibly dead Python function: visit_ClassDef"}, "properties": {"repobilityId": "4ddb6420f5455a47", "scanner": "scanner-primary", "fingerprint": "0af9bfbbe2071f8f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/codebase_graph.py:231"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc6900eed0eb25ff", "level": "note", "message": {"text": "Possibly dead Python function: visit_FunctionDef"}, "properties": {"repobilityId": "7a354842f176b228", "scanner": "scanner-primary", "fingerprint": "bc6900eed0eb25ff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/codebase_graph.py:253"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af880b2a11504ee2", "level": "note", "message": {"text": "Possibly dead Python function: visit_AsyncFunctionDef"}, "properties": {"repobilityId": "eac17513dd240cf3", "scanner": "scanner-primary", "fingerprint": "af880b2a11504ee2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/codebase_graph.py:256"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9de6cbcff7298651", "level": "note", "message": {"text": "Possibly dead Python function: enqueue_main"}, "properties": {"repobilityId": "c90b5e683ab4c4bb", "scanner": "scanner-primary", "fingerprint": "9de6cbcff7298651", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/handle.py:2095"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b1f9c1fa31392bba", "level": "note", "message": {"text": "Possibly dead Python function: score_skill"}, "properties": {"repobilityId": "5ea8c2b0b149db1d", "scanner": "scanner-primary", "fingerprint": "b1f9c1fa31392bba", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/doctor.py:397"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a3bec82ebced85d", "level": "note", "message": {"text": "Possibly dead Python function: clear_runtime_tools"}, "properties": {"repobilityId": "0a845757964a6785", "scanner": "scanner-primary", "fingerprint": "1a3bec82ebced85d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/runtime_tools.py:232"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-475be1b78e988e86", "level": "note", "message": {"text": "Possibly dead Python function: visit_ExceptHandler"}, "properties": {"repobilityId": "0a02b2323610b180", "scanner": "scanner-primary", "fingerprint": "475be1b78e988e86", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bughunter.py:128"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0dfd998222f6897", "level": "note", "message": {"text": "Possibly dead Python function: visit_FunctionDef"}, "properties": {"repobilityId": "7a354842f176b228", "scanner": "scanner-primary", "fingerprint": "e0dfd998222f6897", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bughunter.py:141"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ee3094854f40486", "level": "note", "message": {"text": "Possibly dead Python function: visit_AsyncFunctionDef"}, "properties": {"repobilityId": "eac17513dd240cf3", "scanner": "scanner-primary", "fingerprint": "7ee3094854f40486", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/bughunter.py:145"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8ca551e7e9b2728", "level": "note", "message": {"text": "Possibly dead Python function: to_spec"}, "properties": {"repobilityId": "df2c6417cc9b9a7c", "scanner": "scanner-primary", "fingerprint": "a8ca551e7e9b2728", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/inspector.py:227"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e8b3b6dffa9fb88", "level": "note", "message": {"text": "Possibly dead Python function: to_legacy"}, "properties": {"repobilityId": "ff6982978ef88f25", "scanner": "scanner-primary", "fingerprint": "8e8b3b6dffa9fb88", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/inspector.py:280"}, "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-40aae541cb3e4fd9", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "40aae541cb3e4fd9", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "research/data_collection_template.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-c3cb5006c421cb8c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-alpine"}, "properties": {"repobilityId": "a6156f943db1de67", "scanner": "scanner-primary", "fingerprint": "c3cb5006c421cb8c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "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-77ab34f1e54ece81", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/graduation.py:398"}, "properties": {"repobilityId": "143a984a66e6035d", "scanner": "scanner-primary", "fingerprint": "77ab34f1e54ece81", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/graduation.py"}, "region": {"startLine": 398}}}]}, {"ruleId": "scanner-af80725e3108f85a", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/quality_gate.py:537"}, "properties": {"repobilityId": "795e9c0606c6fdd8", "scanner": "scanner-primary", "fingerprint": "af80725e3108f85a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/quality_gate.py"}, "region": {"startLine": 537}}}]}, {"ruleId": "scanner-c873f0d1e8d085d3", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/orch_bridges.py:632"}, "properties": {"repobilityId": "28746d01277d4dfe", "scanner": "scanner-primary", "fingerprint": "c873f0d1e8d085d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/orch_bridges.py"}, "region": {"startLine": 632}}}]}, {"ruleId": "scanner-1ec9fe2194cb5add", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/constraint.py:290"}, "properties": {"repobilityId": "d8118a4bca09eaa0", "scanner": "scanner-primary", "fingerprint": "1ec9fe2194cb5add", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/constraint.py"}, "region": {"startLine": 290}}}]}, {"ruleId": "scanner-0b730c1080c310e1", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/constraint.py:291"}, "properties": {"repobilityId": "45db39d070c926ee", "scanner": "scanner-primary", "fingerprint": "0b730c1080c310e1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/constraint.py"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-135a486366d5ac6f", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/constraint.py:293"}, "properties": {"repobilityId": "009570522ad4a3f9", "scanner": "scanner-primary", "fingerprint": "135a486366d5ac6f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/constraint.py"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-f3058a6809a12910", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/background.py:153"}, "properties": {"repobilityId": "03cf30c7ef75c46f", "scanner": "scanner-primary", "fingerprint": "f3058a6809a12910", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/background.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-70e808ec681d3a46", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/sandbox.py:49"}, "properties": {"repobilityId": "e6cd2ae1fa8ba64d", "scanner": "scanner-primary", "fingerprint": "70e808ec681d3a46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/sandbox.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-e8b75b989d88bdeb", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/sandbox.py:50"}, "properties": {"repobilityId": "4411b8ba94f17f72", "scanner": "scanner-primary", "fingerprint": "e8b75b989d88bdeb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/sandbox.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-1ae83fb711089f64", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/hooks.py:568"}, "properties": {"repobilityId": "1a4d466cacb65312", "scanner": "scanner-primary", "fingerprint": "1ae83fb711089f64", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/hooks.py"}, "region": {"startLine": 568}}}]}, {"ruleId": "scanner-63081fcced7b25a4", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/director.py:1533"}, "properties": {"repobilityId": "e18fa71c066c9760", "scanner": "scanner-primary", "fingerprint": "63081fcced7b25a4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/director.py"}, "region": {"startLine": 1533}}}]}, {"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-e317432f237a5100", "level": "note", "message": {"text": "Very large file: tests/test_director.py (1772 lines)"}, "properties": {"repobilityId": "3e03dc8a8c8907f0", "scanner": "scanner-primary", "fingerprint": "e317432f237a5100", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a4fbcce3a18776cb", "level": "note", "message": {"text": "Very large file: tests/test_memory.py (1838 lines)"}, "properties": {"repobilityId": "2b05f4b5ee777b9c", "scanner": "scanner-primary", "fingerprint": "a4fbcce3a18776cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf563f8d60722ea8", "level": "note", "message": {"text": "Very large file: tests/test_agent_loop.py (3121 lines)"}, "properties": {"repobilityId": "4e9c686bcc9a64f5", "scanner": "scanner-primary", "fingerprint": "bf563f8d60722ea8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3bf979bbe0dd4610", "level": "note", "message": {"text": "Very large file: tests/test_knowledge_web.py (1349 lines)"}, "properties": {"repobilityId": "1b14b614ca23c132", "scanner": "scanner-primary", "fingerprint": "3bf979bbe0dd4610", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e3ebe0a1682f1308", "level": "note", "message": {"text": "Very large file: tests/test_evolver.py (2692 lines)"}, "properties": {"repobilityId": "7ca86f248526e1df", "scanner": "scanner-primary", "fingerprint": "e3ebe0a1682f1308", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f76ef5b367c3a32", "level": "note", "message": {"text": "Very large file: tests/test_skills.py (2123 lines)"}, "properties": {"repobilityId": "9488ec01802da017", "scanner": "scanner-primary", "fingerprint": "6f76ef5b367c3a32", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fab32a679980ec9d", "level": "note", "message": {"text": "Very large file: tests/test_inspector.py (1537 lines)"}, "properties": {"repobilityId": "149cbadeb9bd8b21", "scanner": "scanner-primary", "fingerprint": "fab32a679980ec9d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b6a5fca340cd3e47", "level": "note", "message": {"text": "Very large file: tests/test_handle.py (2199 lines)"}, "properties": {"repobilityId": "39056af2197cb812", "scanner": "scanner-primary", "fingerprint": "b6a5fca340cd3e47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01e146322a347736", "level": "note", "message": {"text": "Very large file: src/skills.py (2055 lines)"}, "properties": {"repobilityId": "87681d36009d49f9", "scanner": "scanner-primary", "fingerprint": "01e146322a347736", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d7742516bac83fd8", "level": "note", "message": {"text": "Very large file: src/orch_bridges.py (1378 lines)"}, "properties": {"repobilityId": "707d787bb82c1786", "scanner": "scanner-primary", "fingerprint": "d7742516bac83fd8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2f9823f68258c07", "level": "note", "message": {"text": "Very large file: src/introspect.py (1509 lines)"}, "properties": {"repobilityId": "95d07f776158ba25", "scanner": "scanner-primary", "fingerprint": "f2f9823f68258c07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e3de40b23e1e0032", "level": "note", "message": {"text": "Very large file: src/evolver.py (3266 lines)"}, "properties": {"repobilityId": "ced6be9095c8dbc0", "scanner": "scanner-primary", "fingerprint": "e3de40b23e1e0032", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0068f6c6a9fd5054", "level": "note", "message": {"text": "Very large file: src/llm.py (1681 lines)"}, "properties": {"repobilityId": "38686ce31af0ece5", "scanner": "scanner-primary", "fingerprint": "0068f6c6a9fd5054", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0ebb3ca2ff2df360", "level": "note", "message": {"text": "Very large file: src/step_exec.py (1276 lines)"}, "properties": {"repobilityId": "41b8a3f2c50b3b97", "scanner": "scanner-primary", "fingerprint": "0ebb3ca2ff2df360", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f384c6779efc8351", "level": "note", "message": {"text": "Very large file: src/observe.py (1685 lines)"}, "properties": {"repobilityId": "d4cebe16d0348e9f", "scanner": "scanner-primary", "fingerprint": "f384c6779efc8351", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-511f3d5e4bbeefcb", "level": "note", "message": {"text": "Very large file: src/knowledge_web.py (1633 lines)"}, "properties": {"repobilityId": "4e8497f33a2927d8", "scanner": "scanner-primary", "fingerprint": "511f3d5e4bbeefcb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf9b0f6379e43d14", "level": "note", "message": {"text": "Very large file: src/cli.py (1848 lines)"}, "properties": {"repobilityId": "ded7a44c63921bb3", "scanner": "scanner-primary", "fingerprint": "bf9b0f6379e43d14", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a23e337d72a4905b", "level": "note", "message": {"text": "Very large file: src/handle.py (2131 lines)"}, "properties": {"repobilityId": "55feafae97c6b1c6", "scanner": "scanner-primary", "fingerprint": "a23e337d72a4905b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a340903890afd945", "level": "note", "message": {"text": "Very large file: src/persona.py (1376 lines)"}, "properties": {"repobilityId": "520733ca9fb39833", "scanner": "scanner-primary", "fingerprint": "a340903890afd945", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-abb04fcfb6f38b31", "level": "note", "message": {"text": "Very large file: src/agent_loop.py (5191 lines)"}, "properties": {"repobilityId": "c44f52f8fb9b5ce6", "scanner": "scanner-primary", "fingerprint": "abb04fcfb6f38b31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-08e3c79685fe17cc", "level": "note", "message": {"text": "Very large file: src/director.py (2151 lines)"}, "properties": {"repobilityId": "b9c6b895f17af698", "scanner": "scanner-primary", "fingerprint": "08e3c79685fe17cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-379f6e2a9d1cf771", "level": "note", "message": {"text": "Very large file: src/inspector.py (2066 lines)"}, "properties": {"repobilityId": "df2970d06b67e17b", "scanner": "scanner-primary", "fingerprint": "379f6e2a9d1cf771", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7272bb45a61cd94c", "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": "8b96b1f8c27fa5b4", "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": "f8b834347b6ceee5", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "bebe1dacd039ffde", "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": "7b32cd385e455de4", "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": "13f1cb2ffb6a40e7", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-af7ded88504fdf38", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_hooks.py:540"}, "properties": {"repobilityId": "ae3df82a895c1ce3", "scanner": "scanner-primary", "fingerprint": "af7ded88504fdf38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8673e5797d285f44", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/conftest.py:104"}, "properties": {"repobilityId": "da31ed784515890b", "scanner": "scanner-primary", "fingerprint": "8673e5797d285f44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce24295b701187ed", "level": "note", "message": {"text": "Legacy-named symbol `handler_v1` in tests/test_step_events.py:98"}, "properties": {"repobilityId": "a67ed5767c02dd04", "scanner": "scanner-primary", "fingerprint": "ce24295b701187ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0ea022a4271efcc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_agent_loop.py:547"}, "properties": {"repobilityId": "65d7f79224f6d55d", "scanner": "scanner-primary", "fingerprint": "0ea022a4271efcc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2cc7b601f936573", "level": "note", "message": {"text": "Legacy-named symbol `test_gc_narrative_logs_removes_old` in tests/test_gc_memory.py:193"}, "properties": {"repobilityId": "2b8b855fe94852fc", "scanner": "scanner-primary", "fingerprint": "b2cc7b601f936573", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-70c2bf8b83256a0a", "level": "note", "message": {"text": "Legacy-named symbol `test_apply_skill_creates_backup` in tests/integration/test_evolver_apply.py:500"}, "properties": {"repobilityId": "17a1018a4ae037c5", "scanner": "scanner-primary", "fingerprint": "70c2bf8b83256a0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85eebc932828ae1b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/scope_ab_runner.py:80"}, "properties": {"repobilityId": "3c4974372e6dd709", "scanner": "scanner-primary", "fingerprint": "85eebc932828ae1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-54fa00423664f3cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/heartbeat.py:491"}, "properties": {"repobilityId": "c27085943a96076b", "scanner": "scanner-primary", "fingerprint": "54fa00423664f3cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-847ea15eb107d72f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/claim_verifier.py:172"}, "properties": {"repobilityId": "aab745d9ac88670b", "scanner": "scanner-primary", "fingerprint": "847ea15eb107d72f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76df14a0ac261ef7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/quality_gate.py:349"}, "properties": {"repobilityId": "a464fa7ca365bc5a", "scanner": "scanner-primary", "fingerprint": "76df14a0ac261ef7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c0fa2dae28e34e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/navigator_shadow.py:295"}, "properties": {"repobilityId": "7311886cd7e431bd", "scanner": "scanner-primary", "fingerprint": "0c0fa2dae28e34e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-937950d4de23de44", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/knowledge_lens.py:212"}, "properties": {"repobilityId": "f3c6902a1dfc333a", "scanner": "scanner-primary", "fingerprint": "937950d4de23de44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-848438afc12f470e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/orch_bridges.py:630"}, "properties": {"repobilityId": "67bbba8ddeac8676", "scanner": "scanner-primary", "fingerprint": "848438afc12f470e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85569b526a56e448", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/constraint.py:506"}, "properties": {"repobilityId": "ad271aaa5e261f4f", "scanner": "scanner-primary", "fingerprint": "85569b526a56e448", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4f6aa2316480e49", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/recall.py:320"}, "properties": {"repobilityId": "5f85920552e51f89", "scanner": "scanner-primary", "fingerprint": "c4f6aa2316480e49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb442cbe6a4eff12", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/evolver.py:451"}, "properties": {"repobilityId": "1fd7614804d62024", "scanner": "scanner-primary", "fingerprint": "cb442cbe6a4eff12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-985c5fb1e6af2a0c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/background.py:151"}, "properties": {"repobilityId": "38ca8afdbda77fdd", "scanner": "scanner-primary", "fingerprint": "985c5fb1e6af2a0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0c63d1f1dd137fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/llm.py:494"}, "properties": {"repobilityId": "709526202e652428", "scanner": "scanner-primary", "fingerprint": "b0c63d1f1dd137fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76d6f5b143b0734a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/step_exec.py:182"}, "properties": {"repobilityId": "9186b03bdfdadaaf", "scanner": "scanner-primary", "fingerprint": "76d6f5b143b0734a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bd4733f8f677dfb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/knowledge_web.py:233"}, "properties": {"repobilityId": "6e607b2247295305", "scanner": "scanner-primary", "fingerprint": "0bd4733f8f677dfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eabd0307578dfd2d", "level": "note", "message": {"text": "Legacy-named symbol `entry_copy` in src/captains_log.py:674"}, "properties": {"repobilityId": "d77aa890afb63f41", "scanner": "scanner-primary", "fingerprint": "eabd0307578dfd2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8f627e8bf090a427", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/captains_log.py:108"}, "properties": {"repobilityId": "31937013cfc7a75a", "scanner": "scanner-primary", "fingerprint": "8f627e8bf090a427", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cf973e276af662c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/handle.py:412"}, "properties": {"repobilityId": "9bf2844f31e5bae7", "scanner": "scanner-primary", "fingerprint": "9cf973e276af662c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28df0f19afbe89a7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/poe.py:337"}, "properties": {"repobilityId": "91296e6142b33757", "scanner": "scanner-primary", "fingerprint": "28df0f19afbe89a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d871b6053ec99896", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/agent_loop.py:353"}, "properties": {"repobilityId": "d9212de31e9b56c0", "scanner": "scanner-primary", "fingerprint": "d871b6053ec99896", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05885ebb538a33e0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/director.py:1399"}, "properties": {"repobilityId": "e1a7c16ce6f6eb63", "scanner": "scanner-primary", "fingerprint": "05885ebb538a33e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18e7f2b19588d0a0", "level": "note", "message": {"text": "Legacy-named symbol `to_legacy` in src/inspector.py:259"}, "properties": {"repobilityId": "c46c1288ef9781f1", "scanner": "scanner-primary", "fingerprint": "18e7f2b19588d0a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f2d4e4d41ef3b1ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/inspector.py:172"}, "properties": {"repobilityId": "c8f79bfc049ba584", "scanner": "scanner-primary", "fingerprint": "f2d4e4d41ef3b1ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cac7ce15e72817b", "level": "note", "message": {"text": "31 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "1a52e2d4d46a6e40", "scanner": "scanner-primary", "fingerprint": "9cac7ce15e72817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "eaa49ef7064e41a8", "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": "82d87c937cb64fae", "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": "1b99fdc17c26fcfd", "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": "5fc7606483b53059", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "0d09756d693e6913", "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": "8c523a6f500fb187", "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": "15cb5e10fb291775", "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": "69ac9f4618f71ed4", "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": "2c1dd5d5c587ef36", "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": "5864b01d72e8ea08", "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": "7dbd874a28ebebb3", "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": "a58c14bd54fc0669", "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": "5d29dcdd3bdce80c", "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": "93ee80212d46ed21", "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": "21fccfeda6ec2284", "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": "6df44b36e072235b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "e5a6f38a174aa76e", "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": "c3edc1d7adcb9da2", "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": "cd26438d0eeb41e3", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "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": "d8e4680278332fdf", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}