{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:01.720509Z","repo":{"ref":{"host":"github.com","owner":"S3cur3Th1sSh1t","name":"multiplayer_snake"},"default_branch":"main","clone_url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake.git","html_url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake","description":"A mix of Snake and \"Achtung die Kurve\" with multiplayer mode","stars":2,"forks":1,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":307,"primary_language":"Python","license_spdx":null,"created_at":"2026-01-14T09:41:11Z","pushed_at":"2026-02-22T11:17:53Z","security_policy_url":null,"distribution":{"owner_created_at":"2017-04-21T13:13:51Z","owner_type":"User","release_assets":[{"name":"snake_game.exe","size":17845287,"download_count":1,"release_tag":"v1.0","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/releases/download/v1.0/snake_game.exe"}]}},"commit_sha":"681613f1ad5d572fc0bfe66b8bd8726aaf0cad00","profile":{"lines_by_language":{"Python":5031,"JavaScript":1105},"files_by_category":{"docs":3,"source":3,"other":2,"config":1},"source_lines":6136,"test_lines":0},"pillars":{"ai_provenance":{"score":39.1,"confidence":0.76,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.3907,"suspected_share":0.0,"estimated_share":0.3907,"ai_artifacts":0.0,"flagged_work_units":1.0,"flagged_releases":null,"style_index":1.467},"summary":"Explicit AI attribution on 39% of first-party code added; an estimated 39% including velocity signals."},"quality":{"score":20.9,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":26.2,"duplication":29.4,"lint":21.3,"testing":0.0,"docs":40.0,"type_safety":40.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 45% of function code in complex or long functions; 20% duplicated lines. Weakest area: testing."},"security":{"score":65.9,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":96.7,"sast":48.2,"dependencies":77.9,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 46 known vulnerabilities in 1 dependencies; 8 high-severity SAST findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":2.0,"checked":2.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":24.0,"attributed_commits":18.0,"attributed_commit_share":0.75,"effective_loc":6634.0,"attributed_loc":2592.0,"attributed_loc_share":0.39071450105517036,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 18 attributed commits, 2,592 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"fde76a50cb0c6c861578754abdfd87b80c7ba96c","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/fde76a50cb0c6c861578754abdfd87b80c7ba96c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"ef6895e8fcf4b814ae288ac03c292e959cc985b4","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/ef6895e8fcf4b814ae288ac03c292e959cc985b4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"d6086c57843316cc8e11c4a2f11d4f6983f0b81c","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/d6086c57843316cc8e11c4a2f11d4f6983f0b81c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"881c640bd23ba7050f8adcff0a2b9608970b3862","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/881c640bd23ba7050f8adcff0a2b9608970b3862","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"952c0a44f446c61d366cc212c955a09b51ce4fd3","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/952c0a44f446c61d366cc212c955a09b51ce4fd3","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"8b3bda0334ac8327d81e58f56a9ec058aefbdd2d","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/8b3bda0334ac8327d81e58f56a9ec058aefbdd2d","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"63e3ded76f00687d8369735f41a0555de81b91b4","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/63e3ded76f00687d8369735f41a0555de81b91b4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"57392cdb6052df3bc7a30daee674dc6e5ec01619","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/57392cdb6052df3bc7a30daee674dc6e5ec01619","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"98d5d88e22c7d4c21c0949bd4bf0c8a125abee0e","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/98d5d88e22c7d4c21c0949bd4bf0c8a125abee0e","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"9aa5c8f934f1347ab4fc838ac9602e25654e073e","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/9aa5c8f934f1347ab4fc838ac9602e25654e073e","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"3049f306cd67fbf54652a5d65eb0d69530f1e826","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/3049f306cd67fbf54652a5d65eb0d69530f1e826","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"782d27bd53e4b907f417735fafc55428e1afe0af","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/782d27bd53e4b907f417735fafc55428e1afe0af","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"61cf4fa1c4a126e1e809aa8f8a4a42a3eb3644d1","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/61cf4fa1c4a126e1e809aa8f8a4a42a3eb3644d1","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"b863b70777d62083703b3f3b503a4a2f3900423c","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/b863b70777d62083703b3f3b503a4a2f3900423c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"5116237be0108dbee2f4f398859f782a574a8635","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/5116237be0108dbee2f4f398859f782a574a8635","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"43143af72a9019c92b559a97a6fd819e194efd72","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/43143af72a9019c92b559a97a6fd819e194efd72","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"76806eed18d38abefc4230c5d0a358d8cc31b954","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/76806eed18d38abefc4230c5d0a358d8cc31b954","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"bb94469796e2932a157571df84b45fe50b986f1f","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/bb94469796e2932a157571df84b45fe50b986f1f","weight":0.9}],"data":{"attributed_loc_by_commit":{"bb94469796e2932a157571df84b45fe50b986f1f":452,"76806eed18d38abefc4230c5d0a358d8cc31b954":1338,"43143af72a9019c92b559a97a6fd819e194efd72":88,"5116237be0108dbee2f4f398859f782a574a8635":16,"b863b70777d62083703b3f3b503a4a2f3900423c":2,"61cf4fa1c4a126e1e809aa8f8a4a42a3eb3644d1":1,"782d27bd53e4b907f417735fafc55428e1afe0af":47,"3049f306cd67fbf54652a5d65eb0d69530f1e826":26,"9aa5c8f934f1347ab4fc838ac9602e25654e073e":45,"98d5d88e22c7d4c21c0949bd4bf0c8a125abee0e":27,"57392cdb6052df3bc7a30daee674dc6e5ec01619":16,"63e3ded76f00687d8369735f41a0555de81b91b4":7,"8b3bda0334ac8327d81e58f56a9ec058aefbdd2d":25,"952c0a44f446c61d366cc212c955a09b51ce4fd3":11,"881c640bd23ba7050f8adcff0a2b9608970b3862":164,"d6086c57843316cc8e11c4a2f11d4f6983f0b81c":159,"ef6895e8fcf4b814ae288ac03c292e959cc985b4":14,"fde76a50cb0c6c861578754abdfd87b80c7ba96c":154},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":18,"loc":2592,"first_seen":1771684672,"last_seen":1771758879}},"monthly":{"2026-01":{"loc":4042,"attributed_loc":0},"2026-02":{"loc":2592,"attributed_loc":2592}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":6.0,"flagged_units":1.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":3053.0,"flagged_loc":1563.0,"flagged_loc_share":0.5119554536521455,"max_loc_per_hour":633.6486486486486,"median_loc_per_hour":94.14745252237933,"pr_timed_units":0.0,"excluded_import_loc":3581.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,563 lines of first-party code in ~2.5h (634 lines/hour, 8 commit session)","ref":"9aa5c8f934f1347ab4fc838ac9602e25654e073e","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/commit/9aa5c8f934f1347ab4fc838ac9602e25654e073e","weight":0.1900945945945946}],"data":{"flagged_loc_by_commit":{"76806eed18d38abefc4230c5d0a358d8cc31b954":1338,"43143af72a9019c92b559a97a6fd819e194efd72":88,"5116237be0108dbee2f4f398859f782a574a8635":16,"b863b70777d62083703b3f3b503a4a2f3900423c":2,"61cf4fa1c4a126e1e809aa8f8a4a42a3eb3644d1":1,"782d27bd53e4b907f417735fafc55428e1afe0af":47,"3049f306cd67fbf54652a5d65eb0d69530f1e826":26,"9aa5c8f934f1347ab4fc838ac9602e25654e073e":45},"excluded_import_commits":["e40c5328e34cb69e50ce3a899ae4f6367395f6c6"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":6136.0,"index":1.467,"count:narrated_steps":1.0,"per_kloc:narrated_steps":0.163,"files:narrated_steps":1.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":16.0,"per_kloc:emoji_in_code":2.608,"files:emoji_in_code":2.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # First, receive UDP game state updates (fast path)","ref":"snake_game.py:2155","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L2155","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":1.0,"secrets_low_confidence":0.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree (test/docs/example file)","path":"README.md","line":74,"fingerprint":"README.md:generic-api-key:74"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":24.0,"findings_high":8.0,"findings_medium":15.0,"findings_low":1.0,"weighted_findings":12.8,"scanned_lines":6136.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":279,"fingerprint":"javascript.browser.security.insecure-document-method:web/game.js:279"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `fireBtn.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":279,"fingerprint":"javascript.browser.security.insecure-innerhtml:web/game.js:279"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":295,"fingerprint":"javascript.browser.security.insecure-document-method:web/game.js:295"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `playerList.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":295,"fingerprint":"javascript.browser.security.insecure-innerhtml:web/game.js:295"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":310,"fingerprint":"javascript.browser.security.insecure-document-method:web/game.js:310"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `gameOverRankings.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":310,"fingerprint":"javascript.browser.security.insecure-innerhtml:web/game.js:310"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":368,"fingerprint":"javascript.browser.security.insecure-document-method:web/game.js:368"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `hudWeapons.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/game.js","line":368,"fingerprint":"javascript.browser.security.insecure-innerhtml:web/game.js:368"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o777` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":262,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:262"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o777` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":263,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:263"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o666` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":276,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:276"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-md5","severity":"medium","message":"Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"snake_game.py","line":288,"fingerprint":"python.lang.security.insecure-hash-algorithm-md5:snake_game.py:288"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o666` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":326,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:326"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o666` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":334,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:334"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o666` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":383,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:383"},{"rule_id":"opengrep/python.lang.security.audit.insecure-file-permissions","severity":"medium","message":"These permissions `0o666` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else. [confidence medium]","path":"snake_game.py","line":399,"fingerprint":"python.lang.security.audit.insecure-file-permissions:snake_game.py:399"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":279,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:279"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":297,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:297"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":313,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:313"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":361,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:361"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":362,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:362"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":366,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:366"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"web/game.js","line":368,"fingerprint":"javascript.lang.security.html-in-template-string:web/game.js:368"},{"rule_id":"opengrep/python.lang.security.audit.network.avoid-bind-to-all-interfaces","severity":"low","message":"Running `socket.bind` to 0.0.0.0, or empty string could unexpectedly expose the server publicly as it binds to all available interfaces. Consider instead getting correct address from an environment variable or configuration file. [confidence high]","path":"snake_game.py","line":2064,"fingerprint":"python.lang.security.audit.network.avoid-bind-to-all-interfaces:snake_game.py:2064"}],"evidence":[],"data":{"rulesets":["python","javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":1.0,"vulnerabilities":46.0,"vulns_critical":1.0,"vulns_high":20.0,"vulns_medium":19.0,"vulns_low":6.0,"vulns_unknown":0.0,"penalty":15.0},"findings":[{"rule_id":"osv/GHSA-63hf-3vf5-4wqf","severity":"critical","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2102, GHSA-63hf-3vf5-4wqf","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-63hf-3vf5-4wqf"},{"rule_id":"osv/GHSA-5h86-8mv2-jq9f","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2024-24, GHSA-5h86-8mv2-jq9f","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-5h86-8mv2-jq9f"},{"rule_id":"osv/GHSA-5m98-qgg9-wh84","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1098, GHSA-5m98-qgg9-wh84","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-5m98-qgg9-wh84"},{"rule_id":"osv/GHSA-6mq8-rvhq-8wgg","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1101, GHSA-6mq8-rvhq-8wgg","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-6mq8-rvhq-8wgg"},{"rule_id":"osv/GHSA-hcc4-c3v8-rx92","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2095, GHSA-hcc4-c3v8-rx92","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-hcc4-c3v8-rx92"},{"rule_id":"osv/GHSA-p998-jp59-783m","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2097, GHSA-p998-jp59-783m","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-p998-jp59-783m"},{"rule_id":"osv/GHSA-m5qp-6w8w-w647","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2098, GHSA-m5qp-6w8w-w647","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-m5qp-6w8w-w647"},{"rule_id":"osv/GHSA-jg22-mg44-37j8","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2104, GHSA-jg22-mg44-37j8","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-jg22-mg44-37j8"},{"rule_id":"osv/GHSA-hg6j-4rv6-33pg","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2105, GHSA-hg6j-4rv6-33pg","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-hg6j-4rv6-33pg"},{"rule_id":"osv/GHSA-m6qw-4cw2-hm4m","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2106, GHSA-m6qw-4cw2-hm4m","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-m6qw-4cw2-hm4m"},{"rule_id":"osv/GHSA-4fvr-rgm6-gqmc","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2107, GHSA-4fvr-rgm6-gqmc","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-4fvr-rgm6-gqmc"},{"rule_id":"osv/GHSA-xcgm-r5h9-7989","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2108, GHSA-xcgm-r5h9-7989","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-xcgm-r5h9-7989"},{"rule_id":"osv/GHSA-63hw-fmq6-xxg2","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2110, GHSA-63hw-fmq6-xxg2","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-63hw-fmq6-xxg2"},{"rule_id":"osv/GHSA-g3cq-j2xw-wf74","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2111, GHSA-g3cq-j2xw-wf74","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-g3cq-j2xw-wf74"},{"rule_id":"osv/GHSA-2fqr-mr3j-6wp8","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2112, GHSA-2fqr-mr3j-6wp8","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-2fqr-mr3j-6wp8"},{"rule_id":"osv/GHSA-9x8q-7h8h-wcw9","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2113, GHSA-9x8q-7h8h-wcw9","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-9x8q-7h8h-wcw9"},{"rule_id":"osv/GHSA-4m7w-qmgq-4wj5","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-237, GHSA-4m7w-qmgq-4wj5","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-4m7w-qmgq-4wj5"},{"rule_id":"osv/GHSA-cq5v-8q36-5273","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-3545, GHSA-cq5v-8q36-5273","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-cq5v-8q36-5273"},{"rule_id":"osv/GHSA-2g87-pp6c-29x5","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-2g87-pp6c-29x5","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-2g87-pp6c-29x5"},{"rule_id":"osv/GHSA-5wr8-gcqf-gqf3","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-5wr8-gcqf-gqf3","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-5wr8-gcqf-gqf3"},{"rule_id":"osv/GHSA-9xw5-w5jj-pvcg","severity":"high","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-9xw5-w5jj-pvcg","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-9xw5-w5jj-pvcg"},{"rule_id":"osv/GHSA-8qpw-xqxj-h4r2","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2024-26, GHSA-8qpw-xqxj-h4r2","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-8qpw-xqxj-h4r2"},{"rule_id":"osv/GHSA-6jhg-hg63-jvvf","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1100, GHSA-6jhg-hg63-jvvf","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-6jhg-hg63-jvvf"},{"rule_id":"osv/GHSA-7gpw-8wmc-pm8g","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1102, GHSA-7gpw-8wmc-pm8g","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-7gpw-8wmc-pm8g"},{"rule_id":"osv/GHSA-8495-4g3g-x7pr","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1103, GHSA-8495-4g3g-x7pr","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-8495-4g3g-x7pr"},{"rule_id":"osv/GHSA-g84x-mcqj-x9qq","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1106, GHSA-g84x-mcqj-x9qq","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-g84x-mcqj-x9qq"},{"rule_id":"osv/GHSA-jj3x-wxrx-4x23","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1107, GHSA-jj3x-wxrx-4x23","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-jj3x-wxrx-4x23"},{"rule_id":"osv/GHSA-w2fm-2cpv-w7v5","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2094, GHSA-w2fm-2cpv-w7v5","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-w2fm-2cpv-w7v5"},{"rule_id":"osv/GHSA-2vrm-gr82-f7m5","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2096, GHSA-2vrm-gr82-f7m5","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-2vrm-gr82-f7m5"},{"rule_id":"osv/GHSA-3wq7-rqq7-wx6j","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2099, GHSA-3wq7-rqq7-wx6j","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-3wq7-rqq7-wx6j"},{"rule_id":"osv/GHSA-966j-vmvw-g2g9","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2100, GHSA-966j-vmvw-g2g9","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-966j-vmvw-g2g9"},{"rule_id":"osv/GHSA-mwh4-6h8g-pg8w","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2101, GHSA-mwh4-6h8g-pg8w","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-mwh4-6h8g-pg8w"},{"rule_id":"osv/GHSA-c427-h43c-vf67","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2103, GHSA-c427-h43c-vf67","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-c427-h43c-vf67"},{"rule_id":"osv/GHSA-hpj7-wq8m-9hgp","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-2109, GHSA-hpj7-wq8m-9hgp","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-hpj7-wq8m-9hgp"},{"rule_id":"osv/GHSA-mfx4-hv73-q22v","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-3546, GHSA-mfx4-hv73-q22v","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-mfx4-hv73-q22v"},{"rule_id":"osv/GHSA-mq44-7p77-q5h7","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-3547, GHSA-mq44-7p77-q5h7","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-mq44-7p77-q5h7"},{"rule_id":"osv/GHSA-494j-54xm-rwp3","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-494j-54xm-rwp3","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-494j-54xm-rwp3"},{"rule_id":"osv/GHSA-6cjc-53gc-5rqm","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-6cjc-53gc-5rqm","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-6cjc-53gc-5rqm"},{"rule_id":"osv/GHSA-f9xw-jh8m-3mwq","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-f9xw-jh8m-3mwq","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-f9xw-jh8m-3mwq"},{"rule_id":"osv/GHSA-pqxq-w44r-73xw","severity":"medium","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-pqxq-w44r-73xw","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-pqxq-w44r-73xw"},{"rule_id":"osv/GHSA-54jq-c3m8-4m76","severity":"low","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1097, GHSA-54jq-c3m8-4m76","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-54jq-c3m8-4m76"},{"rule_id":"osv/GHSA-69f9-5gxw-wvc2","severity":"low","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1099, GHSA-69f9-5gxw-wvc2","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-69f9-5gxw-wvc2"},{"rule_id":"osv/GHSA-9548-qrrj-x5pj","severity":"low","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1104, GHSA-9548-qrrj-x5pj","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-9548-qrrj-x5pj"},{"rule_id":"osv/GHSA-fh55-r93g-j68g","severity":"low","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1105, GHSA-fh55-r93g-j68g","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-fh55-r93g-j68g"},{"rule_id":"osv/GHSA-mqqc-3gqh-h2x8","severity":"low","message":"aiohttp@3.9.0 (PyPI) is affected by PYSEC-2026-1109, GHSA-mqqc-3gqh-h2x8","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-mqqc-3gqh-h2x8"},{"rule_id":"osv/GHSA-gx76-c99x-2c96","severity":"low","message":"aiohttp@3.9.0 (PyPI) is affected by GHSA-gx76-c99x-2c96","path":"web/requirements.txt","line":null,"fingerprint":"aiohttp@3.9.0 (PyPI):GHSA-gx76-c99x-2c96"}],"evidence":[],"data":{"ecosystems":["PyPI"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.2083,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":2.0,"binary_assets":1.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v1.0 ships snake_game.exe (1 downloads)","ref":"snake_game.exe","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/releases/download/v1.0/snake_game.exe","weight":0.0},{"kind":"readme-download-lure","description":"gives an archive password","ref":"README.md","url":null,"weight":0.0}],"data":{"signals":["binary-release-assets","readme-download-lure"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":184.0,"function_nloc":4153.0,"mean_ccn":8.39,"p90_ccn":20.0,"complex_functions":23.0,"long_functions":6.0,"many_param_functions":2.0,"risky_nloc_share":0.4467},"findings":[],"evidence":[{"kind":"complex-function","description":"render in snake_game.py: complexity 97, 174 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L2282","weight":1.0},{"kind":"complex-function","description":"render in snake_game.py: complexity 87, 155 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L2608","weight":1.0},{"kind":"complex-function","description":"run_host in snake_game.py: complexity 70, 133 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L3362","weight":1.0},{"kind":"complex-function","description":"_update_bombs in snake_game.py: complexity 60, 115 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L936","weight":1.0},{"kind":"complex-function","description":"render in snake_game.py: complexity 58, 174 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L3108","weight":0.9666666666666667},{"kind":"complex-function","description":"render in snake_game.py: complexity 54, 166 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L3720","weight":0.9},{"kind":"complex-function","description":"update_game in snake_game.py: complexity 40, 73 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L686","weight":0.6666666666666666},{"kind":"complex-function","description":"handle_settings in web/server.py: complexity 33, 87 lines","ref":"web/server.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/web/server.py#L347","weight":0.55},{"kind":"complex-function","description":"_tick in web/server.py: complexity 32, 62 lines","ref":"web/server.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/web/server.py#L542","weight":0.5333333333333333},{"kind":"complex-function","description":"_move_snake in snake_game.py: complexity 31, 69 lines","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L792","weight":0.5166666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":5010.0,"duplicated_lines":1021.0,"duplicated_share":0.2038,"files":3.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: snake_game.py:448 and snake_game.py:1333","ref":"snake_game.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/snake_game.py#L448","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: web/server.py:231 and web/server.py:278","ref":"web/server.py","url":"https://github.com/S3cur3Th1sSh1t/multiplayer_snake/blob/681613f1ad5d572fc0bfe66b8bd8726aaf0cad00/web/server.py#L231","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":22.0,"weighted_findings":38.0,"scanned_lines":6136.0,"category:best-practice":16.0,"category:maintainability":6.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":314,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:314"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":316,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:316"},{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"snake_game.py","line":332,"fingerprint":"python.lang.best-practice.open-never-closed:snake_game.py:332"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":1454,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:1454"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":1990,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:1990"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":2569,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:2569"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":2886,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:2886"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"snake_game.py","line":2925,"fingerprint":"python.lang.best-practice.arbitrary-sleep:snake_game.py:2925"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"snake_game.py","line":244,"fingerprint":"python.lang.maintainability.return-not-in-function:snake_game.py:244"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":272,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:272"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":324,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:324"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":332,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:332"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":366,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:366"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":378,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:378"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":394,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:394"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":413,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:413"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"snake_game.py","line":417,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:snake_game.py:417"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_host\" a function or an attribute? If it is a function, you may have meant self.is_host() because self.is_host is always true.","path":"snake_game.py","line":447,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:snake_game.py:447"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_host\" a function or an attribute? If it is a function, you may have meant self.logic.is_host() because self.logic.is_host is always true.","path":"snake_game.py","line":2757,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:snake_game.py:2757"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_host\" a function or an attribute? If it is a function, you may have meant self.logic.is_host() because self.logic.is_host is always true.","path":"snake_game.py","line":2888,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:snake_game.py:2888"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_host\" a function or an attribute? If it is a function, you may have meant self.logic.is_host() because self.logic.is_host is always true.","path":"snake_game.py","line":3245,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:snake_game.py:3245"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_host\" a function or an attribute? If it is a function, you may have meant self.logic.is_host() because self.logic.is_host is always true.","path":"snake_game.py","line":3539,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:snake_game.py:3539"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":6136.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":20.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":271.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":2313.0,"other_lines":3823.0,"files_blamed":3.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":22.0,"quality:other_per_kloc":5.755,"quality:ratio":0.0,"security:ai_findings":15.0,"security:ai_per_kloc":6.485,"security:other_findings":9.0,"security:other_per_kloc":2.354,"security:ratio":2.75},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":["unreviewed-ai-risk"]}