{"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-a30d19a4f1076a01", "name": "Possibly dead Python function: check_update", "shortDescription": {"text": "Possibly dead Python function: check_update"}, "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-e5e2f176ca1fffeb", "name": "Possibly dead Python function: download_update", "shortDescription": {"text": "Possibly dead Python function: download_update"}, "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-c0e0bba5df8dc185", "name": "Possibly dead Python function: handle", "shortDescription": {"text": "Possibly dead Python function: handle"}, "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-bc6d655132806378", "name": "Insecure pattern 'direct_innerhtml_assignment' in mobile.html:379", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in mobile.html:379"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32dec5b111db6766", "name": "Insecure pattern 'cors_wildcard' in proxy.py:148", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in proxy.py:148"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce943e22333259a8", "name": "Insecure pattern 'direct_innerhtml_assignment' in test.html:192", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in test.html:192"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "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 1 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: 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": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing 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-bea357a6497a2d5d", "name": "Agent authority lacks a verifier contract: CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25536"}, "properties": {"repository": "DRSwanger/rift-cnc-ui", "repoUrl": "https://github.com/DRSwanger/rift-cnc-ui", "branch": "main"}, "results": [{"ruleId": "scanner-a30d19a4f1076a01", "level": "note", "message": {"text": "Possibly dead Python function: check_update"}, "properties": {"repobilityId": "7a5e6f5c525107e8", "scanner": "scanner-primary", "fingerprint": "a30d19a4f1076a01", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy.py:60"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e5e2f176ca1fffeb", "level": "note", "message": {"text": "Possibly dead Python function: download_update"}, "properties": {"repobilityId": "2e955c21464eee28", "scanner": "scanner-primary", "fingerprint": "e5e2f176ca1fffeb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy.py:81"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c0e0bba5df8dc185", "level": "note", "message": {"text": "Possibly dead Python function: handle"}, "properties": {"repobilityId": "fc5b886fd2624c94", "scanner": "scanner-primary", "fingerprint": "c0e0bba5df8dc185", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy.py:101"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc6d655132806378", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in mobile.html:379"}, "properties": {"repobilityId": "39c1e01516c2959e", "scanner": "scanner-primary", "fingerprint": "bc6d655132806378", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mobile.html"}, "region": {"startLine": 379}}}]}, {"ruleId": "scanner-32dec5b111db6766", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in proxy.py:148"}, "properties": {"repobilityId": "342038b088090d32", "scanner": "scanner-primary", "fingerprint": "32dec5b111db6766", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proxy.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-ce943e22333259a8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in test.html:192"}, "properties": {"repobilityId": "1913e732f22665ad", "scanner": "scanner-primary", "fingerprint": "ce943e22333259a8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test.html"}, "region": {"startLine": 192}}}]}, {"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-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "a1bb6706465aa384", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "23d4a9e8fbd443cf", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}]}]}