{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:07.900904Z","repo":{"ref":{"host":"github.com","owner":"statusengine","name":"interface"},"default_branch":"main","clone_url":"https://github.com/statusengine/interface.git","html_url":"https://github.com/statusengine/interface","description":"Angular based Web Interface for Statusengine","stars":16,"forks":6,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":10259,"primary_language":"PHP","license_spdx":"MIT","created_at":"2017-02-08T18:17:45Z","pushed_at":"2026-11-13T13:38:42Z","security_policy_url":"https://github.com/statusengine/interface/security/policy","distribution":{"owner_created_at":"2017-01-09T14:15:28Z","owner_type":"Organization","release_assets":[{"name":"seid_v4.0.0_linux_amd64.tar.gz","size":4229115,"download_count":7,"release_tag":"v4.0.0","url":"https://github.com/statusengine/interface/releases/download/v4.0.0/seid_v4.0.0_linux_amd64.tar.gz"},{"name":"seid_v4.0.0_linux_arm64.tar.gz","size":3851913,"download_count":2,"release_tag":"v4.0.0","url":"https://github.com/statusengine/interface/releases/download/v4.0.0/seid_v4.0.0_linux_arm64.tar.gz"},{"name":"SHA256SUMS","size":194,"download_count":6,"release_tag":"v4.0.0","url":"https://github.com/statusengine/interface/releases/download/v4.0.0/SHA256SUMS"}]}},"commit_sha":"f5e21cb07a6efc81eb28cf3f9189f84fd488567c","profile":{"lines_by_language":{"Go":12985,"TypeScript":8475,"Shell":494,"JavaScript":389,"Python":85,"SQL":65},"files_by_category":{"source":134,"test":27,"other":25,"config":24,"docs":11,"generated":2,"binary":1},"source_lines":17886,"test_lines":4607},"pillars":{"ai_provenance":{"score":100.0,"confidence":0.77,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":1.0,"suspected_share":0.0,"estimated_share":1.0,"ai_artifacts":1.0,"flagged_work_units":2.0,"flagged_releases":0.0,"style_index":0.0},"summary":"Explicit AI attribution on 100% of first-party code added; an estimated 100% including velocity signals."},"quality":{"score":75.1,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":94.9,"duplication":71.9,"lint":79.1,"testing":57.9,"docs":65.0,"type_safety":99.3,"process":null},"summary":"Code quality is adequate: test-to-source ratio 0.26, no CI test run detected; 2% of function code in complex or long functions; 5% duplicated lines. Weakest area: testing."},"security":{"score":58.3,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":87.0,"dependencies":17.1,"ci_actions":17.6,"posture":40.0,"scorecard":null},"summary":"Security posture is weak: 51 known vulnerabilities in 18 dependencies; 2 high-severity SAST findings; 9 high-severity workflow issues. Weakest area: dependencies."}},"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":26.0,"checked":26.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":29.0,"attributed_commits":28.0,"attributed_commit_share":0.9655172413793104,"effective_loc":23214.0,"attributed_loc":23214.0,"attributed_loc_share":1.0,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 28 attributed commits, 23,214 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f5e21cb07a6efc81eb28cf3f9189f84fd488567c","url":"https://github.com/statusengine/interface/commit/f5e21cb07a6efc81eb28cf3f9189f84fd488567c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fa12e9525f777d755e89ef09b0ad31ab36526c28","url":"https://github.com/statusengine/interface/commit/fa12e9525f777d755e89ef09b0ad31ab36526c28","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"319e2abcf1fc232f11b19f899631405c2f888c1e","url":"https://github.com/statusengine/interface/commit/319e2abcf1fc232f11b19f899631405c2f888c1e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a22210bee4f6dd884260c1e8eba6b57367ce6ff2","url":"https://github.com/statusengine/interface/commit/a22210bee4f6dd884260c1e8eba6b57367ce6ff2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"36340b92d10d0fd1dd06530008e4f06da9ca76ce","url":"https://github.com/statusengine/interface/commit/36340b92d10d0fd1dd06530008e4f06da9ca76ce","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b2045d6c2f243604f36e08e9a86d2dd348d68726","url":"https://github.com/statusengine/interface/commit/b2045d6c2f243604f36e08e9a86d2dd348d68726","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c9effaece77b750e090cfde7023b65031dbb35cb","url":"https://github.com/statusengine/interface/commit/c9effaece77b750e090cfde7023b65031dbb35cb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c2757f59fc822c4959b27961e1ddbcd51fb3f586","url":"https://github.com/statusengine/interface/commit/c2757f59fc822c4959b27961e1ddbcd51fb3f586","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e60b081a2cb5f9449ea0b5b640cc44243592c3dc","url":"https://github.com/statusengine/interface/commit/e60b081a2cb5f9449ea0b5b640cc44243592c3dc","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f3cdf4a63229ca92a7dc74124f93954659081f28","url":"https://github.com/statusengine/interface/commit/f3cdf4a63229ca92a7dc74124f93954659081f28","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2cf2b8c818d0f5bab7fc361b64bc7cace03e9b4f","url":"https://github.com/statusengine/interface/commit/2cf2b8c818d0f5bab7fc361b64bc7cace03e9b4f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9d21c1b9e5e907ec1dad6c585ea20249b8a6f297","url":"https://github.com/statusengine/interface/commit/9d21c1b9e5e907ec1dad6c585ea20249b8a6f297","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6bf2cf77321d701500d07a9a7cfe89680e9117a8","url":"https://github.com/statusengine/interface/commit/6bf2cf77321d701500d07a9a7cfe89680e9117a8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3e110a6c1b403d184ef905bbbbfcff2857e654da","url":"https://github.com/statusengine/interface/commit/3e110a6c1b403d184ef905bbbbfcff2857e654da","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"1b897783c226ff60adf45ecba12043977cfbd9c1","url":"https://github.com/statusengine/interface/commit/1b897783c226ff60adf45ecba12043977cfbd9c1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7c5c219e2ba9505ce68b9bb408ee8cc734300010","url":"https://github.com/statusengine/interface/commit/7c5c219e2ba9505ce68b9bb408ee8cc734300010","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8314b6cc8c9ed8f3720eaa68100e895579438365","url":"https://github.com/statusengine/interface/commit/8314b6cc8c9ed8f3720eaa68100e895579438365","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"71862d2ffba5607129d23c727f10fe1302e29cff","url":"https://github.com/statusengine/interface/commit/71862d2ffba5607129d23c727f10fe1302e29cff","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d295c2b369bd84ef50eecf8fa4efc2bf2dc53c8d","url":"https://github.com/statusengine/interface/commit/d295c2b369bd84ef50eecf8fa4efc2bf2dc53c8d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4cc755591f26fb0e0842cdcfb08cdfed4ca0735c","url":"https://github.com/statusengine/interface/commit/4cc755591f26fb0e0842cdcfb08cdfed4ca0735c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2ea80027790528f8123cc7939d255f0d375a4c01","url":"https://github.com/statusengine/interface/commit/2ea80027790528f8123cc7939d255f0d375a4c01","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"735f5ac42260a69c5e7dc9f982fb2a13d0971952","url":"https://github.com/statusengine/interface/commit/735f5ac42260a69c5e7dc9f982fb2a13d0971952","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ac8b61f6a50363d1efd8a43ffd29c490af9cc013","url":"https://github.com/statusengine/interface/commit/ac8b61f6a50363d1efd8a43ffd29c490af9cc013","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"55f933d1c31e9c1b4250fb0873bcc9b296a65380","url":"https://github.com/statusengine/interface/commit/55f933d1c31e9c1b4250fb0873bcc9b296a65380","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9e0eff273bffcc8fbe88aa79f6d05f2d0d3c7bc5","url":"https://github.com/statusengine/interface/commit/9e0eff273bffcc8fbe88aa79f6d05f2d0d3c7bc5","weight":0.9}],"data":{"attributed_loc_by_commit":{"b07e2faae13b74a43ece2ca215db3a0e8574587c":5166,"700c982539d6104fdd2001419e468aa1ba6885d5":2814,"67e360228d5ea7f34aeee362bba059d4deca6293":2632,"9e0eff273bffcc8fbe88aa79f6d05f2d0d3c7bc5":18,"55f933d1c31e9c1b4250fb0873bcc9b296a65380":1493,"ac8b61f6a50363d1efd8a43ffd29c490af9cc013":1075,"735f5ac42260a69c5e7dc9f982fb2a13d0971952":2436,"2ea80027790528f8123cc7939d255f0d375a4c01":1258,"4cc755591f26fb0e0842cdcfb08cdfed4ca0735c":628,"d295c2b369bd84ef50eecf8fa4efc2bf2dc53c8d":1162,"71862d2ffba5607129d23c727f10fe1302e29cff":390,"8314b6cc8c9ed8f3720eaa68100e895579438365":376,"7c5c219e2ba9505ce68b9bb408ee8cc734300010":577,"1b897783c226ff60adf45ecba12043977cfbd9c1":183,"3e110a6c1b403d184ef905bbbbfcff2857e654da":386,"6bf2cf77321d701500d07a9a7cfe89680e9117a8":686,"9d21c1b9e5e907ec1dad6c585ea20249b8a6f297":1073,"2cf2b8c818d0f5bab7fc361b64bc7cace03e9b4f":0,"f3cdf4a63229ca92a7dc74124f93954659081f28":391,"e60b081a2cb5f9449ea0b5b640cc44243592c3dc":0,"c2757f59fc822c4959b27961e1ddbcd51fb3f586":0,"c9effaece77b750e090cfde7023b65031dbb35cb":14,"36340b92d10d0fd1dd06530008e4f06da9ca76ce":0,"b2045d6c2f243604f36e08e9a86d2dd348d68726":177,"a22210bee4f6dd884260c1e8eba6b57367ce6ff2":0,"319e2abcf1fc232f11b19f899631405c2f888c1e":168,"fa12e9525f777d755e89ef09b0ad31ab36526c28":111,"f5e21cb07a6efc81eb28cf3f9189f84fd488567c":0},"tools":{"claude-code":{"name":"Claude Code","commits":28,"loc":23214,"first_seen":1789900061,"last_seen":1790098260}},"monthly":{"2026-09":{"loc":23214,"attributed_loc":23214}}},"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":1789898181.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1789898181}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":5.0,"flagged_units":2.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":15234.0,"flagged_loc":13237.0,"flagged_loc_share":0.868911645004595,"max_loc_per_hour":1858.38879322381,"median_loc_per_hour":396.5480461553379,"pr_timed_units":0.0,"excluded_import_loc":7980.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"11,092 lines of first-party code in ~6.0h (1,858 lines/hour, 9 commit session)","ref":"71862d2ffba5607129d23c727f10fe1302e29cff","url":"https://github.com/statusengine/interface/commit/71862d2ffba5607129d23c727f10fe1302e29cff","weight":0.5575166379671429},{"kind":"velocity-burst","description":"2,145 lines of first-party code in ~1.9h (1,143 lines/hour, 3 commit session)","ref":"9d21c1b9e5e907ec1dad6c585ea20249b8a6f297","url":"https://github.com/statusengine/interface/commit/9d21c1b9e5e907ec1dad6c585ea20249b8a6f297","weight":0.3429459659511473}],"data":{"flagged_loc_by_commit":{"67e360228d5ea7f34aeee362bba059d4deca6293":2632,"9e0eff273bffcc8fbe88aa79f6d05f2d0d3c7bc5":18,"55f933d1c31e9c1b4250fb0873bcc9b296a65380":1493,"ac8b61f6a50363d1efd8a43ffd29c490af9cc013":1075,"735f5ac42260a69c5e7dc9f982fb2a13d0971952":2436,"2ea80027790528f8123cc7939d255f0d375a4c01":1258,"4cc755591f26fb0e0842cdcfb08cdfed4ca0735c":628,"d295c2b369bd84ef50eecf8fa4efc2bf2dc53c8d":1162,"71862d2ffba5607129d23c727f10fe1302e29cff":390,"3e110a6c1b403d184ef905bbbbfcff2857e654da":386,"6bf2cf77321d701500d07a9a7cfe89680e9117a8":686,"9d21c1b9e5e907ec1dad6c585ea20249b8a6f297":1073},"excluded_import_commits":["700c982539d6104fdd2001419e468aa1ba6885d5","b07e2faae13b74a43ece2ca215db3a0e8574587c"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":0.0,"flagged_releases":0.0,"max_loc_per_day":0.0},"findings":[],"evidence":[],"data":{"releases":[]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":17886.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"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":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":16.0,"findings_high":2.0,"findings_medium":14.0,"findings_low":0.0,"weighted_findings":7.1,"scanned_lines":17821.0,"parse_errors":3.0},"findings":[{"rule_id":"opengrep/javascript.lang.security.detect-insecure-websocket","severity":"high","message":"Insecure WebSocket Detected. WebSocket Secure (wss) should be used for all WebSocket connections. [confidence low]","path":"deploy/docker-compose.yml","line":47,"fingerprint":"javascript.lang.security.detect-insecure-websocket:deploy/docker-compose.yml:47"},{"rule_id":"opengrep/go.lang.security.filepath-clean-misuse","severity":"high","message":"`Clean` is not intended to sanitize against path traversal attacks. This function is for finding the shortest path name equivalent to the given input. Using `Clean` to sanitize file reads may expose this application to path traversal attacks, where an attacker could access arbitrary files on the ser [confidence medium]","path":"internal/httpapi/ui.go","line":60,"fingerprint":"go.lang.security.filepath-clean-misuse:internal/httpapi/ui.go:60"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/commands/audit.go","line":69,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/commands/audit.go:69"},{"rule_id":"opengrep/go.lang.security.audit.xss.no-fprintf-to-responsewriter","severity":"medium","message":"Detected 'Fprintf' or similar writing to 'http.ResponseWriter'. This bypasses HTML escaping that prevents cross-site scripting vulnerabilities. Instead, use the 'html/template' package to render data to users. [confidence low]","path":"internal/events/sse.go","line":116,"fingerprint":"go.lang.security.audit.xss.no-fprintf-to-responsewriter:internal/events/sse.go:116"},{"rule_id":"opengrep/go.lang.security.audit.crypto.math-random-used","severity":"medium","message":"Do not use `math/rand`. Use `crypto/rand` instead. [confidence medium]","path":"internal/events/worker.go","line":9,"fingerprint":"go.lang.security.audit.crypto.math-random-used:internal/events/worker.go:9"},{"rule_id":"opengrep/go.lang.security.shared-url-struct-mutation","severity":"medium","message":"Shared URL struct may have been accidentally mutated. Ensure that this behavior is intended. [confidence low]","path":"internal/events/worker.go","line":225,"fingerprint":"go.lang.security.shared-url-struct-mutation:internal/events/worker.go:225"},{"rule_id":"opengrep/go.lang.security.audit.net.cookie-missing-secure","severity":"medium","message":"A session cookie was detected without setting the 'Secure' flag. The 'secure' flag for cookies prevents the client from transmitting the cookie over insecure channels such as HTTP. Set the 'Secure' flag by setting 'Secure' to 'true' in the Options struct. [confidence medium]","path":"internal/httpapi/handlers_auth.go","line":124,"fingerprint":"go.lang.security.audit.net.cookie-missing-secure:internal/httpapi/handlers_auth.go:124"},{"rule_id":"opengrep/go.lang.security.audit.net.cookie-missing-secure","severity":"medium","message":"A session cookie was detected without setting the 'Secure' flag. The 'secure' flag for cookies prevents the client from transmitting the cookie over insecure channels such as HTTP. Set the 'Secure' flag by setting 'Secure' to 'true' in the Options struct. [confidence medium]","path":"internal/httpapi/handlers_auth.go","line":136,"fingerprint":"go.lang.security.audit.net.cookie-missing-secure:internal/httpapi/handlers_auth.go:136"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/hosts.go","line":77,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/hosts.go:77"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/logentries.go","line":56,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/logentries.go:56"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/problems.go","line":169,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/problems.go:169"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/services.go","line":67,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/services.go:67"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/summary.go","line":141,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/summary.go:141"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/summary.go","line":171,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/summary.go:171"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/summary.go","line":225,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/summary.go:225"},{"rule_id":"opengrep/go.lang.security.audit.database.string-formatted-query","severity":"medium","message":"String-formatted SQL query detected. This could lead to SQL injection if the string is not sanitized properly. Audit this call to ensure the SQL is not manipulable by external data. [confidence low]","path":"internal/repository/mysql/summary.go","line":272,"fingerprint":"go.lang.security.audit.database.string-formatted-query:internal/repository/mysql/summary.go:272"}],"evidence":[],"data":{"rulesets":["go","typescript","javascript","bash","python","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":18.0,"vulnerabilities":51.0,"vulns_critical":1.0,"vulns_high":18.0,"vulns_medium":27.0,"vulns_low":4.0,"vulns_unknown":1.0,"penalty":106.0},"findings":[{"rule_id":"osv/GHSA-67c8-pqhq-4rmx","severity":"critical","message":"piscina@5.2.0 (npm) is affected by GHSA-67c8-pqhq-4rmx","path":"frontend/package-lock.json","line":null,"fingerprint":"piscina@5.2.0 (npm):GHSA-67c8-pqhq-4rmx"},{"rule_id":"osv/GHSA-57xq-rjx2-v5xh","severity":"high","message":"@angular/router@21.2.23 (npm) is affected by GHSA-57xq-rjx2-v5xh","path":"frontend/package-lock.json","line":null,"fingerprint":"@angular/router@21.2.23 (npm):GHSA-57xq-rjx2-v5xh"},{"rule_id":"osv/GHSA-62vg-58rm-qff7","severity":"high","message":"@angular/router@21.2.23 (npm) is affected by GHSA-62vg-58rm-qff7","path":"frontend/package-lock.json","line":null,"fingerprint":"@angular/router@21.2.23 (npm):GHSA-62vg-58rm-qff7"},{"rule_id":"osv/GHSA-ff3f-86qr-9cv3","severity":"high","message":"@angular/router@21.2.23 (npm) is affected by GHSA-ff3f-86qr-9cv3","path":"frontend/package-lock.json","line":null,"fingerprint":"@angular/router@21.2.23 (npm):GHSA-ff3f-86qr-9cv3"},{"rule_id":"osv/GHSA-22jm-h49p-29qw","severity":"high","message":"@modelcontextprotocol/sdk@1.30.0 (npm) is affected by GHSA-22jm-h49p-29qw","path":"frontend/package-lock.json","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.30.0 (npm):GHSA-22jm-h49p-29qw"},{"rule_id":"osv/GHSA-46jr-4wx8-v453","severity":"high","message":"@modelcontextprotocol/sdk@1.30.0 (npm) is affected by GHSA-46jr-4wx8-v453","path":"frontend/package-lock.json","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.30.0 (npm):GHSA-46jr-4wx8-v453"},{"rule_id":"osv/GHSA-6qxp-vccf-f47h","severity":"high","message":"@modelcontextprotocol/sdk@1.30.0 (npm) is affected by GHSA-6qxp-vccf-f47h","path":"frontend/package-lock.json","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.30.0 (npm):GHSA-6qxp-vccf-f47h"},{"rule_id":"osv/GHSA-f897-62hf-6gxq","severity":"high","message":"@modelcontextprotocol/sdk@1.30.0 (npm) is affected by GHSA-f897-62hf-6gxq","path":"frontend/package-lock.json","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.30.0 (npm):GHSA-f897-62hf-6gxq"},{"rule_id":"osv/GHSA-27r3-jxmh-p828","severity":"high","message":"body-parser@2.3.0 (npm) is affected by GHSA-27r3-jxmh-p828","path":"frontend/package-lock.json","line":null,"fingerprint":"body-parser@2.3.0 (npm):GHSA-27r3-jxmh-p828"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"frontend/package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-2m5v-pch6-74hx","severity":"high","message":"undici@6.28.1 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@6.28.1 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@6.28.1 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@6.28.1 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@6.28.1 (npm) is affected by GHSA-xjj6-f33q-929c","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@6.28.1 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-2m5v-pch6-74hx","severity":"high","message":"undici@7.29.1 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-4w7w-5xrc-9h26","severity":"high","message":"undici@7.29.1 (npm) is affected by GHSA-4w7w-5xrc-9h26","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-4w7w-5xrc-9h26"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@7.29.1 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@7.29.1 (npm) is affected by GHSA-xjj6-f33q-929c","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-587h-7wmj-h5pm","severity":"high","message":"vite@7.3.6 (npm) is affected by GHSA-587h-7wmj-h5pm","path":"frontend/package-lock.json","line":null,"fingerprint":"vite@7.3.6 (npm):GHSA-587h-7wmj-h5pm"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@4.3.6 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"frontend/package-lock.json","line":null,"fingerprint":"zod@4.3.6 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-jpvv-r467-5p4w","severity":"medium","message":"@hono/node-server@2.1.1 (npm) is affected by GHSA-jpvv-r467-5p4w","path":"frontend/package-lock.json","line":null,"fingerprint":"@hono/node-server@2.1.1 (npm):GHSA-jpvv-r467-5p4w"},{"rule_id":"osv/GHSA-qv5m-9pm6-hqp3","severity":"medium","message":"@hono/node-server@2.1.1 (npm) is affected by GHSA-qv5m-9pm6-hqp3","path":"frontend/package-lock.json","line":null,"fingerprint":"@hono/node-server@2.1.1 (npm):GHSA-qv5m-9pm6-hqp3"},{"rule_id":"osv/GHSA-rmxm-3fg6-px4f","severity":"medium","message":"@hono/node-server@2.1.1 (npm) is affected by GHSA-rmxm-3fg6-px4f","path":"frontend/package-lock.json","line":null,"fingerprint":"@hono/node-server@2.1.1 (npm):GHSA-rmxm-3fg6-px4f"},{"rule_id":"osv/GHSA-6prh-2h8m-c8cw","severity":"medium","message":"@modelcontextprotocol/sdk@1.30.0 (npm) is affected by GHSA-6prh-2h8m-c8cw","path":"frontend/package-lock.json","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.30.0 (npm):GHSA-6prh-2h8m-c8cw"},{"rule_id":"osv/GHSA-rvq5-wwqv-78pq","severity":"medium","message":"@modelcontextprotocol/sdk@1.30.0 (npm) is affected by GHSA-rvq5-wwqv-78pq","path":"frontend/package-lock.json","line":null,"fingerprint":"@modelcontextprotocol/sdk@1.30.0 (npm):GHSA-rvq5-wwqv-78pq"},{"rule_id":"osv/GHSA-qxg6-89mg-rqv8","severity":"medium","message":"@vitest/mocker@4.1.11 (npm) is affected by GHSA-qxg6-89mg-rqv8","path":"frontend/package-lock.json","line":null,"fingerprint":"@vitest/mocker@4.1.11 (npm):GHSA-qxg6-89mg-rqv8"},{"rule_id":"osv/GHSA-xp26-3454-mjgp","severity":"medium","message":"@vitest/mocker@4.1.11 (npm) is affected by GHSA-xp26-3454-mjgp","path":"frontend/package-lock.json","line":null,"fingerprint":"@vitest/mocker@4.1.11 (npm):GHSA-xp26-3454-mjgp"},{"rule_id":"osv/GHSA-w74x-v6f9-j3xg","severity":"medium","message":"fast-uri@3.1.8 (npm) is affected by GHSA-w74x-v6f9-j3xg","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-w74x-v6f9-j3xg"},{"rule_id":"osv/GHSA-wjr9-j795-jxcr","severity":"medium","message":"fast-uri@3.1.8 (npm) is affected by GHSA-wjr9-j795-jxcr","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-wjr9-j795-jxcr"},{"rule_id":"osv/GHSA-3g3m-2fjr-6pw4","severity":"medium","message":"glob@13.0.6 (npm) is affected by GHSA-3g3m-2fjr-6pw4","path":"frontend/package-lock.json","line":null,"fingerprint":"glob@13.0.6 (npm):GHSA-3g3m-2fjr-6pw4"},{"rule_id":"osv/GHSA-46wx-v44x-9hh2","severity":"medium","message":"hono@4.13.8 (npm) is affected by GHSA-46wx-v44x-9hh2","path":"frontend/package-lock.json","line":null,"fingerprint":"hono@4.13.8 (npm):GHSA-46wx-v44x-9hh2"},{"rule_id":"osv/GHSA-4h7h-rv7c-7m2v","severity":"medium","message":"hono@4.13.8 (npm) is affected by GHSA-4h7h-rv7c-7m2v","path":"frontend/package-lock.json","line":null,"fingerprint":"hono@4.13.8 (npm):GHSA-4h7h-rv7c-7m2v"},{"rule_id":"osv/GHSA-4m76-xfj5-7975","severity":"medium","message":"hono@4.13.8 (npm) is affected by GHSA-4m76-xfj5-7975","path":"frontend/package-lock.json","line":null,"fingerprint":"hono@4.13.8 (npm):GHSA-4m76-xfj5-7975"},{"rule_id":"osv/GHSA-5r4p-p66f-jhc7","severity":"medium","message":"hono@4.13.8 (npm) is affected by GHSA-5r4p-p66f-jhc7","path":"frontend/package-lock.json","line":null,"fingerprint":"hono@4.13.8 (npm):GHSA-5r4p-p66f-jhc7"},{"rule_id":"osv/GHSA-h7mg-cq63-vhpq","severity":"medium","message":"hono@4.13.8 (npm) is affected by GHSA-h7mg-cq63-vhpq","path":"frontend/package-lock.json","line":null,"fingerprint":"hono@4.13.8 (npm):GHSA-h7mg-cq63-vhpq"},{"rule_id":"osv/GHSA-rxp7-6hxx-x8q5","severity":"medium","message":"ip-address@10.7.2 (npm) is affected by GHSA-rxp7-6hxx-x8q5","path":"frontend/package-lock.json","line":null,"fingerprint":"ip-address@10.7.2 (npm):GHSA-rxp7-6hxx-x8q5"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@10.2.6 (npm) is affected by GHSA-g3hv-75wg-m249","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@10.2.6 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-6pq8-jhm2-2vcw","severity":"medium","message":"qs@6.16.0 (npm) is affected by GHSA-6pq8-jhm2-2vcw","path":"frontend/package-lock.json","line":null,"fingerprint":"qs@6.16.0 (npm):GHSA-6pq8-jhm2-2vcw"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@6.28.1 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@6.28.1 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@6.28.1 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@6.28.1 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@7.29.1 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-55wc-3pg8-jfw6","severity":"medium","message":"undici@7.29.1 (npm) is affected by GHSA-55wc-3pg8-jfw6","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-55wc-3pg8-jfw6"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@7.29.1 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-f72v-6w45-q472","severity":"medium","message":"undici@7.29.1 (npm) is affected by GHSA-f72v-6w45-q472","path":"frontend/package-lock.json","line":null,"fingerprint":"undici@7.29.1 (npm):GHSA-f72v-6w45-q472"},{"rule_id":"osv/GHSA-698v-4r3x-3vcv","severity":"medium","message":"vite@7.3.6 (npm) is affected by GHSA-698v-4r3x-3vcv","path":"frontend/package-lock.json","line":null,"fingerprint":"vite@7.3.6 (npm):GHSA-698v-4r3x-3vcv"},{"rule_id":"osv/GHSA-r825-w8mm-5pxw","severity":"medium","message":"vite@7.3.6 (npm) is affected by GHSA-r825-w8mm-5pxw","path":"frontend/package-lock.json","line":null,"fingerprint":"vite@7.3.6 (npm):GHSA-r825-w8mm-5pxw"},{"rule_id":"osv/GHSA-rq7h-c2jc-7f22","severity":"medium","message":"vite@7.3.6 (npm) is affected by GHSA-rq7h-c2jc-7f22","path":"frontend/package-lock.json","line":null,"fingerprint":"vite@7.3.6 (npm):GHSA-rq7h-c2jc-7f22"},{"rule_id":"osv/GO-2026-5932","severity":"medium","message":"golang.org/x/crypto@0.57.0 (Go) is affected by GO-2026-5932","path":"go.mod","line":null,"fingerprint":"golang.org/x/crypto@0.57.0 (Go):GO-2026-5932"},{"rule_id":"osv/GHSA-333x-w4r6-6crp","severity":"low","message":"fast-uri@3.1.8 (npm) is affected by GHSA-333x-w4r6-6crp","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-333x-w4r6-6crp"},{"rule_id":"osv/GHSA-xhq7-xmqj-769h","severity":"low","message":"fast-uri@3.1.8 (npm) is affected by GHSA-xhq7-xmqj-769h","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-xhq7-xmqj-769h"},{"rule_id":"osv/GHSA-3gg2-335m-rxc6","severity":"low","message":"hono@4.13.8 (npm) is affected by GHSA-3gg2-335m-rxc6","path":"frontend/package-lock.json","line":null,"fingerprint":"hono@4.13.8 (npm):GHSA-3gg2-335m-rxc6"},{"rule_id":"osv/GHSA-9jrq-w75r-8gcw","severity":"low","message":"vite@7.3.6 (npm) is affected by GHSA-9jrq-w75r-8gcw","path":"frontend/package-lock.json","line":null,"fingerprint":"vite@7.3.6 (npm):GHSA-9jrq-w75r-8gcw"}],"evidence":[],"data":{"ecosystems":["Go","npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":12.0,"findings_high":9.0,"findings_medium":3.0,"findings_low":0.0,"penalty":104.4},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:30"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":38,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:38"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/release.yml","line":44,"fingerprint":"template-injection:.github/workflows/release.yml:44"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/release.yml","line":49,"fingerprint":"template-injection:.github/workflows/release.yml:49"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":20,"fingerprint":"unpinned-uses:.github/workflows/release.yml:20"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":27,"fingerprint":"unpinned-uses:.github/workflows/release.yml:27"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":32,"fingerprint":"unpinned-uses:.github/workflows/release.yml:32"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/release.yml","line":32,"fingerprint":"cache-poisoning:.github/workflows/release.yml:32"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":16,"fingerprint":"artipacked:.github/workflows/ci.yml:16"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":13,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:13"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":20,"fingerprint":"artipacked:.github/workflows/release.yml:20"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":1.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":0.0,"signed_commit_share":0.0,"unpinned_manifests":1.0},"findings":[],"evidence":[{"kind":"posture","description":"Security policy: docs/security.md","ref":"docs/security.md","url":null,"weight":0.0},{"kind":"posture","description":"tools/a11y/package.json has no lockfile alongside it (unpinned dependencies)","ref":"tools/a11y/package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":2.0,"binary_assets":2.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v4.0.0 ships seid_v4.0.0_linux_amd64.tar.gz (7 downloads)","ref":"seid_v4.0.0_linux_amd64.tar.gz","url":"https://github.com/statusengine/interface/releases/download/v4.0.0/seid_v4.0.0_linux_amd64.tar.gz","weight":0.0},{"kind":"binary-release-asset","description":"release v4.0.0 ships seid_v4.0.0_linux_arm64.tar.gz (2 downloads)","ref":"seid_v4.0.0_linux_arm64.tar.gz","url":"https://github.com/statusengine/interface/releases/download/v4.0.0/seid_v4.0.0_linux_arm64.tar.gz","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":862.0,"function_nloc":8025.0,"mean_ccn":2.67,"p90_ccn":6.0,"complex_functions":2.0,"long_functions":0.0,"many_param_functions":0.0,"risky_nloc_share":0.0174},"findings":[],"evidence":[{"kind":"complex-function","description":"Validate in internal/config/config.go: complexity 17, 56 lines","ref":"internal/config/config.go","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/internal/config/config.go#L320","weight":0.2833333333333333},{"kind":"complex-function","description":"serve in cmd/seid/main.go: complexity 16, 84 lines","ref":"cmd/seid/main.go","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/cmd/seid/main.go#L78","weight":0.26666666666666666}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":12767.0,"duplicated_lines":701.0,"duplicated_share":0.0549,"files":134.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: cmd/seid/main.go:79 and cmd/seid/main.go:176","ref":"cmd/seid/main.go","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/cmd/seid/main.go#L79","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: cmd/seid/user.go:112 and cmd/seid/user.go:161","ref":"cmd/seid/user.go","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/cmd/seid/user.go#L112","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/core/api/types.ts:80 and frontend/src/app/core/api/types.ts:335","ref":"frontend/src/app/core/api/types.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/core/api/types.ts#L80","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/acknowledgements/acknowledgements-list.ts:20 and frontend/src/app/features/audit/audit-list.ts:27","ref":"frontend/src/app/features/acknowledgements/acknowledgements-list.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/acknowledgements/acknowledgements-list.ts#L20","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/audit/audit-list.ts:30 and frontend/src/app/features/logentries/logentries-list.ts:27","ref":"frontend/src/app/features/audit/audit-list.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/audit/audit-list.ts#L30","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/commands/bulk-actions.ts:161 and frontend/src/app/features/commands/object-actions.ts:44","ref":"frontend/src/app/features/commands/bulk-actions.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/commands/bulk-actions.ts#L161","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/downtimes/downtimes-list.ts:30 and frontend/src/app/features/problems/problems-list.ts:33","ref":"frontend/src/app/features/downtimes/downtimes-list.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/downtimes/downtimes-list.ts#L30","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/errors/forbidden.ts:26 and frontend/src/app/features/errors/not-found.ts:14","ref":"frontend/src/app/features/errors/forbidden.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/errors/forbidden.ts#L26","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/history/checks-history.ts:21 and frontend/src/app/features/history/notifications-history.ts:27","ref":"frontend/src/app/features/history/checks-history.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/history/checks-history.ts#L21","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: frontend/src/app/features/history/checks-history.ts:24 and frontend/src/app/features/history/statechanges-history.ts:31","ref":"frontend/src/app/features/history/checks-history.ts","url":"https://github.com/statusengine/interface/blob/f5e21cb07a6efc81eb28cf3f9189f84fd488567c/frontend/src/app/features/history/checks-history.ts#L24","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":64.0,"weighted_findings":16.75,"scanned_lines":17821.0,"category:correctness":64.0},"findings":[{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/dev/seed-perfdata.py","line":70,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/dev/seed-perfdata.py:70"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/bulk-actions.ts","line":33,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/bulk-actions.ts:33"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/bulk-actions.ts","line":33,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/bulk-actions.ts:33"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/command-fields.ts","line":19,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/command-fields.ts:19"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/command-fields.ts","line":19,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/command-fields.ts:19"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/command-fields.ts","line":95,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/command-fields.ts:95"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/command-fields.ts","line":95,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/command-fields.ts:95"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/object-settings.ts","line":36,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/object-settings.ts:36"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/commands/object-settings.ts","line":36,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/commands/object-settings.ts:36"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/dashboard/kpi-tile.ts","line":19,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/dashboard/kpi-tile.ts:19"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/dashboard/kpi-tile.ts","line":19,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/dashboard/kpi-tile.ts:19"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/errors/forbidden.ts","line":14,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/errors/forbidden.ts:14"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/errors/forbidden.ts","line":14,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/errors/forbidden.ts:14"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/errors/not-found.ts","line":9,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/errors/not-found.ts:9"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/errors/not-found.ts","line":9,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/errors/not-found.ts:9"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/history/history-nav.ts","line":10,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/history/history-nav.ts:10"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/history/history-nav.ts","line":10,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/history/history-nav.ts:10"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/history/history-scope.ts","line":21,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/history/history-scope.ts:21"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/history/history-scope.ts","line":21,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/history/history-scope.ts:21"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/services/metrics-panel.ts","line":40,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/services/metrics-panel.ts:40"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/features/services/metrics-panel.ts","line":40,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/features/services/metrics-panel.ts:40"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/data-table.ts","line":20,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/data-table.ts:20"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/data-table.ts","line":20,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/data-table.ts:20"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/data-table.ts","line":81,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/data-table.ts:81"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/data-table.ts","line":81,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/data-table.ts:81"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/dialog.ts","line":29,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/dialog.ts:29"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/dialog.ts","line":29,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/dialog.ts:29"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/fact-list.ts","line":23,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/fact-list.ts:23"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/fact-list.ts","line":23,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/fact-list.ts:23"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/filter-toggle.ts","line":17,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/filter-toggle.ts:17"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/filter-toggle.ts","line":17,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/filter-toggle.ts:17"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/hour-bars.ts","line":29,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/hour-bars.ts:29"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/hour-bars.ts","line":29,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/hour-bars.ts:29"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/icon.ts","line":108,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/icon.ts:108"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/icon.ts","line":108,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/icon.ts:108"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/metric-chart.ts","line":58,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/metric-chart.ts:58"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/metric-chart.ts","line":58,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/metric-chart.ts:58"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/metric-chart.ts","line":90,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/metric-chart.ts:90"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/metric-chart.ts","line":90,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/metric-chart.ts:90"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/not-built-yet.ts","line":15,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/not-built-yet.ts:15"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/not-built-yet.ts","line":15,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/not-built-yet.ts:15"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/page-header.ts","line":10,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/page-header.ts:10"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/page-header.ts","line":10,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/page-header.ts:10"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/pagination.ts","line":14,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/pagination.ts:14"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/pagination.ts","line":14,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/pagination.ts:14"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/plugin-output.ts","line":21,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/plugin-output.ts:21"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/plugin-output.ts","line":21,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/plugin-output.ts:21"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/range-picker.ts","line":27,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/range-picker.ts:27"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/range-picker.ts","line":27,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/range-picker.ts:27"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/row-flags.ts","line":25,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/row-flags.ts:25"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/row-flags.ts","line":25,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/row-flags.ts:25"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/state-badge.ts","line":20,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/state-badge.ts:20"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/state-badge.ts","line":20,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/state-badge.ts:20"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/state-filter.ts","line":17,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/state-filter.ts:17"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/state-filter.ts","line":17,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/state-filter.ts:17"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/state-strip.ts","line":31,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/state-strip.ts:31"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/state-strip.ts","line":31,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/state-strip.ts:31"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/toast-stack.ts","line":25,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/toast-stack.ts:25"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/toast-stack.ts","line":25,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/toast-stack.ts:25"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/toast-stack.ts","line":64,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/toast-stack.ts:64"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/toast-stack.ts","line":64,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/toast-stack.ts:64"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/toolbar.ts","line":13,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/toolbar.ts:13"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/shared/ui/toolbar.ts","line":13,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/shared/ui/toolbar.ts:13"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-command-substitution-in-command","severity":"low","message":"The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result.","path":"tools/release/publish-test.sh","line":93,"fingerprint":"bash.lang.correctness.unquoted-command-substitution-in-command:tools/release/publish-test.sh:93"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.5152,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":1.0,"test_lines":4607.0,"source_lines":17886.0,"test_ratio":0.2576,"ci_files":2.0,"cochange_share":0.7727,"cochange_commits":22.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/ci.yml","ref":".github/workflows/ci.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/release.yml","ref":".github/workflows/release.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"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":273.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":"ok","tool_version":null,"metrics":{"check:strict_config":0.9884,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: frontend/tsconfig.json","ref":"frontend/tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":17886.0,"other_lines":0.0,"files_blamed":134.0,"blame_failures":0.0,"quality:ai_findings":64.0,"quality:ai_per_kloc":3.578,"quality:other_findings":0.0,"security:ai_findings":15.0,"security:ai_per_kloc":0.839,"security:other_findings":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":[]}