{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T15:14:52.056644Z","repo":{"ref":{"host":"github.com","owner":"BeyondDimension","name":"SteamTools"},"default_branch":"develop","clone_url":"https://github.com/BeyondDimension/SteamTools.git","html_url":"https://github.com/BeyondDimension/SteamTools","description":"🛠「Watt Toolkit」是一个开源跨平台的多功能 Steam 工具箱。","stars":27569,"forks":1756,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":268622,"primary_language":"C#","license_spdx":"GPL-3.0","created_at":"2020-12-15T13:52:11Z","pushed_at":"2026-11-14T09:36:40Z","security_policy_url":null,"distribution":{"owner_created_at":"2021-02-20T08:27:55Z","owner_type":"Organization","release_assets":[{"name":"Steam++_v3.2.0_linux_arm64.tgz","size":87390711,"download_count":2448,"release_tag":"3.2.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_linux_arm64.tgz"},{"name":"Steam++_v3.2.0_linux_x64.tgz","size":90240184,"download_count":1915,"release_tag":"3.2.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_linux_x64.tgz"},{"name":"Steam++_v3.2.0_macos.dmg","size":241495552,"download_count":21696,"release_tag":"3.2.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_macos.dmg"},{"name":"Steam++_v3.2.0_win_x64.7z","size":98363079,"download_count":6379,"release_tag":"3.2.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_win_x64.7z"},{"name":"Steam++_v3.2.0_win_x64.exe","size":100465680,"download_count":21720,"release_tag":"3.2.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_win_x64.exe"},{"name":"Steam++_v3.1.0_linux_x64.tgz","size":85626421,"download_count":83905,"release_tag":"3.1.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.1.0/Steam%2B%2B_v3.1.0_linux_x64.tgz"},{"name":"Steam++_v3.1.0_macos.dmg","size":230704640,"download_count":151570,"release_tag":"3.1.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.1.0/Steam%2B%2B_v3.1.0_macos.dmg"},{"name":"Steam++_v3.1.0_win_x64.7z","size":94651502,"download_count":78827,"release_tag":"3.1.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.1.0/Steam%2B%2B_v3.1.0_win_x64.7z"},{"name":"Steam++_v3.1.0_win_x64.exe","size":96754104,"download_count":234536,"release_tag":"3.1.0","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.1.0/Steam%2B%2B_v3.1.0_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.16_linux_arm64.tgz","size":81603265,"download_count":82864,"release_tag":"3.0.0-rc.16","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.16/Steam%2B%2B_v3.0.0-rc.16_linux_arm64.tgz"},{"name":"Steam++_v3.0.0-rc.16_linux_x64.tgz","size":84399046,"download_count":45821,"release_tag":"3.0.0-rc.16","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.16/Steam%2B%2B_v3.0.0-rc.16_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.16_macos.dmg","size":242214617,"download_count":60046,"release_tag":"3.0.0-rc.16","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.16/Steam%2B%2B_v3.0.0-rc.16_macos.dmg"},{"name":"Steam++_v3.0.0-rc.16_win_x64.7z","size":91372680,"download_count":77174,"release_tag":"3.0.0-rc.16","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.16/Steam%2B%2B_v3.0.0-rc.16_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.16_win_x64.exe","size":93464602,"download_count":213369,"release_tag":"3.0.0-rc.16","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.16/Steam%2B%2B_v3.0.0-rc.16_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.15_linux_arm64.tgz","size":81675944,"download_count":12900,"release_tag":"3.0.0-rc.15","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.15/Steam%2B%2B_v3.0.0-rc.15_linux_arm64.tgz"},{"name":"Steam++_v3.0.0-rc.15_linux_x64.tgz","size":84484531,"download_count":6088,"release_tag":"3.0.0-rc.15","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.15/Steam%2B%2B_v3.0.0-rc.15_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.15_macos.dmg","size":241779655,"download_count":10623,"release_tag":"3.0.0-rc.15","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.15/Steam%2B%2B_v3.0.0-rc.15_macos.dmg"},{"name":"Steam++_v3.0.0-rc.15_win_x64.7z","size":91246510,"download_count":16907,"release_tag":"3.0.0-rc.15","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.15/Steam%2B%2B_v3.0.0-rc.15_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.15_win_x64.exe","size":93338433,"download_count":45238,"release_tag":"3.0.0-rc.15","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.15/Steam%2B%2B_v3.0.0-rc.15_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.14_linux_arm64.tgz","size":81675804,"download_count":5219,"release_tag":"3.0.0-rc.14","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.14/Steam%2B%2B_v3.0.0-rc.14_linux_arm64.tgz"},{"name":"Steam++_v3.0.0-rc.14_linux_x64.tgz","size":84484380,"download_count":2837,"release_tag":"3.0.0-rc.14","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.14/Steam%2B%2B_v3.0.0-rc.14_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.14_macos.dmg","size":241812367,"download_count":4727,"release_tag":"3.0.0-rc.14","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.14/Steam%2B%2B_v3.0.0-rc.14_macos.dmg"},{"name":"Steam++_v3.0.0-rc.14_win_x64.7z","size":91514498,"download_count":7169,"release_tag":"3.0.0-rc.14","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.14/Steam%2B%2B_v3.0.0-rc.14_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.14_win_x64.exe","size":93606422,"download_count":19822,"release_tag":"3.0.0-rc.14","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.14/Steam%2B%2B_v3.0.0-rc.14_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.13_linux_x64.tgz","size":78770351,"download_count":15585,"release_tag":"3.0.0-rc.13","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.13/Steam%2B%2B_v3.0.0-rc.13_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.13_macos.dmg","size":241549162,"download_count":11945,"release_tag":"3.0.0-rc.13","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.13/Steam%2B%2B_v3.0.0-rc.13_macos.dmg"},{"name":"Steam++_v3.0.0-rc.13_win_x64.7z","size":90810370,"download_count":19715,"release_tag":"3.0.0-rc.13","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.13/Steam%2B%2B_v3.0.0-rc.13_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.13_win_x64.exe","size":92902293,"download_count":51956,"release_tag":"3.0.0-rc.13","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.13/Steam%2B%2B_v3.0.0-rc.13_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.12_linux_x64.tgz","size":78770389,"download_count":4030,"release_tag":"3.0.0-rc.12","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.12/Steam%2B%2B_v3.0.0-rc.12_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.12_macos.dmg","size":241443627,"download_count":1236,"release_tag":"3.0.0-rc.12","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.12/Steam%2B%2B_v3.0.0-rc.12_macos.dmg"},{"name":"Steam++_v3.0.0-rc.12_win_x64.7z","size":90794837,"download_count":4384,"release_tag":"3.0.0-rc.12","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.12/Steam%2B%2B_v3.0.0-rc.12_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.12_win_x64.exe","size":92886755,"download_count":11074,"release_tag":"3.0.0-rc.12","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.12/Steam%2B%2B_v3.0.0-rc.12_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.11_linux_x64.tgz","size":75021526,"download_count":20070,"release_tag":"3.0.0-rc.11","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.11/Steam%2B%2B_v3.0.0-rc.11_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.11_macos.dmg","size":228934962,"download_count":9130,"release_tag":"3.0.0-rc.11","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.11/Steam%2B%2B_v3.0.0-rc.11_macos.dmg"},{"name":"Steam++_v3.0.0-rc.11_win_x64.7z","size":63390133,"download_count":21141,"release_tag":"3.0.0-rc.11","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.11/Steam%2B%2B_v3.0.0-rc.11_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.11_win_x64.exe","size":65482053,"download_count":55243,"release_tag":"3.0.0-rc.11","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.11/Steam%2B%2B_v3.0.0-rc.11_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.10_linux_x64.tgz","size":75020644,"download_count":10188,"release_tag":"3.0.0-rc.10","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.10/Steam%2B%2B_v3.0.0-rc.10_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.10_macos.dmg","size":227068998,"download_count":5595,"release_tag":"3.0.0-rc.10","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.10/Steam%2B%2B_v3.0.0-rc.10_macos.dmg"},{"name":"Steam++_v3.0.0-rc.10_win_x64.7z","size":63561507,"download_count":12606,"release_tag":"3.0.0-rc.10","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.10/Steam%2B%2B_v3.0.0-rc.10_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.10_win_x64.exe","size":65664136,"download_count":32958,"release_tag":"3.0.0-rc.10","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.10/Steam%2B%2B_v3.0.0-rc.10_win_x64.exe"},{"name":"Steam++_v3.0.0-rc.9_linux_x64.tgz","size":72941148,"download_count":26489,"release_tag":"3.0.0-rc.9","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.9/Steam%2B%2B_v3.0.0-rc.9_linux_x64.tgz"},{"name":"Steam++_v3.0.0-rc.9_macos.dmg","size":223369481,"download_count":12732,"release_tag":"3.0.0-rc.9","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.9/Steam%2B%2B_v3.0.0-rc.9_macos.dmg"},{"name":"Steam++_v3.0.0-rc.9_win_x64.7z","size":62386851,"download_count":10388,"release_tag":"3.0.0-rc.9","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.9/Steam%2B%2B_v3.0.0-rc.9_win_x64.7z"},{"name":"Steam++_v3.0.0-rc.9_win_x64.exe","size":64489480,"download_count":25913,"release_tag":"3.0.0-rc.9","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.0.0-rc.9/Steam%2B%2B_v3.0.0-rc.9_win_x64.exe"}]}},"commit_sha":"fc6f13d01cfe5d470ca87645a33e5f528e9248c0","profile":{"lines_by_language":{"C#":118648,"PowerShell":402,"Shell":87},"files_by_category":{"source":980,"other":229,"binary":179,"config":30,"docs":21,"vendored":10,"oversized":7},"source_lines":119137,"test_lines":0},"pillars":{"ai_provenance":{"score":1.6,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0158,"suspected_share":0.1206,"estimated_share":0.0158,"ai_artifacts":1.0,"flagged_work_units":25.0,"flagged_releases":0.0,"style_index":0.114},"summary":"Explicit AI attribution on 2% of first-party code added; an estimated 2% including velocity signals."},"quality":{"score":62.5,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":62.7,"duplication":69.4,"lint":99.4,"testing":35.0,"docs":65.0,"type_safety":null,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.00, CI runs tests; 16% of function code in complex or long functions; 6% duplicated lines. Weakest area: testing."},"security":{"score":59.9,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":71.7,"sast":99.6,"dependencies":null,"ci_actions":0.5,"posture":40.0,"scorecard":null},"summary":"Security posture is weak: 24 high-severity workflow issues. Weakest area: ci actions."}},"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":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":4901.0,"attributed_commits":47.0,"attributed_commit_share":0.009589879616404815,"effective_loc":816075.0,"attributed_loc":12926.0,"attributed_loc_share":0.015839230462886378,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 45 attributed commits, 12,839 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"OpenAI Codex: 2 attributed commits, 87 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (5768c34327)","ref":"ceac9b65a2e60b0b3f7ababc2de77b7da3483310","url":"https://github.com/BeyondDimension/SteamTools/commit/ceac9b65a2e60b0b3f7ababc2de77b7da3483310","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"11f35fcf36cda1d1e924dab2eccb5bf19a0006bf","url":"https://github.com/BeyondDimension/SteamTools/commit/11f35fcf36cda1d1e924dab2eccb5bf19a0006bf","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"3d855ef204bf1d75e384e508d6f0cab762f8810e","url":"https://github.com/BeyondDimension/SteamTools/commit/3d855ef204bf1d75e384e508d6f0cab762f8810e","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"cb4ee35c36ebd36e54def754e6dad2516e49b384","url":"https://github.com/BeyondDimension/SteamTools/commit/cb4ee35c36ebd36e54def754e6dad2516e49b384","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"76b0a5fc21c6c7521df9c16589620ef645b92edd","url":"https://github.com/BeyondDimension/SteamTools/commit/76b0a5fc21c6c7521df9c16589620ef645b92edd","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"0918d776fe08c3b141f2cded4e9292d445602ff4","url":"https://github.com/BeyondDimension/SteamTools/commit/0918d776fe08c3b141f2cded4e9292d445602ff4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"788b903352700c71dbb0d9656d291dddf2eb9378","url":"https://github.com/BeyondDimension/SteamTools/commit/788b903352700c71dbb0d9656d291dddf2eb9378","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"4ed8319f74626672850bcbce9677d7ef6dc59fec","url":"https://github.com/BeyondDimension/SteamTools/commit/4ed8319f74626672850bcbce9677d7ef6dc59fec","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"9b66636a0ce528a4819da298ef71fb76ff8fe208","url":"https://github.com/BeyondDimension/SteamTools/commit/9b66636a0ce528a4819da298ef71fb76ff8fe208","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"17ab5c2e7582d720982fe95627510a21afcdb5a5","url":"https://github.com/BeyondDimension/SteamTools/commit/17ab5c2e7582d720982fe95627510a21afcdb5a5","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"88bb1bad16545053fde894cd95ae2f338975dc75","url":"https://github.com/BeyondDimension/SteamTools/commit/88bb1bad16545053fde894cd95ae2f338975dc75","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"36ffd2c076fbe6af6c1a6adce7ffa86637887c7f","url":"https://github.com/BeyondDimension/SteamTools/commit/36ffd2c076fbe6af6c1a6adce7ffa86637887c7f","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"cb18e2d99c9098adaf36b8cec7dc99811edb816c","url":"https://github.com/BeyondDimension/SteamTools/commit/cb18e2d99c9098adaf36b8cec7dc99811edb816c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"0bb5226be0d9d47a66f2eac6008a305546f59c14","url":"https://github.com/BeyondDimension/SteamTools/commit/0bb5226be0d9d47a66f2eac6008a305546f59c14","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"ea2d8247ad3641b46bbf3094b1d338a2fecda4eb","url":"https://github.com/BeyondDimension/SteamTools/commit/ea2d8247ad3641b46bbf3094b1d338a2fecda4eb","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"bd3caa36faaae99c5125fbef89260819f0647580","url":"https://github.com/BeyondDimension/SteamTools/commit/bd3caa36faaae99c5125fbef89260819f0647580","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"53b3200a36b3ad9046f8b394c8c2c1860aecadf0","url":"https://github.com/BeyondDimension/SteamTools/commit/53b3200a36b3ad9046f8b394c8c2c1860aecadf0","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"1f14a8a4e2e4eecfc4c792d2f3c8eba6dad8db47","url":"https://github.com/BeyondDimension/SteamTools/commit/1f14a8a4e2e4eecfc4c792d2f3c8eba6dad8db47","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"529cac5a94611b5d9283b2ebf29116ade544b112","url":"https://github.com/BeyondDimension/SteamTools/commit/529cac5a94611b5d9283b2ebf29116ade544b112","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"71257f5caca1ab88b7198e932623dd8ff801a057","url":"https://github.com/BeyondDimension/SteamTools/commit/71257f5caca1ab88b7198e932623dd8ff801a057","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"49df11434321e0c2240599db95243053321985b3","url":"https://github.com/BeyondDimension/SteamTools/commit/49df11434321e0c2240599db95243053321985b3","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"fe42bf4ad7e275ec8cf7d00f57da5f74ba3d2847","url":"https://github.com/BeyondDimension/SteamTools/commit/fe42bf4ad7e275ec8cf7d00f57da5f74ba3d2847","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"c629de488adf78ed4a88ac505247059d2603c81d","url":"https://github.com/BeyondDimension/SteamTools/commit/c629de488adf78ed4a88ac505247059d2603c81d","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"e4ac07f8f8d27e348e7496276b26ff43dbf0fb3d","url":"https://github.com/BeyondDimension/SteamTools/commit/e4ac07f8f8d27e348e7496276b26ff43dbf0fb3d","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: on merged branch (04e0895dad)","ref":"94c4bacdb419491aa66e007295bdd968798c914e","url":"https://github.com/BeyondDimension/SteamTools/commit/94c4bacdb419491aa66e007295bdd968798c914e","weight":0.9}],"data":{"attributed_loc_by_commit":{"fefaedb54f6ca617d955afc866ceb21481bd1a9d":0,"e28e5e97d98cfb2cfe19507b5561f59231bfcab7":85,"c16ffa08e03b192d23ada290c4969e77f9201f3d":152,"137ff46ed9415451abe7f123e2982c9171451bf2":0,"2c3aba6709ff188aa7e73c43d5e9a313a2895bc9":99,"5726f27445daae9bf5a83c02b13caf8dc2848298":13,"048fb345ed3be73611f58175910a8cf10739da62":0,"2c0bf8b2d60adb505fc62c70e3a0cd223e73d52a":69,"9374231e9fa564e5563d940baa1da48eb8d8a948":0,"8f16d3aa660330c597090a2f3f74d8bee2b3be81":117,"3e870daeaf8d2267b06a877632aec4083282452a":32,"9e25ff7460e8e8e8a80eb61ea4286cb530dcce5c":124,"4310f7287223b5c6972bdfd8d7f6594ea8c33e25":22,"d04213147e77a8d73277fa8b86eeecfa444df071":0,"a9a077460f73dfe35eb500f2797f1ff20fa3d44f":256,"de1c04c1cbfe5c28ef489dbfd963d8fff5c9e63d":636,"7020f26563ea30cd5c06565d8c466ccffcc71138":1115,"7fee870ece407d06b5a6ad3676bafb4800f880c4":102,"b534079fc747b652d80c30ee5c0f445900623735":0,"0f25a26ab094c172b6de5cf3f99730b32d2f0180":1,"704caafaf51b6aadd649460344851f5d03239c1c":995,"2d5a22707f4e13bbace4563b0929e77823638038":187,"94c4bacdb419491aa66e007295bdd968798c914e":10,"e4ac07f8f8d27e348e7496276b26ff43dbf0fb3d":3180,"c629de488adf78ed4a88ac505247059d2603c81d":1728,"fe42bf4ad7e275ec8cf7d00f57da5f74ba3d2847":812,"49df11434321e0c2240599db95243053321985b3":35,"71257f5caca1ab88b7198e932623dd8ff801a057":0,"529cac5a94611b5d9283b2ebf29116ade544b112":1395,"1f14a8a4e2e4eecfc4c792d2f3c8eba6dad8db47":2,"53b3200a36b3ad9046f8b394c8c2c1860aecadf0":2,"bd3caa36faaae99c5125fbef89260819f0647580":97,"ea2d8247ad3641b46bbf3094b1d338a2fecda4eb":1095,"0bb5226be0d9d47a66f2eac6008a305546f59c14":11,"cb18e2d99c9098adaf36b8cec7dc99811edb816c":27,"36ffd2c076fbe6af6c1a6adce7ffa86637887c7f":20,"88bb1bad16545053fde894cd95ae2f338975dc75":0,"17ab5c2e7582d720982fe95627510a21afcdb5a5":0,"9b66636a0ce528a4819da298ef71fb76ff8fe208":3,"4ed8319f74626672850bcbce9677d7ef6dc59fec":11,"788b903352700c71dbb0d9656d291dddf2eb9378":151,"0918d776fe08c3b141f2cded4e9292d445602ff4":1,"76b0a5fc21c6c7521df9c16589620ef645b92edd":173,"cb4ee35c36ebd36e54def754e6dad2516e49b384":29,"3d855ef204bf1d75e384e508d6f0cab762f8810e":55,"11f35fcf36cda1d1e924dab2eccb5bf19a0006bf":82,"ceac9b65a2e60b0b3f7ababc2de77b7da3483310":2},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":45,"loc":12839,"first_seen":1773241740,"last_seen":1793884166},"openai-codex":{"name":"OpenAI Codex","commits":2,"loc":87,"first_seen":1782357918,"last_seen":1793970850}},"monthly":{"2020-09":{"loc":49863,"attributed_loc":0},"2020-11":{"loc":11821,"attributed_loc":0},"2020-12":{"loc":16157,"attributed_loc":0},"2021-01":{"loc":52953,"attributed_loc":0},"2021-02":{"loc":59689,"attributed_loc":0},"2021-03":{"loc":66971,"attributed_loc":0},"2021-04":{"loc":125150,"attributed_loc":0},"2021-05":{"loc":20443,"attributed_loc":0},"2021-06":{"loc":21842,"attributed_loc":0},"2021-07":{"loc":15254,"attributed_loc":0},"2021-08":{"loc":14241,"attributed_loc":0},"2021-09":{"loc":5756,"attributed_loc":0},"2021-10":{"loc":21486,"attributed_loc":0},"2021-11":{"loc":28388,"attributed_loc":0},"2021-12":{"loc":10541,"attributed_loc":0},"2022-01":{"loc":4355,"attributed_loc":0},"2022-02":{"loc":4027,"attributed_loc":0},"2022-03":{"loc":4954,"attributed_loc":0},"2022-04":{"loc":7895,"attributed_loc":0},"2022-05":{"loc":52474,"attributed_loc":0},"2022-06":{"loc":13861,"attributed_loc":0},"2022-07":{"loc":8652,"attributed_loc":0},"2022-08":{"loc":4353,"attributed_loc":0},"2022-09":{"loc":16,"attributed_loc":0},"2022-10":{"loc":64,"attributed_loc":0},"2022-11":{"loc":239,"attributed_loc":0},"2022-12":{"loc":2645,"attributed_loc":0},"2023-01":{"loc":439,"attributed_loc":0},"2023-02":{"loc":49300,"attributed_loc":0},"2023-03":{"loc":6280,"attributed_loc":0},"2023-04":{"loc":1634,"attributed_loc":0},"2023-05":{"loc":16429,"attributed_loc":0},"2023-06":{"loc":14582,"attributed_loc":0},"2023-07":{"loc":33978,"attributed_loc":0},"2023-08":{"loc":14220,"attributed_loc":0},"2023-09":{"loc":9832,"attributed_loc":0},"2023-10":{"loc":263,"attributed_loc":0},"2023-11":{"loc":4945,"attributed_loc":0},"2023-12":{"loc":1331,"attributed_loc":0},"2024-01":{"loc":87,"attributed_loc":0},"2024-02":{"loc":5161,"attributed_loc":0},"2024-03":{"loc":1102,"attributed_loc":0},"2024-04":{"loc":1872,"attributed_loc":0},"2024-05":{"loc":47,"attributed_loc":0},"2024-06":{"loc":1104,"attributed_loc":0},"2024-07":{"loc":2636,"attributed_loc":0},"2024-08":{"loc":4584,"attributed_loc":0},"2024-09":{"loc":1060,"attributed_loc":0},"2024-10":{"loc":52,"attributed_loc":0},"2024-11":{"loc":459,"attributed_loc":0},"2024-12":{"loc":50,"attributed_loc":0},"2025-01":{"loc":206,"attributed_loc":0},"2025-02":{"loc":8,"attributed_loc":0},"2025-03":{"loc":254,"attributed_loc":0},"2025-05":{"loc":1,"attributed_loc":0},"2026-01":{"loc":383,"attributed_loc":0},"2026-02":{"loc":392,"attributed_loc":0},"2026-03":{"loc":648,"attributed_loc":0},"2026-06":{"loc":85,"attributed_loc":85},"2026-07":{"loc":152,"attributed_loc":152},"2026-08":{"loc":476,"attributed_loc":476},"2026-10":{"loc":11706,"attributed_loc":11706},"2026-11":{"loc":6227,"attributed_loc":507}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1793220898.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":".github/copilot-instructions.md (github-copilot configuration)","ref":".github/copilot-instructions.md","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/.github/copilot-instructions.md","weight":0.5}],"data":{"artifacts":[{"tool":"github-copilot","path":".github/copilot-instructions.md","added_at":1793220898}],"workflows":[],"tools":["github-copilot"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"work_units":2806.0,"flagged_units":25.0,"pre_ai_era_bursts":16.0,"pre_ai_era_measured_loc":269836.0,"pre_ai_era_burst_loc":166619.0,"measured_loc":604877.0,"flagged_loc":104443.0,"flagged_loc_share":0.17266816228753945,"max_loc_per_hour":13047.470331043098,"median_loc_per_hour":62.64501160092807,"pr_timed_units":9.0,"excluded_import_loc":208274.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"16,084 lines of first-party code in ~3.9h (4,119 lines/hour, 1 commit session)","ref":"79214410105290d0248a327fd25914ea26a59087","url":"https://github.com/BeyondDimension/SteamTools/commit/79214410105290d0248a327fd25914ea26a59087","weight":0.6},{"kind":"velocity-burst","description":"10,873 lines of first-party code in ~4.0h (2,718 lines/hour, 1 commit session)","ref":"b4aaec51b28a11a6452e381239a33691bbee2bbc","url":"https://github.com/BeyondDimension/SteamTools/commit/b4aaec51b28a11a6452e381239a33691bbee2bbc","weight":0.6},{"kind":"velocity-burst","description":"10,894 lines of first-party code in ~4.7h (2,319 lines/hour, 2 commit session)","ref":"63dcabf75896f7ebd0ba54ec1926d2ad0c037a63","url":"https://github.com/BeyondDimension/SteamTools/commit/63dcabf75896f7ebd0ba54ec1926d2ad0c037a63","weight":0.6},{"kind":"velocity-burst","description":"7,802 lines of first-party code in ~4.0h (1,950 lines/hour, 1 commit session)","ref":"326648c1f5a64c3aef2ca2b18766a20e8e08c108","url":"https://github.com/BeyondDimension/SteamTools/commit/326648c1f5a64c3aef2ca2b18766a20e8e08c108","weight":0.58515},{"kind":"velocity-burst","description":"6,875 lines of first-party code in ~4.0h (1,719 lines/hour, 1 commit session)","ref":"57da5ab9087d5f36c398b608788f9b29b7eb7905","url":"https://github.com/BeyondDimension/SteamTools/commit/57da5ab9087d5f36c398b608788f9b29b7eb7905","weight":0.515625},{"kind":"velocity-burst","description":"3,782 lines of first-party code in ~2.4h (1,596 lines/hour, 1 commit session)","ref":"20056583a31e7c9677dbcb28e627359882d92ac1","url":"https://github.com/BeyondDimension/SteamTools/commit/20056583a31e7c9677dbcb28e627359882d92ac1","weight":0.4788464243845252},{"kind":"velocity-burst","description":"4,312 lines of first-party code in ~4.3h (1,003 lines/hour, 3 commit session)","ref":"3e71678f9fc0a6dd6b0ae18e933853ec629590e8","url":"https://github.com/BeyondDimension/SteamTools/commit/3e71678f9fc0a6dd6b0ae18e933853ec629590e8","weight":0.30087608218116035},{"kind":"velocity-burst","description":"3,484 lines of first-party code in ~4.0h (871 lines/hour, 1 commit session)","ref":"10886a62acaa3950b4ef2d63db6f6f93a7a0dbc2","url":"https://github.com/BeyondDimension/SteamTools/commit/10886a62acaa3950b4ef2d63db6f6f93a7a0dbc2","weight":0.2613},{"kind":"velocity-burst","description":"3,346 lines of first-party code in ~4.0h (836 lines/hour, 1 commit session)","ref":"a329ec7010b9bd6881b7a954add8643caa4c8b60","url":"https://github.com/BeyondDimension/SteamTools/commit/a329ec7010b9bd6881b7a954add8643caa4c8b60","weight":0.25095},{"kind":"velocity-burst","description":"3,291 lines of first-party code in ~4.0h (823 lines/hour, 1 commit session)","ref":"931d5654d6d73d6b7850d9c357a1cef46a7af9dd","url":"https://github.com/BeyondDimension/SteamTools/commit/931d5654d6d73d6b7850d9c357a1cef46a7af9dd","weight":0.246825},{"kind":"velocity-burst","description":"3,180 lines of first-party code in ~4.0h (795 lines/hour, 1 commit session)","ref":"e4ac07f8f8d27e348e7496276b26ff43dbf0fb3d","url":"https://github.com/BeyondDimension/SteamTools/commit/e4ac07f8f8d27e348e7496276b26ff43dbf0fb3d","weight":0.2385},{"kind":"velocity-burst","description":"2,707 lines of first-party code in ~4.0h (677 lines/hour, 1 commit session)","ref":"0205bfd3c8caff27dd4e598be6845346b2863739","url":"https://github.com/BeyondDimension/SteamTools/commit/0205bfd3c8caff27dd4e598be6845346b2863739","weight":0.20302499999999998},{"kind":"velocity-burst","description":"1,239 lines of first-party code in ~1.9h (660 lines/hour, 2 commit session)","ref":"3a345f57818e4524714c68455262d64061fca19b","url":"https://github.com/BeyondDimension/SteamTools/commit/3a345f57818e4524714c68455262d64061fca19b","weight":0.19803463075329286},{"kind":"velocity-burst","description":"2,139 lines of first-party code in ~3.3h (654 lines/hour, 2 commit session)","ref":"b68e4e062e670662722415af0e582a1aea265535","url":"https://github.com/BeyondDimension/SteamTools/commit/b68e4e062e670662722415af0e582a1aea265535","weight":0.19625520346614558},{"kind":"velocity-burst","description":"2,657 lines of first-party code in ~4.1h (653 lines/hour, 2 commit session)","ref":"2b18e03098ace94e95b33c21f2086c501ecc6454","url":"https://github.com/BeyondDimension/SteamTools/commit/2b18e03098ace94e95b33c21f2086c501ecc6454","weight":0.19580757420675535}],"data":{"flagged_loc_by_commit":{"7020f26563ea30cd5c06565d8c466ccffcc71138":1115,"e4ac07f8f8d27e348e7496276b26ff43dbf0fb3d":3180,"c629de488adf78ed4a88ac505247059d2603c81d":1728,"27297c4baf5c58c440618ed4516e1d506b503c2b":4302,"52fd23f382210e9ffc73fd9b88e774b4b2ff5be8":1,"3e71678f9fc0a6dd6b0ae18e933853ec629590e8":9,"5e4132031d61dcbe7862dbee5d4caedef3175736":2609,"2ff7ab8ec7adc8b2a0a273a5a5a1ac8e012b6263":51,"da51873341d541df3da09f4c81bb91d517b6ccff":2083,"38129705a75253372cc323170706435f7b2850bc":1,"79214410105290d0248a327fd25914ea26a59087":16084,"1499aa4086826ba7f6f06e73fbe03cf5903e2f3b":2715,"39d78529c2c72e230fd3bc39ae5f9898c763b5c1":17,"36ac02b4f5972cd1692446d08732875310f47b2c":3,"57da5ab9087d5f36c398b608788f9b29b7eb7905":6875,"b4aaec51b28a11a6452e381239a33691bbee2bbc":10873,"38bd825718831d539e01ff2dc09e97df8f7f6565":2262,"97e5748de059be1ada4707e3a7b5cc7d14fb8beb":18,"17c4a077bfd0c55eb38f3cbc383e793597c6d2dc":7,"a927b8f4f42b948c55c9ffe6b52e8fc5ab9d3998":37,"31b16bec976ecf7b71b2eb63483c51d021255640":1219,"3a345f57818e4524714c68455262d64061fca19b":20,"4f9e6591dc7e40d8866ea7f9c7dd6d90da158962":2105,"b68e4e062e670662722415af0e582a1aea265535":34,"326648c1f5a64c3aef2ca2b18766a20e8e08c108":7802,"10886a62acaa3950b4ef2d63db6f6f93a7a0dbc2":3484,"0a328229b1150f64113620961ce157f5ee213d8a":2521,"931d5654d6d73d6b7850d9c357a1cef46a7af9dd":3291,"a329ec7010b9bd6881b7a954add8643caa4c8b60":3346,"0205bfd3c8caff27dd4e598be6845346b2863739":2707,"e3383c544c55678bb7c1268002a3c966a5c0f076":2535,"5d9194dc538226de53dfbfab034edbd3bd059ec6":2005,"c54242b96c7221704a16a1ab97e855677a44451f":10729,"63dcabf75896f7ebd0ba54ec1926d2ad0c037a63":165,"20056583a31e7c9677dbcb28e627359882d92ac1":3782,"b18925a1a05be7ea18e403ff432ac4b80c8ca220":2071,"9fffe8458a2ce89eabbd3b6b44e78e81b6a15937":2639,"2b18e03098ace94e95b33c21f2086c501ecc6454":18},"excluded_import_commits":["1eba2a725d9bf1f289465c23ce9b1b1b92b3d769","3e4c9de1c2602bf2c1279be4e171f2f1eab67ce5","4d76decf7370e7ee885a155d79304c6edab0871e","654e09d9d7f22b0195972d377788cf1d723cb28a","6b2f3b5926fde9f5a570f389753d70cd75e349d8","798355e34243bc703e153468900fe6d240a64e4f","90311f8891281598484e0d71f42ee7cbced5d61a","94e49773417d8fc54282714f2bd971da803ffb76","97c50de6a181b5c2d87af7a60752a0bfd124f774","aa5963b8e817c09772160cc8e142ba726485f9c2","d21e2d6247bfc08c1fa6f953c7927f55590547a9","d484512fd37d9ff1f9a182135cc617b1412fa575","dadb7ae01d9eae2819db5cc69ca0a587d647f451"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"releases":73.0,"flagged_releases":0.0,"max_loc_per_day":3982.8},"findings":[],"evidence":[],"data":{"releases":[{"from":"1.0.0","to":"1.0.2","loc":753,"days":4.38,"loc_per_day":171.9,"flagged":false},{"from":"1.0.2","to":"1.0.3","loc":733,"days":5.04,"loc_per_day":145.3,"flagged":false},{"from":"1.0.3","to":"1.0.3.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"1.0.3.1","to":"1.0.3.2","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"1.0.3.2","to":"1.0.3.3","loc":178,"days":0.67,"loc_per_day":264.7,"flagged":false},{"from":"1.0.3.3","to":"1.0.4","loc":2281,"days":1.25,"loc_per_day":1818.2,"flagged":false},{"from":"1.0.4","to":"1.0.5","loc":819,"days":10.56,"loc_per_day":77.6,"flagged":false},{"from":"1.0.5","to":"1.0.6","loc":237,"days":4.27,"loc_per_day":55.5,"flagged":false},{"from":"1.0.6","to":"1.1.0","loc":821,"days":10.25,"loc_per_day":80.1,"flagged":false},{"from":"1.1.0","to":"1.1.1","loc":17,"days":0.07,"loc_per_day":252.0,"flagged":false},{"from":"1.1.1","to":"1.1.2","loc":1085,"days":6.8,"loc_per_day":159.7,"flagged":false},{"from":"1.1.2","to":"1.1.3","loc":149,"days":23.1,"loc_per_day":6.4,"flagged":false},{"from":"1.1.3","to":"1.1.4","loc":4803,"days":1.21,"loc_per_day":3982.8,"flagged":false},{"from":"1.1.4","to":"2.0.0.6","loc":208192,"days":67.02,"loc_per_day":3106.5,"flagged":false},{"from":"2.0.0.6","to":"2.0.0.8","loc":1715,"days":2.78,"loc_per_day":616.3,"flagged":false},{"from":"2.0.0.8","to":"2.1.0","loc":1388,"days":2.0,"loc_per_day":692.6,"flagged":false},{"from":"2.1.0","to":"2.2.0","loc":2630,"days":4.88,"loc_per_day":538.6,"flagged":false},{"from":"2.2.0","to":"2.3.0","loc":12512,"days":15.31,"loc_per_day":817.2,"flagged":false},{"from":"2.3.0","to":"2.4.0","loc":3654,"days":10.92,"loc_per_day":334.6,"flagged":false},{"from":"2.4.0","to":"2.4.1","loc":10,"days":0.05,"loc_per_day":204.0,"flagged":false},{"from":"2.4.1","to":"2.4.9","loc":45469,"days":72.59,"loc_per_day":626.3,"flagged":false},{"from":"2.4.9","to":"2.4.10","loc":2139,"days":6.98,"loc_per_day":306.6,"flagged":false},{"from":"2.4.10","to":"2.4.11","loc":193,"days":0.29,"loc_per_day":655.7,"flagged":false},{"from":"2.4.11","to":"2.4.12","loc":3783,"days":12.83,"loc_per_day":294.8,"flagged":false},{"from":"2.4.12","to":"2.6.0","loc":29379,"days":78.86,"loc_per_day":372.6,"flagged":false},{"from":"2.6.0","to":"2.6.1","loc":124,"days":0.18,"loc_per_day":687.7,"flagged":false},{"from":"2.6.1","to":"2.6.2","loc":24004,"days":16.81,"loc_per_day":1428.3,"flagged":false},{"from":"2.6.2","to":"2.6.3","loc":36,"days":1.12,"loc_per_day":32.2,"flagged":false},{"from":"2.6.3","to":"2.6.4","loc":4883,"days":23.89,"loc_per_day":204.4,"flagged":false},{"from":"2.6.4","to":"2.6.5","loc":4297,"days":32.84,"loc_per_day":130.9,"flagged":false},{"from":"2.6.5","to":"2.6.6","loc":19,"days":0.58,"loc_per_day":32.8,"flagged":false},{"from":"2.6.6","to":"2.6.7","loc":107,"days":0.07,"loc_per_day":1559.5,"flagged":false},{"from":"2.6.7","to":"2.6.8","loc":2917,"days":21.91,"loc_per_day":133.2,"flagged":false},{"from":"2.6.8","to":"2.6.9","loc":9,"days":1.71,"loc_per_day":5.3,"flagged":false},{"from":"2.6.9","to":"2.7.0-pre1","loc":4749,"days":28.74,"loc_per_day":165.3,"flagged":false},{"from":"2.7.0-pre1","to":"2.7.0","loc":8368,"days":25.07,"loc_per_day":333.8,"flagged":false},{"from":"2.7.0","to":"2.7.1","loc":908,"days":1.99,"loc_per_day":455.3,"flagged":false},{"from":"2.7.1","to":"2.7.2","loc":5,"days":2.13,"loc_per_day":2.3,"flagged":false},{"from":"2.7.2","to":"2.8.0","loc":51384,"days":84.0,"loc_per_day":611.7,"flagged":false},{"from":"2.8.0","to":"2.8.1","loc":84,"days":0.24,"loc_per_day":352.6,"flagged":false},{"from":"2.8.1","to":"2.8.2","loc":1674,"days":4.55,"loc_per_day":367.8,"flagged":false},{"from":"2.8.2","to":"2.8.3","loc":3704,"days":17.22,"loc_per_day":215.1,"flagged":false},{"from":"2.8.3","to":"2.8.3.1","loc":249,"days":0.85,"loc_per_day":291.3,"flagged":false},{"from":"2.8.3.1","to":"2.8.4","loc":1,"days":1.22,"loc_per_day":0.8,"flagged":false},{"from":"2.8.4","to":"2.8.5","loc":3167,"days":119.4,"loc_per_day":26.5,"flagged":false},{"from":"2.8.5","to":"2.8.6","loc":349,"days":5.65,"loc_per_day":61.8,"flagged":false},{"from":"2.8.6","to":"3.0.0-preview.1","loc":110446,"days":249.95,"loc_per_day":441.9,"flagged":false},{"from":"3.0.0-preview.1","to":"3.0.0-preview.2","loc":1018,"days":1.26,"loc_per_day":810.7,"flagged":false},{"from":"3.0.0-preview.2","to":"3.0.0-preview.3","loc":889,"days":1.73,"loc_per_day":512.4,"flagged":false},{"from":"3.0.0-preview.3","to":"3.0.0-preview.4","loc":279,"days":1.1,"loc_per_day":254.7,"flagged":false},{"from":"3.0.0-preview.4","to":"3.0.0-preview.5","loc":203,"days":0.33,"loc_per_day":608.4,"flagged":false},{"from":"3.0.0-preview.5","to":"3.0.0-preview.6","loc":359,"days":1.11,"loc_per_day":322.8,"flagged":false},{"from":"3.0.0-preview.6","to":"3.0.0-preview.7","loc":265,"days":1.46,"loc_per_day":181.8,"flagged":false},{"from":"3.0.0-preview.7","to":"3.0.0-rc.1","loc":1747,"days":5.16,"loc_per_day":338.8,"flagged":false},{"from":"3.0.0-rc.1","to":"3.0.0-rc.2","loc":7721,"days":15.81,"loc_per_day":488.4,"flagged":false},{"from":"3.0.0-rc.2","to":"3.0.0-rc.3","loc":5307,"days":68.01,"loc_per_day":78.0,"flagged":false},{"from":"3.0.0-rc.3","to":"3.0.0-rc.4","loc":6709,"days":96.87,"loc_per_day":69.3,"flagged":false},{"from":"3.0.0-rc.4","to":"3.0.0-rc.5","loc":128,"days":2.18,"loc_per_day":58.7,"flagged":false},{"from":"3.0.0-rc.5","to":"3.0.0-rc.7","loc":352,"days":8.06,"loc_per_day":43.7,"flagged":false},{"from":"3.0.0-rc.7","to":"3.0.0-rc.8","loc":2365,"days":44.88,"loc_per_day":52.7,"flagged":false},{"from":"3.0.0-rc.8","to":"diff_mobius_tag","loc":683,"days":55.91,"loc_per_day":12.2,"flagged":false},{"from":"diff_mobius_tag","to":"3.0.0-rc.9","loc":607,"days":6.82,"loc_per_day":89.1,"flagged":false},{"from":"3.0.0-rc.9","to":"3.0.0-rc.9(3.0.909)","loc":3134,"days":35.11,"loc_per_day":89.3,"flagged":false},{"from":"3.0.0-rc.9(3.0.909)","to":"3.0.0-rc9(3.0.919)","loc":156,"days":1.59,"loc_per_day":97.9,"flagged":false},{"from":"3.0.0-rc9(3.0.919)","to":"3.0.0-rc.10","loc":3769,"days":23.85,"loc_per_day":158.0,"flagged":false},{"from":"3.0.0-rc.10","to":"3.0.0-rc.11","loc":719,"days":24.64,"loc_per_day":29.2,"flagged":false},{"from":"3.0.0-rc.11","to":"3.0.0-rc.12","loc":807,"days":64.09,"loc_per_day":12.6,"flagged":false},{"from":"3.0.0-rc.12","to":"3.0.0-rc.13","loc":67,"days":2.36,"loc_per_day":28.4,"flagged":false},{"from":"3.0.0-rc.13","to":"3.0.0-rc.14","loc":237,"days":53.55,"loc_per_day":4.4,"flagged":false},{"from":"3.0.0-rc.14","to":"3.0.0-rc.15","loc":23,"days":20.42,"loc_per_day":1.1,"flagged":false},{"from":"3.0.0-rc.15","to":"3.0.0-rc.16","loc":258,"days":39.66,"loc_per_day":6.5,"flagged":false},{"from":"3.0.0-rc.16","to":"3.1.0","loc":1424,"days":352.13,"loc_per_day":4.0,"flagged":false},{"from":"3.1.0","to":"3.2.0","loc":12811,"days":241.93,"loc_per_day":53.0,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":105453.0,"index":0.114,"count:narrated_steps":5.0,"per_kloc:narrated_steps":0.047,"files:narrated_steps":2.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":14.0,"per_kloc:emoji_in_code":0.133,"files:emoji_in_code":11.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: // STEP 0: Search HostFxr","ref":"src/BD.WTTS.Client.AppHost/Program.cs:308","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Program.cs#L308","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // STEP 1: Load HostFxr and get exported hosting functions","ref":"src/BD.WTTS.Client.AppHost/Program.cs:462","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Program.cs#L462","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // STEP 2: Initialize and start the .NET Core runtime","ref":"src/BD.WTTS.Client.AppHost/Program.cs:484","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Program.cs#L484","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // STEP 3: Load managed assembly and get function pointer to a managed method","ref":"src/BD.WTTS.Client.AppHost/Program.cs:541","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Program.cs#L541","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, try to get the signature from the catalog signature APIs.","ref":"src/BD.WTTS.Client.Tools.Publish/PowerShell/System.Management.Automation/security/Authenticode.cs:283","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Tools.Publish/PowerShell/System.Management.Automation/security/Authenticode.cs#L283","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":3.0,"secrets_low_confidence":7.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 931d5654d6); removed from the current tree but still retrievable","path":"src/BD.WTTS.Client/Services/Implementation/Steam/SteamGridDBWebApiServiceImpl.cs","line":8,"fingerprint":"931d5654d6d73d6b7850d9c357a1cef46a7af9dd:src/BD.WTTS.Client/Services/Implementation/Steam/SteamGridDBWebApiServiceImpl.cs:generic-api-key:8"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit add400fbae); removed from the current tree but still retrievable","path":"src/ST.Client/Services/Implementation/SteamGridDBWebApiServiceImpl.cs","line":13,"fingerprint":"add400fbae3904c7c54b90ccf35b0823b6efa050:src/ST.Client/Services/Implementation/SteamGridDBWebApiServiceImpl.cs:generic-api-key:13"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit a04b041760); removed from the current tree but still retrievable","path":"Web/uploads/js/steamvac/1.5.js","line":24,"fingerprint":"a04b04176050b532f28143b98db0eb745a5f2ff5:Web/uploads/js/steamvac/1.5.js:generic-api-key:24"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit a04b041760); removed from the current tree but still retrievable","path":"Web/app.8ca12835.js","line":169,"fingerprint":"a04b04176050b532f28143b98db0eb745a5f2ff5:Web/app.8ca12835.js:generic-api-key:169"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit fdb652f09c); removed from the current tree but still retrievable","path":"src/ST.Blazor.BackManage/Client/wwwroot/data/menu.json","line":138,"fingerprint":"fdb652f09cc1e9aa3c40323dbc931a1019d5f132:src/ST.Blazor.BackManage/Client/wwwroot/data/menu.json:generic-api-key:138"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 798355e342); removed from the current tree but still retrievable","path":"references/Titanium-Web-Proxy/docs/api/Titanium.Web.Proxy.Network.DefaultCertificateDiskCache.html","line":305,"fingerprint":"798355e34243bc703e153468900fe6d240a64e4f:references/Titanium-Web-Proxy/docs/api/Titanium.Web.Proxy.Network.DefaultCertificateDiskCache.html:generic-api-key:305"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 798355e342); removed from the current tree but still retrievable","path":"references/Titanium-Web-Proxy/src/Titanium.Web.Proxy/Certificates/DefaultCertificateDiskCache.cs","line":22,"fingerprint":"798355e34243bc703e153468900fe6d240a64e4f:references/Titanium-Web-Proxy/src/Titanium.Web.Proxy/Certificates/DefaultCertificateDiskCache.cs:generic-api-key:22"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 798355e342); removed from the current tree but still retrievable","path":"references/Titanium-Web-Proxy/src/Titanium.Web.Proxy/Certificates/ICertificateCache.cs","line":15,"fingerprint":"798355e34243bc703e153468900fe6d240a64e4f:references/Titanium-Web-Proxy/src/Titanium.Web.Proxy/Certificates/ICertificateCache.cs:generic-api-key:15"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 798355e342); removed from the current tree but still retrievable","path":"references/Titanium-Web-Proxy/docs/index.json","line":305,"fingerprint":"798355e34243bc703e153468900fe6d240a64e4f:references/Titanium-Web-Proxy/docs/index.json:generic-api-key:305"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 798355e342); removed from the current tree but still retrievable","path":"references/Titanium-Web-Proxy/docs/api/Titanium.Web.Proxy.Network.ICertificateCache.html","line":275,"fingerprint":"798355e34243bc703e153468900fe6d240a64e4f:references/Titanium-Web-Proxy/docs/api/Titanium.Web.Proxy.Network.ICertificateCache.html:generic-api-key:275"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"findings_high":0.0,"findings_medium":2.0,"findings_low":0.0,"weighted_findings":1.2,"scanned_lines":118735.0,"parse_errors":19.0},"findings":[{"rule_id":"opengrep/csharp.lang.security.filesystem.unsafe-path-combine","severity":"medium","message":"String argument rootPublicPath is used to read or write data from a file via Path.Combine without direct sanitization via Path.GetFileName. If the path is user-supplied data this can lead to path traversal. [confidence medium]","path":"src/BD.WTTS.Client.Tools.Publish/Helpers/MSIXHelper.cs","line":251,"fingerprint":"csharp.lang.security.filesystem.unsafe-path-combine:src/BD.WTTS.Client.Tools.Publish/Helpers/MSIXHelper.cs:251"},{"rule_id":"opengrep/csharp.lang.security.filesystem.unsafe-path-combine","severity":"medium","message":"String argument dirPath is used to read or write data from a file via Path.Combine without direct sanitization via Path.GetFileName. If the path is user-supplied data this can lead to path traversal. [confidence medium]","path":"src/BD.WTTS.Client.Tools.Publish/Helpers/MSIXHelper.cs","line":274,"fingerprint":"csharp.lang.security.filesystem.unsafe-path-combine:src/BD.WTTS.Client.Tools.Publish/Helpers/MSIXHelper.cs:274"}],"evidence":[],"data":{"rulesets":["csharp","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":4.0,"findings":72.0,"findings_high":24.0,"findings_medium":13.0,"findings_low":35.0,"penalty":316.2},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":26,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:26"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":32,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:32"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":66,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:66"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":134,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:134"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":142,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:142"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":150,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:150"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":158,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:158"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":166,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:166"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":174,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:174"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":182,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:182"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/dotnet.yml","line":190,"fingerprint":"unpinned-uses:.github/workflows/dotnet.yml:190"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":31,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:31"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":68,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:68"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":76,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:76"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":116,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:116"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":258,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:258"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/publish.yml","line":262,"fingerprint":"unpinned-uses:.github/workflows/publish.yml:262"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/sync-gitee.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/sync-gitee.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/xamarin.yml","line":21,"fingerprint":"unpinned-uses:.github/workflows/xamarin.yml:21"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/xamarin.yml","line":27,"fingerprint":"unpinned-uses:.github/workflows/xamarin.yml:27"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/xamarin.yml","line":33,"fingerprint":"unpinned-uses:.github/workflows/xamarin.yml:33"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/xamarin.yml","line":57,"fingerprint":"unpinned-uses:.github/workflows/xamarin.yml:57"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/xamarin.yml","line":66,"fingerprint":"unpinned-uses:.github/workflows/xamarin.yml:66"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":8,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:8"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":17,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:17"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/dotnet.yml","line":25,"fingerprint":"artipacked:.github/workflows/dotnet.yml:25"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/dotnet.yml","line":64,"fingerprint":"artipacked:.github/workflows/dotnet.yml:64"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/dotnet.yml","line":13,"fingerprint":"excessive-permissions:.github/workflows/dotnet.yml:13"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/publish.yml","line":24,"fingerprint":"artipacked:.github/workflows/publish.yml:24"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/publish.yml","line":66,"fingerprint":"artipacked:.github/workflows/publish.yml:66"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/publish.yml","line":74,"fingerprint":"artipacked:.github/workflows/publish.yml:74"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/publish.yml","line":1,"fingerprint":"excessive-permissions:.github/workflows/publish.yml:1"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/publish.yml","line":14,"fingerprint":"excessive-permissions:.github/workflows/publish.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/sync-gitee.yml","line":12,"fingerprint":"excessive-permissions:.github/workflows/sync-gitee.yml:12"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/xamarin.yml","line":20,"fingerprint":"artipacked:.github/workflows/xamarin.yml:20"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/xamarin.yml","line":10,"fingerprint":"excessive-permissions:.github/workflows/xamarin.yml:10"},{"rule_id":"zizmor/obfuscation","severity":"low","message":"obfuscated usage of GitHub Actions features [confidence high]","path":".github/workflows/publish.yml","line":310,"fingerprint":"obfuscation:.github/workflows/publish.yml:310"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":124,"fingerprint":"template-injection:.github/workflows/publish.yml:124"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":134,"fingerprint":"template-injection:.github/workflows/publish.yml:134"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":135,"fingerprint":"template-injection:.github/workflows/publish.yml:135"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":142,"fingerprint":"template-injection:.github/workflows/publish.yml:142"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":143,"fingerprint":"template-injection:.github/workflows/publish.yml:143"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":150,"fingerprint":"template-injection:.github/workflows/publish.yml:150"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":151,"fingerprint":"template-injection:.github/workflows/publish.yml:151"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":158,"fingerprint":"template-injection:.github/workflows/publish.yml:158"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":159,"fingerprint":"template-injection:.github/workflows/publish.yml:159"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":166,"fingerprint":"template-injection:.github/workflows/publish.yml:166"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":167,"fingerprint":"template-injection:.github/workflows/publish.yml:167"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":174,"fingerprint":"template-injection:.github/workflows/publish.yml:174"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":175,"fingerprint":"template-injection:.github/workflows/publish.yml:175"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":182,"fingerprint":"template-injection:.github/workflows/publish.yml:182"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":183,"fingerprint":"template-injection:.github/workflows/publish.yml:183"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":190,"fingerprint":"template-injection:.github/workflows/publish.yml:190"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":191,"fingerprint":"template-injection:.github/workflows/publish.yml:191"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":198,"fingerprint":"template-injection:.github/workflows/publish.yml:198"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":199,"fingerprint":"template-injection:.github/workflows/publish.yml:199"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":206,"fingerprint":"template-injection:.github/workflows/publish.yml:206"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":207,"fingerprint":"template-injection:.github/workflows/publish.yml:207"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":214,"fingerprint":"template-injection:.github/workflows/publish.yml:214"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":215,"fingerprint":"template-injection:.github/workflows/publish.yml:215"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":222,"fingerprint":"template-injection:.github/workflows/publish.yml:222"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":223,"fingerprint":"template-injection:.github/workflows/publish.yml:223"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":230,"fingerprint":"template-injection:.github/workflows/publish.yml:230"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":231,"fingerprint":"template-injection:.github/workflows/publish.yml:231"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":238,"fingerprint":"template-injection:.github/workflows/publish.yml:238"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":239,"fingerprint":"template-injection:.github/workflows/publish.yml:239"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":246,"fingerprint":"template-injection:.github/workflows/publish.yml:246"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":247,"fingerprint":"template-injection:.github/workflows/publish.yml:247"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":254,"fingerprint":"template-injection:.github/workflows/publish.yml:254"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/publish.yml","line":255,"fingerprint":"template-injection:.github/workflows/publish.yml:255"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/publish.yml","line":262,"fingerprint":"superfluous-actions:.github/workflows/publish.yml:262"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":1.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.025,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":44.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release 3.2.0 ships Steam++_v3.2.0_linux_arm64.tgz (2448 downloads)","ref":"Steam++_v3.2.0_linux_arm64.tgz","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_linux_arm64.tgz","weight":0.0},{"kind":"binary-release-asset","description":"release 3.2.0 ships Steam++_v3.2.0_linux_x64.tgz (1915 downloads)","ref":"Steam++_v3.2.0_linux_x64.tgz","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_linux_x64.tgz","weight":0.0},{"kind":"binary-release-asset","description":"release 3.2.0 ships Steam++_v3.2.0_macos.dmg (21696 downloads)","ref":"Steam++_v3.2.0_macos.dmg","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_macos.dmg","weight":0.0},{"kind":"binary-release-asset","description":"release 3.2.0 ships Steam++_v3.2.0_win_x64.7z (6379 downloads)","ref":"Steam++_v3.2.0_win_x64.7z","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_win_x64.7z","weight":0.0},{"kind":"binary-release-asset","description":"release 3.2.0 ships Steam++_v3.2.0_win_x64.exe (21720 downloads)","ref":"Steam++_v3.2.0_win_x64.exe","url":"https://github.com/BeyondDimension/SteamTools/releases/download/3.2.0/Steam%2B%2B_v3.2.0_win_x64.exe","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":3527.0,"function_nloc":50165.0,"mean_ccn":3.23,"p90_ccn":7.0,"complex_functions":70.0,"long_functions":27.0,"many_param_functions":10.0,"risky_nloc_share":0.1555},"findings":[],"evidence":[{"kind":"complex-function","description":"AboutAppInfoPopup::GetInfoString in src/AboutAppInfoPopup.cs: complexity 81, 387 lines","ref":"src/AboutAppInfoPopup.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/AboutAppInfoPopup.cs#L40","weight":1.0},{"kind":"complex-function","description":"ProxyService::StartProxyServiceCoreAsync in src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs: complexity 73, 242 lines","ref":"src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs#L33","weight":1.0},{"kind":"complex-function","description":"AboutPageViewModel::GetInfoString in src/BD.WTTS.Client/UI/ViewModels/Pages/AboutPageViewModel.EasterEgg.cs: complexity 70, 323 lines","ref":"src/BD.WTTS.Client/UI/ViewModels/Pages/AboutPageViewModel.EasterEgg.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client/UI/ViewModels/Pages/AboutPageViewModel.EasterEgg.cs#L46","weight":1.0},{"kind":"complex-function","description":"Program::MainCore in src/BD.WTTS.Client.AppHost/Program.cs: complexity 69, 251 lines","ref":"src/BD.WTTS.Client.AppHost/Program.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Program.cs#L224","weight":1.0},{"kind":"complex-function","description":"Startup::StartAsync in src/BD.WTTS.Client/Startup/Startup.cs: complexity 65, 242 lines","ref":"src/BD.WTTS.Client/Startup/Startup.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client/Startup/Startup.cs#L197","weight":1.0},{"kind":"complex-function","description":"Startup::RunUIApplication in src/BD.WTTS.Client/Startup/Startup.Host.cs: complexity 60, 187 lines","ref":"src/BD.WTTS.Client/Startup/Startup.Host.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client/Startup/Startup.Host.cs#L7","weight":1.0},{"kind":"complex-function","description":"HostsFileServiceImpl::HandleHosts in src/BD.WTTS.Client/Services.Implementation/Net/HostsFileServiceImpl.cs: complexity 54, 212 lines","ref":"src/BD.WTTS.Client/Services.Implementation/Net/HostsFileServiceImpl.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client/Services.Implementation/Net/HostsFileServiceImpl.cs#L378","weight":0.9},{"kind":"complex-function","description":"Startup::ConfigureCommands in src/BD.WTTS.Client/Startup/Startup.Commands.cs: complexity 47, 411 lines","ref":"src/BD.WTTS.Client/Startup/Startup.Commands.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client/Startup/Startup.Commands.cs#L14","weight":0.7833333333333333},{"kind":"complex-function","description":"Handler in src/BD.WTTS.Client.Tools.Publish/Commands/IDotNetPublishCommand.cs: complexity 42, 389 lines","ref":"src/BD.WTTS.Client.Tools.Publish/Commands/IDotNetPublishCommand.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Tools.Publish/Commands/IDotNetPublishCommand.cs#L155","weight":0.7},{"kind":"complex-function","description":"MainAsync in src/BD.WTTS.Client.IPC/Services/IPCSubProcessService.cs: complexity 41, 148 lines","ref":"src/BD.WTTS.Client.IPC/Services/IPCSubProcessService.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.IPC/Services/IPCSubProcessService.cs#L75","weight":0.6833333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":76508.0,"duplicated_lines":4656.0,"duplicated_share":0.0609,"files":980.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: src/AboutAppInfoPopup.cs:51 and src/BD.WTTS.Client/UI/ViewModels/Pages/AboutPageViewModel.EasterEgg.cs:56","ref":"src/AboutAppInfoPopup.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/AboutAppInfoPopup.cs#L51","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/Avalonia.Skia.Internals/ImmutableBitmap.cs:27 and src/Avalonia.Skia.Internals/ImmutableBitmap.cs:94","ref":"src/Avalonia.Skia.Internals/ImmutableBitmap.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/Avalonia.Skia.Internals/ImmutableBitmap.cs#L27","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/Avalonia.Skia.Internals/SkiaSharpHelpers.cs:22 and src/Avalonia.Skia.Internals/SkiaSharpHelpers.cs:62","ref":"src/Avalonia.Skia.Internals/SkiaSharpHelpers.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/Avalonia.Skia.Internals/SkiaSharpHelpers.cs#L22","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.AppHost/MessageBox.cs:35 and src/BD.WTTS.Client.AppHost/MessageBox.cs:48","ref":"src/BD.WTTS.Client.AppHost/MessageBox.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/MessageBox.cs#L35","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.AppHost/Net35.cs:78 and src/BD.WTTS.Client/Startup/Startup.CompatibilityCheck.cs:90","ref":"src/BD.WTTS.Client.AppHost/Net35.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Net35.cs#L78","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.AppHost/Program.cs:100 and src/BD.WTTS.Client/Startup/Startup.CompatibilityCheck.cs:66","ref":"src/BD.WTTS.Client.AppHost/Program.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.AppHost/Program.cs#L100","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.Avalonia/Extensions/ServiceCollection/ServiceCollectionExtensions.TryAddAvaloniaThemeService.cs:1 and src/BD.WTTS.Client.Avalonia/Extensions/ServiceCollection/ServiceCollectionExtensions.TryAddAvaloniaToastService.cs:1","ref":"src/BD.WTTS.Client.Avalonia/Extensions/ServiceCollection/ServiceCollectionExtensions.TryAddAvaloniaThemeService.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Avalonia/Extensions/ServiceCollection/ServiceCollectionExtensions.TryAddAvaloniaThemeService.cs#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Views/Windows/AvaloniaWindowManagerImpl.cs:84 and src/BD.WTTS.Client/Services/UI/Views/Windows/IWindowManager.cs:12","ref":"src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Views/Windows/AvaloniaWindowManagerImpl.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Views/Windows/AvaloniaWindowManagerImpl.cs#L84","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs:29 and src/BD.WTTS.Client/Models/AvaloniaFilePickerFileTypeFilter.cs:24","ref":"src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs#L29","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs:269 and src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs:307","ref":"src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs","url":"https://github.com/BeyondDimension/SteamTools/blob/fc6f13d01cfe5d470ca87645a33e5f528e9248c0/src/BD.WTTS.Client.Avalonia/Services.Implementation/UI/Widgets/AvaloniaFilePickerPlatformService.cs#L269","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":11.0,"weighted_findings":2.75,"scanned_lines":118735.0,"category:best-practice":11.0},"findings":[{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Middleware/RequestLoggingMiddleware.cs","line":49,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Middleware/RequestLoggingMiddleware.cs:49"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Middleware/RequestLoggingMiddleware.cs","line":53,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Middleware/RequestLoggingMiddleware.cs:53"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Middleware/RequestLoggingMiddleware.cs","line":57,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/HttpServer/Middleware/RequestLoggingMiddleware.cs:57"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/PacketIntercept/DnsInterceptor.cs","line":156,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/PacketIntercept/DnsInterceptor.cs:156"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/PacketIntercept/TcpInterceptor.cs","line":49,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/PacketIntercept/TcpInterceptor.cs:49"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/PacketIntercept/TcpInterceptor.cs","line":53,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.Accelerator.ReverseProxy/Services.Implementation/PacketIntercept/TcpInterceptor.cs:53"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs","line":15,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs:15"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs","line":25,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs:25"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs","line":35,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs:35"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs","line":40,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs:40"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs","line":45,"fingerprint":"csharp.lang.best-practice.structured-logging:src/BD.WTTS.Client.Plugins.ArchiSteamFarmPlus/_/ArchiSteamFarm/NLog/ArchiLogger.cs:45"}],"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":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":119137.0,"test_ratio":0.0,"ci_files":4.0,"cochange_share":0.0,"cochange_commits":227.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/dotnet.yml","ref":".github/workflows/dotnet.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/publish.yml","ref":".github/workflows/publish.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/sync-gitee.yml","ref":".github/workflows/sync-gitee.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/xamarin.yml","ref":".github/workflows/xamarin.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (dotnet test, unittest)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["dotnet test","unittest"],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":97.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":9366.0,"other_lines":109771.0,"files_blamed":980.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":11.0,"quality:other_per_kloc":0.1,"quality:ratio":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":2.0,"security:other_per_kloc":0.018,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}