{"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-bb2016af647e04e0", "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-2cef35cf7da7da1b", "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-9ea92a1a35c396ab", "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-cf4ab524f548c8d2", "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-1c9994774895810b", "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-8ab29b43ccecc2e9", "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-d91932f5e001292d", "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-47d7808c03610f26", "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-d908ed8b1facce8c", "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-75df5969391e8fbb", "name": "Privileged port 50 in use", "shortDescription": {"text": "Privileged port 50 in use"}, "fullDescription": {"text": "Port 50 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-9badeccfb3565c1c", "name": "Privileged port 800 in use", "shortDescription": {"text": "Privileged port 800 in use"}, "fullDescription": {"text": "Port 800 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-fa61aa5329e3e523", "name": "Privileged port 95 in use", "shortDescription": {"text": "Privileged port 95 in use"}, "fullDescription": {"text": "Port 95 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-e0a69108fd9f068e", "name": "Privileged port 400 in use", "shortDescription": {"text": "Privileged port 400 in use"}, "fullDescription": {"text": "Port 400 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-7a378ac3ca0245f2", "name": "Privileged port 900 in use", "shortDescription": {"text": "Privileged port 900 in use"}, "fullDescription": {"text": "Port 900 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-08176d58496e5ee7", "name": "Privileged port 350 in use", "shortDescription": {"text": "Privileged port 350 in use"}, "fullDescription": {"text": "Port 350 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-e80c4e20d15a5864", "name": "Privileged port 700 in use", "shortDescription": {"text": "Privileged port 700 in use"}, "fullDescription": {"text": "Port 700 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-22e491d8a417590d", "name": "Privileged port 650 in use", "shortDescription": {"text": "Privileged port 650 in use"}, "fullDescription": {"text": "Port 650 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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 5 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 12 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-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-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-f06a87eb53eb1ed3", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_policy_summarizer/1.0.0/se", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_policy_summarizer/1.0.0/service.py:45"}, "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-72a8db6f2fe0f9ca", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_entity_normalizer/1.0.0/se", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_entity_normalizer/1.0.0/service.py:51"}, "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-ca6c4a1bef842c74", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_risk_review_advisor/1.0.0/", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_risk_review_advisor/1.0.0/service.py:50"}, "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-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:\nexamples/python_http_service_llm_policy_summarizer/1.0.0/service.py:main, examples/python_http_service_llm_entity_normalizer/1.0.0/service.py:main, examples/python_http_service_llm_risk_review_advisor/1.0.0/service.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-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:\nexamples/python_http_service_llm_entity_normalizer/1.0.0/service.py:log_message, examples/python_http_service_llm_risk_review_advisor/1.0.0/service.py:log_message\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25025"}, "properties": {"repository": "cmax123456/Algorithm-Repo", "repoUrl": "https://github.com/cmax123456/Algorithm-Repo", "branch": "main"}, "results": [{"ruleId": "scanner-bb2016af647e04e0", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "bb2016af647e04e0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_policy_summarizer/1.0.0/service.py:45"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2cef35cf7da7da1b", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "2cef35cf7da7da1b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_policy_summarizer/1.0.0/service.py:48"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ea92a1a35c396ab", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "9ea92a1a35c396ab", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_policy_summarizer/1.0.0/service.py:73"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf4ab524f548c8d2", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "cf4ab524f548c8d2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_entity_normalizer/1.0.0/service.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c9994774895810b", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "1c9994774895810b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_entity_normalizer/1.0.0/service.py:54"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ab29b43ccecc2e9", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "8ab29b43ccecc2e9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_entity_normalizer/1.0.0/service.py:73"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d91932f5e001292d", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "d91932f5e001292d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_risk_review_advisor/1.0.0/service.py:50"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47d7808c03610f26", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "47d7808c03610f26", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_risk_review_advisor/1.0.0/service.py:53"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d908ed8b1facce8c", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "d908ed8b1facce8c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_risk_review_advisor/1.0.0/service.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75df5969391e8fbb", "level": "warning", "message": {"text": "Privileged port 50 in use"}, "properties": {"repobilityId": "da61f654c07ea7a9", "scanner": "scanner-primary", "fingerprint": "75df5969391e8fbb", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_explainer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9badeccfb3565c1c", "level": "warning", "message": {"text": "Privileged port 800 in use"}, "properties": {"repobilityId": "44d4dae1c94a9aca", "scanner": "scanner-primary", "fingerprint": "9badeccfb3565c1c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_explainer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa61aa5329e3e523", "level": "warning", "message": {"text": "Privileged port 95 in use"}, "properties": {"repobilityId": "860dd1b02ecc695b", "scanner": "scanner-primary", "fingerprint": "fa61aa5329e3e523", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_explainer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0a69108fd9f068e", "level": "warning", "message": {"text": "Privileged port 400 in use"}, "properties": {"repobilityId": "4ff83ab0950e9b04", "scanner": "scanner-primary", "fingerprint": "e0a69108fd9f068e", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_policy_summarizer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a378ac3ca0245f2", "level": "warning", "message": {"text": "Privileged port 900 in use"}, "properties": {"repobilityId": "454015867df75177", "scanner": "scanner-primary", "fingerprint": "7a378ac3ca0245f2", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_policy_summarizer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08176d58496e5ee7", "level": "warning", "message": {"text": "Privileged port 350 in use"}, "properties": {"repobilityId": "42f3af194555d545", "scanner": "scanner-primary", "fingerprint": "08176d58496e5ee7", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_entity_normalizer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e80c4e20d15a5864", "level": "warning", "message": {"text": "Privileged port 700 in use"}, "properties": {"repobilityId": "3cfa060ad2b8fefc", "scanner": "scanner-primary", "fingerprint": "e80c4e20d15a5864", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_entity_normalizer/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22e491d8a417590d", "level": "warning", "message": {"text": "Privileged port 650 in use"}, "properties": {"repobilityId": "539c2d6c07b83f3a", "scanner": "scanner-primary", "fingerprint": "22e491d8a417590d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "examples/python_http_service_llm_risk_review_advisor/1.0.0/algorithm_card.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-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": "3f9bf655b51d0b24", "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": "6aa8a5adc83a4098", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "0d65250381de4f99", "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": "2b83d2dadce596c1", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "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-f06a87eb53eb1ed3", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_policy_summarizer/1.0.0/service.py:45"}, "properties": {"repobilityId": "c16ac9ce803881ab", "scanner": "scanner-primary", "fingerprint": "f06a87eb53eb1ed3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-72a8db6f2fe0f9ca", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_entity_normalizer/1.0.0/service.py:51"}, "properties": {"repobilityId": "3122ae755e735e6d", "scanner": "scanner-primary", "fingerprint": "72a8db6f2fe0f9ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-ca6c4a1bef842c74", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 examples/python_http_service_llm_risk_review_advisor/1.0.0/service.py:50"}, "properties": {"repobilityId": "526fb4e2e273c9db", "scanner": "scanner-primary", "fingerprint": "ca6c4a1bef842c74", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "b85cd5aca46b14b1", "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": "ccc52b5b7e6383ee", "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": "122ad79ac6e3fcbf", "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": "71eadeceb25dce4f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}