{"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-14b1572e3bdd59f3", "name": "Possibly dead Python function: save_config", "shortDescription": {"text": "Possibly dead Python function: save_config"}, "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-219809f9f3486d7b", "name": "Possibly dead Python function: load_config", "shortDescription": {"text": "Possibly dead Python function: load_config"}, "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-ef313f0f6f3f9cc0", "name": "Possibly dead Python function: print_section", "shortDescription": {"text": "Possibly dead Python function: print_section"}, "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-8f948b880f805598", "name": "Possibly dead Python function: moving_average", "shortDescription": {"text": "Possibly dead Python function: moving_average"}, "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-867ee69245d592f5", "name": "Possibly dead Python function: normalize", "shortDescription": {"text": "Possibly dead Python function: normalize"}, "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-ce4a5a0721c800e2", "name": "Possibly dead Python function: clip_actions", "shortDescription": {"text": "Possibly dead Python function: clip_actions"}, "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-e742c1dea26b0297", "name": "Possibly dead Python function: log_dict", "shortDescription": {"text": "Possibly dead Python function: log_dict"}, "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-ee6d0e9a553addac", "name": "Possibly dead Python function: summary", "shortDescription": {"text": "Possibly dead Python function: summary"}, "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-5879c2872acd42fc", "name": "Possibly dead Python function: set_target_position", "shortDescription": {"text": "Possibly dead Python function: set_target_position"}, "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-880d313b10d58a0c", "name": "Possibly dead Python function: physics_loop", "shortDescription": {"text": "Possibly dead Python function: physics_loop"}, "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-f809823079430503", "name": "Possibly dead Python function: key_callback", "shortDescription": {"text": "Possibly dead Python function: key_callback"}, "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-a9530bbb7a3a00ae", "name": "Insecure pattern 'eval_used' in README.md:50", "shortDescription": {"text": "Insecure pattern 'eval_used' in README.md:50"}, "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-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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "4 tests / 17 src (ratio 0.24)."}, "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 162 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-75fedc0aee441ed6", "name": "Commented-code block (9 lines) in env_wrapper_button.py:130", "shortDescription": {"text": "Commented-code block (9 lines) in env_wrapper_button.py:130"}, "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-9198685ac3dd2a27", "name": "Commented-code block (5 lines) in train.py:676", "shortDescription": {"text": "Commented-code block (5 lines) in train.py:676"}, "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-1908404416a2774a", "name": "Commented-code block (10 lines) in env_wrapper.py:209", "shortDescription": {"text": "Commented-code block (10 lines) in env_wrapper.py:209"}, "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-09b5bca97cec7bcb", "name": "Commented-code block (5 lines) in test_magnetic_grasp.py:71", "shortDescription": {"text": "Commented-code block (5 lines) in test_magnetic_grasp.py:71"}, "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-4afafd5bb8f1fb53", "name": "Stub function `render` (body is just `pass`/`return`) \u2014 play_amo.py:221", "shortDescription": {"text": "Stub function `render` (body is just `pass`/`return`) \u2014 play_amo.py:221"}, "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-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:\nutils.py:save_config, utils.py:save\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:\nverifier.py:fn, verifier.py:fn, verifier.py:fn, verifier.py:fn\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/26750"}, "properties": {"repository": "jatinsikka/sequent-g1", "repoUrl": "https://github.com/jatinsikka/sequent-g1", "branch": "main"}, "results": [{"ruleId": "scanner-14b1572e3bdd59f3", "level": "note", "message": {"text": "Possibly dead Python function: save_config"}, "properties": {"repobilityId": "05435b1f9488340d", "scanner": "scanner-primary", "fingerprint": "14b1572e3bdd59f3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:32"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-219809f9f3486d7b", "level": "note", "message": {"text": "Possibly dead Python function: load_config"}, "properties": {"repobilityId": "8ae25e0afbffc55e", "scanner": "scanner-primary", "fingerprint": "219809f9f3486d7b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:48"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef313f0f6f3f9cc0", "level": "note", "message": {"text": "Possibly dead Python function: print_section"}, "properties": {"repobilityId": "68b3cba22b43a1bf", "scanner": "scanner-primary", "fingerprint": "ef313f0f6f3f9cc0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:122"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f948b880f805598", "level": "note", "message": {"text": "Possibly dead Python function: moving_average"}, "properties": {"repobilityId": "4259855b5f893415", "scanner": "scanner-primary", "fingerprint": "8f948b880f805598", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:137"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-867ee69245d592f5", "level": "note", "message": {"text": "Possibly dead Python function: normalize"}, "properties": {"repobilityId": "76be66ba501ef47c", "scanner": "scanner-primary", "fingerprint": "867ee69245d592f5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:154"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce4a5a0721c800e2", "level": "note", "message": {"text": "Possibly dead Python function: clip_actions"}, "properties": {"repobilityId": "1676bb8edd7ce7eb", "scanner": "scanner-primary", "fingerprint": "ce4a5a0721c800e2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:170"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e742c1dea26b0297", "level": "note", "message": {"text": "Possibly dead Python function: log_dict"}, "properties": {"repobilityId": "6ef52f5c122f73f3", "scanner": "scanner-primary", "fingerprint": "e742c1dea26b0297", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:218"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee6d0e9a553addac", "level": "note", "message": {"text": "Possibly dead Python function: summary"}, "properties": {"repobilityId": "7cafbb1f159edabc", "scanner": "scanner-primary", "fingerprint": "ee6d0e9a553addac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "utils.py:252"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5879c2872acd42fc", "level": "note", "message": {"text": "Possibly dead Python function: set_target_position"}, "properties": {"repobilityId": "01298d9dae09715b", "scanner": "scanner-primary", "fingerprint": "5879c2872acd42fc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reward_fn.py:211"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-880d313b10d58a0c", "level": "note", "message": {"text": "Possibly dead Python function: physics_loop"}, "properties": {"repobilityId": "2877087e235d365a", "scanner": "scanner-primary", "fingerprint": "880d313b10d58a0c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_viewer.py:35"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f809823079430503", "level": "note", "message": {"text": "Possibly dead Python function: key_callback"}, "properties": {"repobilityId": "63fa93fdea53d0a6", "scanner": "scanner-primary", "fingerprint": "f809823079430503", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "play_amo.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a9530bbb7a3a00ae", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in README.md:50"}, "properties": {"repobilityId": "e44bf8409cbb7354", "scanner": "scanner-primary", "fingerprint": "a9530bbb7a3a00ae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "README.md"}, "region": {"startLine": 50}}}]}, {"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-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ee9261b14d40c9c7", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-75fedc0aee441ed6", "level": "none", "message": {"text": "Commented-code block (9 lines) in env_wrapper_button.py:130"}, "properties": {"repobilityId": "18445a9b0ff86bf9", "scanner": "scanner-primary", "fingerprint": "75fedc0aee441ed6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9198685ac3dd2a27", "level": "none", "message": {"text": "Commented-code block (5 lines) in train.py:676"}, "properties": {"repobilityId": "6030a99fd445d09f", "scanner": "scanner-primary", "fingerprint": "9198685ac3dd2a27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1908404416a2774a", "level": "none", "message": {"text": "Commented-code block (10 lines) in env_wrapper.py:209"}, "properties": {"repobilityId": "905c893a0f592d32", "scanner": "scanner-primary", "fingerprint": "1908404416a2774a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09b5bca97cec7bcb", "level": "none", "message": {"text": "Commented-code block (5 lines) in test_magnetic_grasp.py:71"}, "properties": {"repobilityId": "b07963e7876e0fe6", "scanner": "scanner-primary", "fingerprint": "09b5bca97cec7bcb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4afafd5bb8f1fb53", "level": "note", "message": {"text": "Stub function `render` (body is just `pass`/`return`) \u2014 play_amo.py:221"}, "properties": {"repobilityId": "45172a5909307c48", "scanner": "scanner-primary", "fingerprint": "4afafd5bb8f1fb53", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "3026258e119d7c75", "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": "ece309de470679ec", "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": "34f006c60be3deb3", "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": "47fee8a9e763f9ef", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "414f9418ec10c6ff", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}