{"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-247408af232b372b", "name": "Possibly dead Python function: reduce", "shortDescription": {"text": "Possibly dead Python function: reduce"}, "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-bd933b769ba2f5bb", "name": "Possibly dead Python function: notify", "shortDescription": {"text": "Possibly dead Python function: notify"}, "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-8e4d0bf04021c50f", "name": "Possibly dead Python function: parse_peer_arg", "shortDescription": {"text": "Possibly dead Python function: parse_peer_arg"}, "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-135838cc635b5c4a", "name": "Possibly dead Python function: update_local_image", "shortDescription": {"text": "Possibly dead Python function: update_local_image"}, "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-53e4e336a0b10859", "name": "Possibly dead Python function: update_local_file", "shortDescription": {"text": "Possibly dead Python function: update_local_file"}, "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-91f2dc2be728497f", "name": "Possibly dead Python function: default_executable_path", "shortDescription": {"text": "Possibly dead Python function: default_executable_path"}, "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-443d63ba4598d766", "name": "Possibly dead Python function: generate_token", "shortDescription": {"text": "Possibly dead Python function: generate_token"}, "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-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-4aea18cecc5c0310", "name": "Very large file: anyclip.py (2110 lines)", "shortDescription": {"text": "Very large file: anyclip.py (2110 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 7 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-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b6d47822cd6ad1fa", "name": "Commented-code block (6 lines) in anyclip.py:62", "shortDescription": {"text": "Commented-code block (6 lines) in anyclip.py:62"}, "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-95e0c927545b34cf", "name": "Network/subprocess call without timeout or try/except \u2014 anyclip.py:554", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 anyclip.py:554"}, "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-6c50fc784d1285e8", "name": "Stub function `disable` (body is just `pass`/`return`) \u2014 autostart.py:195", "shortDescription": {"text": "Stub function `disable` (body is just `pass`/`return`) \u2014 autostart.py:195"}, "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-722c5e4ae74db497", "name": "Commented-code block (6 lines) in setup.py:19", "shortDescription": {"text": "Commented-code block (6 lines) in setup.py:19"}, "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-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:\nanyclip.py:setup_logging, anyclip.py:set\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nautostart.py:is_enabled, autostart.py:is_enabled, autostart.py:is_enabled, autostart.py:is_enabled\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/26213"}, "properties": {"repository": "gum798/AnyClip", "repoUrl": "https://github.com/gum798/AnyClip", "branch": "main"}, "results": [{"ruleId": "scanner-247408af232b372b", "level": "note", "message": {"text": "Possibly dead Python function: reduce"}, "properties": {"repobilityId": "fb75dc43961d9361", "scanner": "scanner-primary", "fingerprint": "247408af232b372b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "peer_state.py:86"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd933b769ba2f5bb", "level": "note", "message": {"text": "Possibly dead Python function: notify"}, "properties": {"repobilityId": "4a83d6c15200fc6b", "scanner": "scanner-primary", "fingerprint": "bd933b769ba2f5bb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "anyclip.py:533"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e4d0bf04021c50f", "level": "note", "message": {"text": "Possibly dead Python function: parse_peer_arg"}, "properties": {"repobilityId": "40151a3808562a35", "scanner": "scanner-primary", "fingerprint": "8e4d0bf04021c50f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "anyclip.py:597"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-135838cc635b5c4a", "level": "note", "message": {"text": "Possibly dead Python function: update_local_image"}, "properties": {"repobilityId": "30cbb2b88d3da089", "scanner": "scanner-primary", "fingerprint": "135838cc635b5c4a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "anyclip.py:994"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53e4e336a0b10859", "level": "note", "message": {"text": "Possibly dead Python function: update_local_file"}, "properties": {"repobilityId": "e9c2a1e75754f82e", "scanner": "scanner-primary", "fingerprint": "53e4e336a0b10859", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "anyclip.py:1009"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91f2dc2be728497f", "level": "note", "message": {"text": "Possibly dead Python function: default_executable_path"}, "properties": {"repobilityId": "ded18d6b3718c9fe", "scanner": "scanner-primary", "fingerprint": "91f2dc2be728497f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autostart.py:208"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-443d63ba4598d766", "level": "note", "message": {"text": "Possibly dead Python function: generate_token"}, "properties": {"repobilityId": "54db44cbe62ef449", "scanner": "scanner-primary", "fingerprint": "443d63ba4598d766", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config_store.py:43"}, "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-4aea18cecc5c0310", "level": "note", "message": {"text": "Very large file: anyclip.py (2110 lines)"}, "properties": {"repobilityId": "84cb06d8774d9a42", "scanner": "scanner-primary", "fingerprint": "4aea18cecc5c0310", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"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": "0b52ca7c1e045a47", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "dbd6c45647d8ae52", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "c40355e9a6e8444d", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b6d47822cd6ad1fa", "level": "none", "message": {"text": "Commented-code block (6 lines) in anyclip.py:62"}, "properties": {"repobilityId": "dd7877d923c360c1", "scanner": "scanner-primary", "fingerprint": "b6d47822cd6ad1fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95e0c927545b34cf", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 anyclip.py:554"}, "properties": {"repobilityId": "0c9d8b75ccb079c8", "scanner": "scanner-primary", "fingerprint": "95e0c927545b34cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c50fc784d1285e8", "level": "note", "message": {"text": "Stub function `disable` (body is just `pass`/`return`) \u2014 autostart.py:195"}, "properties": {"repobilityId": "01166764b2461ba5", "scanner": "scanner-primary", "fingerprint": "6c50fc784d1285e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-722c5e4ae74db497", "level": "none", "message": {"text": "Commented-code block (6 lines) in setup.py:19"}, "properties": {"repobilityId": "dcb62413699cb02b", "scanner": "scanner-primary", "fingerprint": "722c5e4ae74db497", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d1147fed25b2c4d6", "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": "3e6429b4a6de4d0f", "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": "060265a16a149d9d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "210761b0d2643a4a", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "07ed7e4b1318d2e6", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "e89116ad68de00d0", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}