{"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-0d1756c08b2b0b34", "name": "Possibly dead Python function: tracking_apply", "shortDescription": {"text": "Possibly dead Python function: tracking_apply"}, "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-1ad8ed6128cf5840", "name": "Possibly dead Python function: feed_from_thread", "shortDescription": {"text": "Possibly dead Python function: feed_from_thread"}, "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-0389f2f3b1c788a7", "name": "Possibly dead Python function: capture_and_close", "shortDescription": {"text": "Possibly dead Python function: capture_and_close"}, "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-8c41a7f796e033aa", "name": "Possibly dead Python function: handle_connect", "shortDescription": {"text": "Possibly dead Python function: handle_connect"}, "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-eb1e96a21c0b6bd6", "name": "Possibly dead Python function: handle_subscribe", "shortDescription": {"text": "Possibly dead Python function: handle_subscribe"}, "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-da87fb9af895745e", "name": "Possibly dead Python function: handle_message", "shortDescription": {"text": "Possibly dead Python function: handle_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-7ea4ae463ce9d8e2", "name": "Possibly dead Python function: feed", "shortDescription": {"text": "Possibly dead Python function: feed"}, "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-1f4d391c479ea2e3", "name": "Possibly dead Python function: capture_and_close", "shortDescription": {"text": "Possibly dead Python function: capture_and_close"}, "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-1c9761499d4f20f2", "name": "Possibly dead Python function: publish_team_messages", "shortDescription": {"text": "Possibly dead Python function: publish_team_messages"}, "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-d9fe9ce6f6fbbf58", "name": "Possibly dead Python function: handle_connect", "shortDescription": {"text": "Possibly dead Python function: handle_connect"}, "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-549d64995f3f766c", "name": "Possibly dead Python function: handle_subscribe", "shortDescription": {"text": "Possibly dead Python function: handle_subscribe"}, "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-8aeb5869b8bab00a", "name": "Possibly dead Python function: handle_message", "shortDescription": {"text": "Possibly dead Python function: handle_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-7c54c94bcc16ffac", "name": "Possibly dead Python function: handle_disconnect", "shortDescription": {"text": "Possibly dead Python function: handle_disconnect"}, "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-a76c18733a1c3718", "name": "Possibly dead Python function: run_subscriber", "shortDescription": {"text": "Possibly dead Python function: run_subscriber"}, "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-7a898f26d3ffce8b", "name": "Possibly dead Python function: send_command", "shortDescription": {"text": "Possibly dead Python function: send_command"}, "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-ae3cf3e810bedec6", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "coverallsapp/github-action@master can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "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 75 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-4976505ebea3918b", "name": "Commented-code block (5 lines) in user-interface-module/src/venus_basestation/tk_dashboard.py:434", "shortDescription": {"text": "Commented-code block (5 lines) in user-interface-module/src/venus_basestation/tk_dashboard.py:434"}, "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-4baf394167443ede", "name": "Commented-code block (7 lines) in user-interface-module/src/venus_basestation/mqtt_client.py:18", "shortDescription": {"text": "Commented-code block (7 lines) in user-interface-module/src/venus_basestation/mqtt_client.py:18"}, "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-8e047ab7af03962f", "name": "7 env vars used in code but missing from .env.example", "shortDescription": {"text": "7 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `VENUS_MQTT_COMMAND_TOPIC`, `VENUS_MQTT_PORT`, `VENUS_MQTT_PROFILE`, `VENUS_MQTT_TOPIC`, `VENUS_MQTT_TOPICS`, `VENUS_UART_BAUD`, `VENUS_UART_DEVICE`. 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:\nuser-interface-module/tools/tk_live_check.py:capture_and_close, user-interface-module/tools/tk_live_check.py:capture_and_close\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:\nteam-project/module-branches/communication-module/libpynq-5EID0-2023-v0.3.0/applications/mqtt-test/subscriber_course.py:on_message, team-project/module-branches/communication-module/libpynq-5EID0-2023-v0.3.0/applications/mqtt-test/subscriber.py:on_message, team-project/module-branches/mapping-new/libpynq-5EID0-2023-v0.3.0/applications/mqtt-test/subscriber_course.py:on_message, team-project/module-branches/mapping-new/libpynq-5EID0-2023-v0.3.0/applications/mqtt-test/subscriber.py:on_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/24272"}, "properties": {"repository": "appleweiping/venus-basestation", "repoUrl": "https://github.com/appleweiping/venus-basestation", "branch": "main"}, "results": [{"ruleId": "scanner-0d1756c08b2b0b34", "level": "note", "message": {"text": "Possibly dead Python function: tracking_apply"}, "properties": {"repobilityId": "bb504c6d855156e6", "scanner": "scanner-primary", "fingerprint": "0d1756c08b2b0b34", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/telemetry_roundtrip_check.py:60"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ad8ed6128cf5840", "level": "note", "message": {"text": "Possibly dead Python function: feed_from_thread"}, "properties": {"repobilityId": "fd0a1520a79732a9", "scanner": "scanner-primary", "fingerprint": "1ad8ed6128cf5840", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/tk_smoke.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0389f2f3b1c788a7", "level": "note", "message": {"text": "Possibly dead Python function: capture_and_close"}, "properties": {"repobilityId": "912f3540c4d4ece0", "scanner": "scanner-primary", "fingerprint": "0389f2f3b1c788a7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/tk_smoke.py:70"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c41a7f796e033aa", "level": "note", "message": {"text": "Possibly dead Python function: handle_connect"}, "properties": {"repobilityId": "71eb057e4b0acd55", "scanner": "scanner-primary", "fingerprint": "8c41a7f796e033aa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/command_roundtrip_check.py:33"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb1e96a21c0b6bd6", "level": "note", "message": {"text": "Possibly dead Python function: handle_subscribe"}, "properties": {"repobilityId": "1c025b8d7f49602c", "scanner": "scanner-primary", "fingerprint": "eb1e96a21c0b6bd6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/command_roundtrip_check.py:36"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da87fb9af895745e", "level": "note", "message": {"text": "Possibly dead Python function: handle_message"}, "properties": {"repobilityId": "7f964a0988a310b8", "scanner": "scanner-primary", "fingerprint": "da87fb9af895745e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/command_roundtrip_check.py:40"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ea4ae463ce9d8e2", "level": "note", "message": {"text": "Possibly dead Python function: feed"}, "properties": {"repobilityId": "edc513f0974cc952", "scanner": "scanner-primary", "fingerprint": "7ea4ae463ce9d8e2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/tk_live_check.py:49"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f4d391c479ea2e3", "level": "note", "message": {"text": "Possibly dead Python function: capture_and_close"}, "properties": {"repobilityId": "912f3540c4d4ece0", "scanner": "scanner-primary", "fingerprint": "1f4d391c479ea2e3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/tk_live_check.py:153"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c9761499d4f20f2", "level": "note", "message": {"text": "Possibly dead Python function: publish_team_messages"}, "properties": {"repobilityId": "29a3c044e2b9806a", "scanner": "scanner-primary", "fingerprint": "1c9761499d4f20f2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/tools/tk_live_check.py:129"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d9fe9ce6f6fbbf58", "level": "note", "message": {"text": "Possibly dead Python function: handle_connect"}, "properties": {"repobilityId": "71eb057e4b0acd55", "scanner": "scanner-primary", "fingerprint": "d9fe9ce6f6fbbf58", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/src/venus_basestation/mqtt_client.py:342"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-549d64995f3f766c", "level": "note", "message": {"text": "Possibly dead Python function: handle_subscribe"}, "properties": {"repobilityId": "1c025b8d7f49602c", "scanner": "scanner-primary", "fingerprint": "549d64995f3f766c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/src/venus_basestation/mqtt_client.py:261"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8aeb5869b8bab00a", "level": "note", "message": {"text": "Possibly dead Python function: handle_message"}, "properties": {"repobilityId": "7f964a0988a310b8", "scanner": "scanner-primary", "fingerprint": "8aeb5869b8bab00a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/src/venus_basestation/mqtt_client.py:278"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c54c94bcc16ffac", "level": "note", "message": {"text": "Possibly dead Python function: handle_disconnect"}, "properties": {"repobilityId": "2285eb392cb06ea2", "scanner": "scanner-primary", "fingerprint": "7c54c94bcc16ffac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/src/venus_basestation/mqtt_client.py:296"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a76c18733a1c3718", "level": "note", "message": {"text": "Possibly dead Python function: run_subscriber"}, "properties": {"repobilityId": "7de30b61683dd83b", "scanner": "scanner-primary", "fingerprint": "a76c18733a1c3718", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/src/venus_basestation/__main__.py:250"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a898f26d3ffce8b", "level": "note", "message": {"text": "Possibly dead Python function: send_command"}, "properties": {"repobilityId": "46250a572c7030e2", "scanner": "scanner-primary", "fingerprint": "7a898f26d3ffce8b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "user-interface-module/src/venus_basestation/__main__.py:264"}, "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-ae3cf3e810bedec6", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "d10510a45b2e04c3", "scanner": "scanner-primary", "fingerprint": "ae3cf3e810bedec6", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "team-project/libpynq-5EID0-2023-v0.3.0/external/scpi-parser/.github/workflows/main.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "41a3aef4a5821aa4", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-4976505ebea3918b", "level": "none", "message": {"text": "Commented-code block (5 lines) in user-interface-module/src/venus_basestation/tk_dashboard.py:434"}, "properties": {"repobilityId": "46790221b582bdd1", "scanner": "scanner-primary", "fingerprint": "4976505ebea3918b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4baf394167443ede", "level": "none", "message": {"text": "Commented-code block (7 lines) in user-interface-module/src/venus_basestation/mqtt_client.py:18"}, "properties": {"repobilityId": "9394c45c2b70ed21", "scanner": "scanner-primary", "fingerprint": "4baf394167443ede", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e047ab7af03962f", "level": "note", "message": {"text": "7 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5a0455f6498c27ad", "scanner": "scanner-primary", "fingerprint": "8e047ab7af03962f", "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": "5a6a73868762d665", "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": "4aa320d0f60c2e96", "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": "0b5de44a0458c3ff", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}