{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:48:02.157672Z","repo":{"ref":{"host":"github.com","owner":"capaj","name":"ingit"},"default_branch":"master","clone_url":"https://github.com/capaj/ingit.git","html_url":"https://github.com/capaj/ingit","description":"a modern git UI - fresh take on ungit","stars":22,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":28393,"primary_language":"TypeScript","license_spdx":"MIT","created_at":"2026-04-06T12:08:42Z","pushed_at":"2026-11-05T21:19:35Z","security_policy_url":null,"distribution":{"owner_created_at":"2012-01-05T00:45:51Z","owner_type":"User","release_assets":[]}},"commit_sha":"bdde02c1fe17a45b889f48d571bc61581d5a4e3c","profile":{"lines_by_language":{"TypeScript":43446,"JavaScript":98},"files_by_category":{"source":115,"test":51,"binary":51,"docs":49,"config":29,"other":24,"oversized":1},"source_lines":35657,"test_lines":7887},"pillars":{"ai_provenance":{"score":7.7,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0766,"suspected_share":0.1277,"estimated_share":0.0766,"ai_artifacts":3.0,"flagged_work_units":3.0,"flagged_releases":0.0},"summary":"Explicit AI attribution on 8% of first-party code added; an estimated 8% including velocity signals."},"quality":{"score":62.5,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":43.6,"duplication":71.4,"lint":42.0,"testing":76.1,"docs":65.0,"type_safety":100.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.22, CI runs tests; 28% of function code in complex or long functions; 6% duplicated lines. Weakest area: lint."},"security":{"score":58.8,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":95.3,"dependencies":29.6,"ci_actions":6.1,"posture":20.0,"scorecard":null},"summary":"Security posture is weak: 44 known vulnerabilities in 11 dependencies; 4 high-severity SAST findings; 15 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":"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":217.0,"attributed_commits":7.0,"attributed_commit_share":0.03225806451612903,"effective_loc":52232.0,"attributed_loc":4000.0,"attributed_loc_share":0.0765814060346148,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 5 attributed commits, 2,865 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"OpenAI Codex: 2 attributed commits, 1,135 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8cdcdc20b221b548230aad0adf8d07af4312119c","url":"https://github.com/capaj/ingit/commit/8cdcdc20b221b548230aad0adf8d07af4312119c","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (3fada0a177)","ref":"fdca1c061ca0de9901e0c5487aedc44fd46ce6fa","url":"https://github.com/capaj/ingit/commit/fdca1c061ca0de9901e0c5487aedc44fd46ce6fa","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (3fada0a177)","ref":"bd067c7b64ab2027aae133471cadeb4669ffb206","url":"https://github.com/capaj/ingit/commit/bd067c7b64ab2027aae133471cadeb4669ffb206","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e3a06be7800f55615023be526b510ef77311faff","url":"https://github.com/capaj/ingit/commit/e3a06be7800f55615023be526b510ef77311faff","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"40e542c580420795f2e7c4abccc07f5e50f3b9e6","url":"https://github.com/capaj/ingit/commit/40e542c580420795f2e7c4abccc07f5e50f3b9e6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b1abdf27d52ee8dea79427b16836628fd193fbcb","url":"https://github.com/capaj/ingit/commit/b1abdf27d52ee8dea79427b16836628fd193fbcb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7b4f71b7c3b2de007dd8b89e1f43f16515d30fc9","url":"https://github.com/capaj/ingit/commit/7b4f71b7c3b2de007dd8b89e1f43f16515d30fc9","weight":0.9}],"data":{"attributed_loc_by_commit":{"7b4f71b7c3b2de007dd8b89e1f43f16515d30fc9":1693,"b1abdf27d52ee8dea79427b16836628fd193fbcb":0,"40e542c580420795f2e7c4abccc07f5e50f3b9e6":103,"e3a06be7800f55615023be526b510ef77311faff":895,"bd067c7b64ab2027aae133471cadeb4669ffb206":374,"fdca1c061ca0de9901e0c5487aedc44fd46ce6fa":761,"8cdcdc20b221b548230aad0adf8d07af4312119c":174},"tools":{"claude-code":{"name":"Claude Code","commits":5,"loc":2865,"first_seen":1775468146,"last_seen":1783629675},"openai-codex":{"name":"OpenAI Codex","commits":2,"loc":1135,"first_seen":1783252445,"last_seen":1783287632}},"monthly":{"2026-04":{"loc":13749,"attributed_loc":1693},"2026-06":{"loc":3820,"attributed_loc":998},"2026-07":{"loc":28501,"attributed_loc":1309},"2026-08":{"loc":1114,"attributed_loc":0},"2026-09":{"loc":2878,"attributed_loc":0},"2026-10":{"loc":1960,"attributed_loc":0},"2026-11":{"loc":210,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":3.0,"workflow_agents":0.0,"tools_configured":2.0,"earliest_adoption":1783340561.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":".claude/skills/remotion-best-practices (claude-code configuration)","ref":".claude/skills/remotion-best-practices","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/.claude/skills/remotion-best-practices","weight":0.5},{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/CLAUDE.md","weight":0.5},{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/AGENTS.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":".claude/skills/remotion-best-practices","added_at":1783630212},{"tool":"claude-code","path":"CLAUDE.md","added_at":1783340561},{"tool":"generic-agent","path":"AGENTS.md","added_at":1784643057}],"workflows":[],"tools":["claude-code","generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":97.0,"flagged_units":3.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":47486.0,"flagged_loc":6842.0,"flagged_loc_share":0.14408457229499222,"max_loc_per_hour":1244.0449438202247,"median_loc_per_hour":135.11060381734507,"pr_timed_units":0.0,"excluded_import_loc":4746.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,384 lines of first-party code in ~1.1h (1,244 lines/hour, 2 commit session)","ref":"87f7fb2624fa8bcd214686fefebd9481f6426530","url":"https://github.com/capaj/ingit/commit/87f7fb2624fa8bcd214686fefebd9481f6426530","weight":0.37321348314606745},{"kind":"velocity-burst","description":"3,043 lines of first-party code in ~4.6h (659 lines/hour, 5 commit session)","ref":"6a230962d1eb9eb4256b5b48f19d9411b2e8cfb3","url":"https://github.com/capaj/ingit/commit/6a230962d1eb9eb4256b5b48f19d9411b2e8cfb3","weight":0.19760928386747637},{"kind":"velocity-burst","description":"2,415 lines of first-party code in ~4.3h (566 lines/hour, 3 commit session)","ref":"31b87dfb3054d0e349d76a29cd6d0957ebff34d3","url":"https://github.com/capaj/ingit/commit/31b87dfb3054d0e349d76a29cd6d0957ebff34d3","weight":0.169727337801783}],"data":{"flagged_loc_by_commit":{"9ce9ae5cd80eeec1825da1a29f209d75b915b45a":2802,"110bd8e7db60f9eb02f19eb61c60b05abad3db29":12,"196619de149825938d42e8e6b9bb272eaacbaaa1":98,"678735059b530c4a7d1b899aa1551b00172ffe96":119,"6a230962d1eb9eb4256b5b48f19d9411b2e8cfb3":12,"8cdcdc20b221b548230aad0adf8d07af4312119c":174,"87f7fb2624fa8bcd214686fefebd9481f6426530":1210,"4040505a74cc0831058f6c5429e9426300e5d0c5":465,"f65551fdfe053f884fc943a90029867bbbf864c0":1936,"31b87dfb3054d0e349d76a29cd6d0957ebff34d3":14},"excluded_import_commits":["7f12155b2d50429e7f51cd80c2b0f8156e46b862"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":33.0,"flagged_releases":0.0,"max_loc_per_day":15492.3},"findings":[],"evidence":[],"data":{"releases":[{"from":"v0.1.0-ci.1","to":"v0.1.0-ci.2","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.1.0-ci.2","to":"v0.1.0-ci.3","loc":12,"days":0.04,"loc_per_day":288.0,"flagged":false},{"from":"v0.1.0-ci.3","to":"v0.1.0-ci.4","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.1.0-ci.4","to":"v0.1.0-ci.5","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.1.0-ci.5","to":"v0.1.0","loc":13,"days":0.33,"loc_per_day":39.8,"flagged":false},{"from":"v0.1.0","to":"v0.1.1","loc":3535,"days":4.49,"loc_per_day":788.0,"flagged":false},{"from":"v0.1.1","to":"v0.1.2","loc":2498,"days":0.95,"loc_per_day":2624.8,"flagged":false},{"from":"v0.1.2","to":"v0.1.3","loc":12,"days":0.04,"loc_per_day":288.0,"flagged":false},{"from":"v0.1.3","to":"v0.1.4","loc":344,"days":0.04,"loc_per_day":8256.0,"flagged":false},{"from":"v0.1.4","to":"v0.1.5","loc":408,"days":0.16,"loc_per_day":2547.1,"flagged":false},{"from":"v0.1.5","to":"v0.1.6","loc":922,"days":0.4,"loc_per_day":2310.7,"flagged":false},{"from":"v0.1.6","to":"v0.1.7","loc":615,"days":0.72,"loc_per_day":849.0,"flagged":false},{"from":"v0.1.7","to":"v0.1.8","loc":715,"days":0.64,"loc_per_day":1115.5,"flagged":false},{"from":"v0.1.8","to":"v0.1.9","loc":5440,"days":4.63,"loc_per_day":1174.5,"flagged":false},{"from":"v0.1.9","to":"v0.1.10","loc":832,"days":1.07,"loc_per_day":779.0,"flagged":false},{"from":"v0.1.10","to":"v0.2.0","loc":3201,"days":2.06,"loc_per_day":1554.4,"flagged":false},{"from":"v0.2.0","to":"v0.2.1","loc":6,"days":0.04,"loc_per_day":144.0,"flagged":false},{"from":"v0.2.1","to":"v0.2.2","loc":1103,"days":1.96,"loc_per_day":561.6,"flagged":false},{"from":"v0.2.2","to":"v0.2.3","loc":356,"days":0.09,"loc_per_day":4062.7,"flagged":false},{"from":"v0.2.3","to":"v0.3.0","loc":3108,"days":2.3,"loc_per_day":1349.4,"flagged":false},{"from":"v0.3.0","to":"v0.3.1","loc":1655,"days":3.78,"loc_per_day":437.9,"flagged":false},{"from":"v0.3.1","to":"v0.3.2","loc":695,"days":2.62,"loc_per_day":265.2,"flagged":false},{"from":"v0.3.2","to":"v0.3.3","loc":315,"days":9.34,"loc_per_day":33.7,"flagged":false},{"from":"v0.3.3","to":"v0.3.4","loc":331,"days":12.82,"loc_per_day":25.8,"flagged":false},{"from":"v0.3.4","to":"v0.4.0","loc":375,"days":0.73,"loc_per_day":516.6,"flagged":false},{"from":"v0.4.0","to":"v0.4.1","loc":1329,"days":11.82,"loc_per_day":112.5,"flagged":false},{"from":"v0.4.1","to":"v0.4.2","loc":281,"days":6.41,"loc_per_day":43.8,"flagged":false},{"from":"v0.4.2","to":"v0.5.0","loc":253,"days":2.58,"loc_per_day":98.2,"flagged":false},{"from":"v0.5.0","to":"v0.5.1","loc":255,"days":10.74,"loc_per_day":23.7,"flagged":false},{"from":"v0.5.1","to":"v0.6.0","loc":695,"days":0.04,"loc_per_day":15492.3,"flagged":false},{"from":"v0.6.0","to":"v0.6.3","loc":1500,"days":14.88,"loc_per_day":100.8,"flagged":false},{"from":"v0.6.3","to":"v0.6.4","loc":618,"days":26.54,"loc_per_day":23.3,"flagged":false},{"from":"v0.6.4","to":"v0.6.5","loc":210,"days":2.44,"loc_per_day":86.0,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":35657.0,"index":0.042,"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":3.0,"per_kloc:emoji_in_code":0.084,"files:emoji_in_code":2.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":14.0,"findings_high":4.0,"findings_medium":7.0,"findings_low":3.0,"weighted_findings":4.938,"scanned_lines":35657.0,"parse_errors":3.0},"findings":[{"rule_id":"opengrep/javascript.lang.security.audit.spawn-shell-true","severity":"high","message":"Found '$SPAWN' with '{shell: windowsShim}'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use '{shell: false}' instead. [confidence low]","path":"apps/cli/src/auto-update.ts","line":21,"fingerprint":"javascript.lang.security.audit.spawn-shell-true:apps/cli/src/auto-update.ts:21"},{"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":"apps/server/src/main.ts","line":202,"fingerprint":"javascript.lang.security.detect-insecure-websocket:apps/server/src/main.ts:202"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"scripts/record-social-demo.ts","line":372,"fingerprint":"javascript.browser.security.insecure-document-method:scripts/record-social-demo.ts:372"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `cursor.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"scripts/record-social-demo.ts","line":372,"fingerprint":"javascript.browser.security.insecure-innerhtml:scripts/record-social-demo.ts:372"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-redos","severity":"medium","message":"Detected the use of a regular expression `^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$` which appears to be vulnerable to a Regular expression Denial-of-Service (ReDoS). For this reason, it is recommended to review the rege [confidence low]","path":"apps/cli/src/auto-update.ts","line":118,"fingerprint":"javascript.lang.security.audit.detect-redos:apps/cli/src/auto-update.ts:118"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-redos","severity":"medium","message":"Detected the use of a regular expression `^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$` which appears to be vulnerable to a Regular expression Denial-of-Service (ReDoS). For this reason, it is recommended to review the rege [confidence low]","path":"apps/cli/src/auto-update.ts","line":130,"fingerprint":"javascript.lang.security.audit.detect-redos:apps/cli/src/auto-update.ts:130"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `source` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":112,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:apps/client/src/components/graph-canvas/CommitIcons.tsx:112"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `source` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":124,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:apps/client/src/components/graph-canvas/CommitIcons.tsx:124"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `query` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlle [confidence low]","path":"apps/client/src/patch-search.ts","line":93,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:apps/client/src/patch-search.ts:93"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"apps/server/src/main.ts","line":52,"fingerprint":"javascript.lang.security.html-in-template-string:apps/server/src/main.ts:52"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"apps/server/src/main.ts","line":53,"fingerprint":"javascript.lang.security.html-in-template-string:apps/server/src/main.ts:53"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"apps/server/src/recent-repos-store.ts","line":55,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:apps/server/src/recent-repos-store.ts:55"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"apps/server/src/rpc-router.ts","line":475,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:apps/server/src/rpc-router.ts:475"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"packages/git-core/src/repo-session.ts","line":560,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:packages/git-core/src/repo-session.ts:560"}],"evidence":[],"data":{"rulesets":["typescript","javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":11.0,"vulnerabilities":44.0,"vulns_critical":0.0,"vulns_high":23.0,"vulns_medium":16.0,"vulns_low":5.0,"vulns_unknown":0.0,"penalty":73.0},"findings":[{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.28.5 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"bun.lock","line":null,"fingerprint":"browserslist@4.28.5 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.28.5 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"bun.lock","line":null,"fingerprint":"browserslist@4.28.5 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-5jgf-p345-68v8","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-5jgf-p345-68v8","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-5jgf-p345-68v8"},{"rule_id":"osv/GHSA-7p8r-x3mc-p8w7","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-7p8r-x3mc-p8w7","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-7p8r-x3mc-p8w7"},{"rule_id":"osv/GHSA-f65p-4m7j-42xc","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-f65p-4m7j-42xc","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-f65p-4m7j-42xc"},{"rule_id":"osv/GHSA-fph4-wmhf-6fwf","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-fph4-wmhf-6fwf","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-fph4-wmhf-6fwf"},{"rule_id":"osv/GHSA-jqff-g426-hqxp","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-jqff-g426-hqxp","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-jqff-g426-hqxp"},{"rule_id":"osv/GHSA-qw65-cvwx-89v3","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-qw65-cvwx-89v3","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-qw65-cvwx-89v3"},{"rule_id":"osv/GHSA-v2hh-gcrm-f6hx","severity":"high","message":"fast-uri@3.1.3 (npm) is affected by GHSA-v2hh-gcrm-f6hx","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-v2hh-gcrm-f6hx"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.3.0 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"bun.lock","line":null,"fingerprint":"js-yaml@4.3.0 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.3.0 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"bun.lock","line":null,"fingerprint":"js-yaml@4.3.0 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.12 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"bun.lock","line":null,"fingerprint":"nanoid@3.3.12 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.12 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"bun.lock","line":null,"fingerprint":"nanoid@3.3.12 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.5.16 (npm) is affected by GHSA-r28c-9q8g-f849","path":"bun.lock","line":null,"fingerprint":"postcss@8.5.16 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-wq5f-xc86-pv6w","severity":"high","message":"sharp@0.35.4 (npm) is affected by GHSA-wq5f-xc86-pv6w","path":"bun.lock","line":null,"fingerprint":"sharp@0.35.4 (npm):GHSA-wq5f-xc86-pv6w"},{"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":"bun.lock","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@8.10.0 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-4w7w-5xrc-9h26","severity":"high","message":"undici@8.10.0 (npm) is affected by GHSA-4w7w-5xrc-9h26","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-4w7w-5xrc-9h26"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@8.10.0 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-rfgv-xxqx-mfg5","severity":"high","message":"undici@8.10.0 (npm) is affected by GHSA-rfgv-xxqx-mfg5","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-rfgv-xxqx-mfg5"},{"rule_id":"osv/GHSA-vp8m-p9jh-q5pm","severity":"high","message":"undici@8.10.0 (npm) is affected by GHSA-vp8m-p9jh-q5pm","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-vp8m-p9jh-q5pm"},{"rule_id":"osv/GHSA-w293-vg96-wgc3","severity":"high","message":"undici@8.10.0 (npm) is affected by GHSA-w293-vg96-wgc3","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-w293-vg96-wgc3"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@8.10.0 (npm) is affected by GHSA-xjj6-f33q-929c","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-r3h5-4585-7x3w","severity":"medium","message":"astro@7.4.5 (npm) is affected by GHSA-r3h5-4585-7x3w","path":"bun.lock","line":null,"fingerprint":"astro@7.4.5 (npm):GHSA-r3h5-4585-7x3w"},{"rule_id":"osv/GHSA-w5vr-8v7q-w6rv","severity":"medium","message":"baseline-browser-mapping@2.10.42 (npm) is affected by GHSA-w5vr-8v7q-w6rv","path":"bun.lock","line":null,"fingerprint":"baseline-browser-mapping@2.10.42 (npm):GHSA-w5vr-8v7q-w6rv"},{"rule_id":"osv/GHSA-hrr3-gc8f-f4qj","severity":"medium","message":"fast-uri@3.1.3 (npm) is affected by GHSA-hrr3-gc8f-f4qj","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-hrr3-gc8f-f4qj"},{"rule_id":"osv/GHSA-w74x-v6f9-j3xg","severity":"medium","message":"fast-uri@3.1.3 (npm) is affected by GHSA-w74x-v6f9-j3xg","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-w74x-v6f9-j3xg"},{"rule_id":"osv/GHSA-wjr9-j795-jxcr","severity":"medium","message":"fast-uri@3.1.3 (npm) is affected by GHSA-wjr9-j795-jxcr","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-wjr9-j795-jxcr"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.5.16 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"bun.lock","line":null,"fingerprint":"postcss@8.5.16 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-rj75-hqrm-r3gf","severity":"medium","message":"postcss-selector-parser@7.1.4 (npm) is affected by GHSA-rj75-hqrm-r3gf","path":"bun.lock","line":null,"fingerprint":"postcss-selector-parser@7.1.4 (npm):GHSA-rj75-hqrm-r3gf"},{"rule_id":"osv/GHSA-2jfj-6hjv-fm6j","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-2jfj-6hjv-fm6j","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-2jfj-6hjv-fm6j"},{"rule_id":"osv/GHSA-3wwx-pv8p-q78v","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-3wwx-pv8p-q78v","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-3wwx-pv8p-q78v"},{"rule_id":"osv/GHSA-3xpg-4rpp-hhhm","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-3xpg-4rpp-hhhm","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-3xpg-4rpp-hhhm"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-55wc-3pg8-jfw6","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-55wc-3pg8-jfw6","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-55wc-3pg8-jfw6"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-f72v-6w45-q472","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-f72v-6w45-q472","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-f72v-6w45-q472"},{"rule_id":"osv/GHSA-pmjh-fq2x-6v4x","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-pmjh-fq2x-6v4x","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-pmjh-fq2x-6v4x"},{"rule_id":"osv/GHSA-rx4f-c7p8-82vq","severity":"medium","message":"undici@8.10.0 (npm) is affected by GHSA-rx4f-c7p8-82vq","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-rx4f-c7p8-82vq"},{"rule_id":"osv/GHSA-333x-w4r6-6crp","severity":"low","message":"fast-uri@3.1.3 (npm) is affected by GHSA-333x-w4r6-6crp","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-333x-w4r6-6crp"},{"rule_id":"osv/GHSA-xhq7-xmqj-769h","severity":"low","message":"fast-uri@3.1.3 (npm) is affected by GHSA-xhq7-xmqj-769h","path":"bun.lock","line":null,"fingerprint":"fast-uri@3.1.3 (npm):GHSA-xhq7-xmqj-769h"},{"rule_id":"osv/GHSA-2gqq-gqf2-x968","severity":"low","message":"undici@8.10.0 (npm) is affected by GHSA-2gqq-gqf2-x968","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-2gqq-gqf2-x968"},{"rule_id":"osv/GHSA-8436-99hf-9mmv","severity":"low","message":"undici@8.10.0 (npm) is affected by GHSA-8436-99hf-9mmv","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-8436-99hf-9mmv"},{"rule_id":"osv/GHSA-r53p-7pc4-xj5r","severity":"low","message":"undici@8.10.0 (npm) is affected by GHSA-r53p-7pc4-xj5r","path":"bun.lock","line":null,"fingerprint":"undici@8.10.0 (npm):GHSA-r53p-7pc4-xj5r"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":19.0,"findings_high":15.0,"findings_medium":4.0,"findings_low":0.0,"penalty":168.0},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":19,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:19"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":21,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:21"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":35,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:35"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":37,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:37"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/release.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":41,"fingerprint":"unpinned-uses:.github/workflows/release.yml:41"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":45,"fingerprint":"unpinned-uses:.github/workflows/release.yml:45"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":118,"fingerprint":"unpinned-uses:.github/workflows/release.yml:118"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":129,"fingerprint":"unpinned-uses:.github/workflows/release.yml:129"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":139,"fingerprint":"unpinned-uses:.github/workflows/release.yml:139"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":155,"fingerprint":"unpinned-uses:.github/workflows/release.yml:155"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":159,"fingerprint":"unpinned-uses:.github/workflows/release.yml:159"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":164,"fingerprint":"unpinned-uses:.github/workflows/release.yml:164"},{"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":41,"fingerprint":"cache-poisoning:.github/workflows/release.yml:41"},{"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":45,"fingerprint":"cache-poisoning:.github/workflows/release.yml:45"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":19,"fingerprint":"artipacked:.github/workflows/ci.yml:19"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":35,"fingerprint":"artipacked:.github/workflows/ci.yml:35"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":39,"fingerprint":"artipacked:.github/workflows/release.yml:39"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":155,"fingerprint":"artipacked:.github/workflows/release.yml:155"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":1.0,"check:lockfiles":0.0,"signed_commit_share":0.955,"unpinned_manifests":8.0},"findings":[],"evidence":[{"kind":"posture","description":"apps/cli/package.json has no lockfile alongside it (unpinned dependencies)","ref":"apps/cli/package.json","url":null,"weight":0.3},{"kind":"posture","description":"apps/client/package.json has no lockfile alongside it (unpinned dependencies)","ref":"apps/client/package.json","url":null,"weight":0.3},{"kind":"posture","description":"apps/server/package.json has no lockfile alongside it (unpinned dependencies)","ref":"apps/server/package.json","url":null,"weight":0.3},{"kind":"posture","description":"apps/site/package.json has no lockfile alongside it (unpinned dependencies)","ref":"apps/site/package.json","url":null,"weight":0.3},{"kind":"posture","description":"apps/video/package.json has no lockfile alongside it (unpinned dependencies)","ref":"apps/video/package.json","url":null,"weight":0.3},{"kind":"posture","description":"packages/git-core/package.json has no lockfile alongside it (unpinned dependencies)","ref":"packages/git-core/package.json","url":null,"weight":0.3},{"kind":"posture","description":"packages/graph-core/package.json has no lockfile alongside it (unpinned dependencies)","ref":"packages/graph-core/package.json","url":null,"weight":0.3},{"kind":"posture","description":"packages/rpc-contract/package.json has no lockfile alongside it (unpinned dependencies)","ref":"packages/rpc-contract/package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":2477.0,"function_nloc":27264.0,"mean_ccn":3.16,"p90_ccn":7.0,"complex_functions":70.0,"long_functions":23.0,"many_param_functions":2.0,"risky_nloc_share":0.2768},"findings":[],"evidence":[{"kind":"complex-function","description":"buildSegments in packages/graph-core/src/lane-ordering.ts: complexity 62, 158 lines","ref":"packages/graph-core/src/lane-ordering.ts","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/packages/graph-core/src/lane-ordering.ts#L99","weight":1.0},{"kind":"complex-function","description":"buildEdgeRoutingData in apps/client/src/components/GraphCanvas.tsx: complexity 61, 160 lines","ref":"apps/client/src/components/GraphCanvas.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/GraphCanvas.tsx#L2212","weight":1.0},{"kind":"complex-function","description":"GraphCanvas in apps/client/src/components/GraphCanvas.tsx: complexity 58, 767 lines","ref":"apps/client/src/components/GraphCanvas.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/GraphCanvas.tsx#L2502","weight":0.9666666666666667},{"kind":"complex-function","description":"(anonymous) in apps/client/src/components/GraphCanvas.tsx: complexity 51, 49 lines","ref":"apps/client/src/components/GraphCanvas.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/GraphCanvas.tsx#L3530","weight":0.85},{"kind":"complex-function","description":"(anonymous) in apps/client/src/components/GraphCanvas.tsx: complexity 48, 176 lines","ref":"apps/client/src/components/GraphCanvas.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/GraphCanvas.tsx#L5563","weight":0.8},{"kind":"complex-function","description":"CommitBox in apps/client/src/components/WorkingTreeDetail.tsx: complexity 40, 160 lines","ref":"apps/client/src/components/WorkingTreeDetail.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/WorkingTreeDetail.tsx#L229","weight":0.6666666666666666},{"kind":"complex-function","description":"RefActionButton in apps/client/src/components/graph-canvas/ActionButtons.tsx: complexity 40, 85 lines","ref":"apps/client/src/components/graph-canvas/ActionButtons.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/graph-canvas/ActionButtons.tsx#L316","weight":0.6666666666666666},{"kind":"complex-function","description":"straightenIntegratedForkContinuations in packages/graph-core/src/lane-ordering.ts: complexity 39, 96 lines","ref":"packages/graph-core/src/lane-ordering.ts","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/packages/graph-core/src/lane-ordering.ts#L672","weight":0.65},{"kind":"complex-function","description":"(anonymous) in apps/client/src/components/RefsSidebar.tsx: complexity 38, 276 lines","ref":"apps/client/src/components/RefsSidebar.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/RefsSidebar.tsx#L562","weight":0.6333333333333333},{"kind":"complex-function","description":"performRefAction in apps/client/src/store.ts: complexity 38, 123 lines","ref":"apps/client/src/store.ts","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/store.ts#L1732","weight":0.6333333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":27239.0,"duplicated_lines":1532.0,"duplicated_share":0.0562,"files":115.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: apps/cli/src/main.ts:85 and packages/git-core/src/ziggit-ffi.ts:7","ref":"apps/cli/src/main.ts","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/cli/src/main.ts#L85","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/App.tsx:34 and apps/client/src/components/RepoOpen.tsx:48","ref":"apps/client/src/App.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/App.tsx#L34","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/App.tsx:538 and apps/client/src/components/CommitDetail.tsx:534","ref":"apps/client/src/App.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/App.tsx#L538","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/App.tsx:636 and apps/client/src/components/RefsSidebar.tsx:45","ref":"apps/client/src/App.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/App.tsx#L636","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/components/CommitDetail.tsx:54 and apps/client/src/components/StashDetail.tsx:15","ref":"apps/client/src/components/CommitDetail.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/CommitDetail.tsx#L54","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/components/CommitDetail.tsx:489 and apps/client/src/components/WorkingTreeDetail.tsx:81","ref":"apps/client/src/components/CommitDetail.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/CommitDetail.tsx#L489","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/components/ErrorDialog.tsx:152 and apps/client/src/components/ErrorDialog.tsx:169","ref":"apps/client/src/components/ErrorDialog.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/ErrorDialog.tsx#L152","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/components/GraphCanvas.tsx:406 and apps/client/src/components/GraphCanvas.tsx:419","ref":"apps/client/src/components/GraphCanvas.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/GraphCanvas.tsx#L406","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/components/GraphCanvas.tsx:4444 and apps/client/src/components/ReflogGraph.tsx:249","ref":"apps/client/src/components/GraphCanvas.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/GraphCanvas.tsx#L4444","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: apps/client/src/components/InstallOutputDialog.tsx:117 and apps/client/src/components/NativeDialogs.tsx:33","ref":"apps/client/src/components/InstallOutputDialog.tsx","url":"https://github.com/capaj/ingit/blob/bdde02c1fe17a45b889f48d571bc61581d5a4e3c/apps/client/src/components/InstallOutputDialog.tsx#L117","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":142.0,"weighted_findings":123.75,"scanned_lines":35657.0,"category:best-practice":112.0,"category:correctness":30.0},"findings":[{"rule_id":"opengrep/typescript.lang.correctness.useless-ternary","severity":"high","message":"It looks like no matter how from.x > to.x is evaluated, this expression returns 'right'. This is probably a copy-paste error.","path":"apps/client/src/components/GraphCanvas.tsx","line":1296,"fingerprint":"typescript.lang.correctness.useless-ternary:apps/client/src/components/GraphCanvas.tsx:1296"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"apps/cli/bin/ingit.cjs","line":18,"fingerprint":"javascript.lang.best-practice.lazy-load-module:apps/cli/bin/ingit.cjs:18"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/AgentIcon.tsx","line":38,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/AgentIcon.tsx:38"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/AgentIcon.tsx","line":47,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/AgentIcon.tsx:47"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/GraphCanvas.tsx","line":5296,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/GraphCanvas.tsx:5296"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":65,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:65"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":66,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:66"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":67,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:67"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":68,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:68"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":73,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:73"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":74,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:74"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":75,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:75"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":80,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:80"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":81,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:81"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":82,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:82"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":87,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:87"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":88,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:88"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":89,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:89"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":90,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:90"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":91,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:91"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":96,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:96"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":97,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:97"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":98,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:98"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":102,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:102"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":106,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:106"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":107,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:107"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":108,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:108"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":109,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:109"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":110,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:110"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":115,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:115"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":116,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:116"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":117,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:117"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":122,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:122"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":123,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:123"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":124,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:124"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":129,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:129"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":130,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:130"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":131,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:131"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":132,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:132"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":133,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:133"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":138,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:138"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":139,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:139"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":140,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:140"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":145,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:145"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":146,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:146"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":151,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:151"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":152,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:152"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":157,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:157"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":158,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:158"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":159,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:159"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":164,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:164"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":165,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:165"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":166,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:166"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":167,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:167"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":172,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:172"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":173,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:173"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":177,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:177"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":181,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:181"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/ActionButtons.tsx","line":182,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/ActionButtons.tsx:182"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":353,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:353"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":354,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:354"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":359,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:359"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":360,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:360"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":365,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:365"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":366,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:366"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":371,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:371"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":372,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:372"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":377,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:377"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":378,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:378"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":379,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:379"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":380,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:380"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":385,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:385"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":386,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:386"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":387,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:387"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":388,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:388"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":393,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:393"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":394,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:394"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":399,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:399"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":400,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:400"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":405,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:405"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":406,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:406"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":411,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:411"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":412,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:412"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":417,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:417"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":418,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:418"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":423,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:423"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":424,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:424"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":429,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:429"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":430,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:430"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":431,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:431"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":436,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:436"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":437,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:437"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":438,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:438"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":439,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:439"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":443,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:443"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":447,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:447"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":448,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:448"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":453,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:453"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":458,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:458"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":459,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:459"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":460,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:460"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":465,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:465"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":466,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:466"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":471,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:471"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":476,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:476"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":477,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:477"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":482,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:482"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":483,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:483"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":488,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:488"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":489,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:489"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":494,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:494"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CommitIcons.tsx","line":495,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CommitIcons.tsx:495"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"apps/client/src/components/graph-canvas/CustomSvgIcon.tsx","line":241,"fingerprint":"typescript.react.best-practice.react-props-spreading:apps/client/src/components/graph-canvas/CustomSvgIcon.tsx:241"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"apps/client/src/conflict-resolvers.ts","line":114,"fingerprint":"javascript.lang.correctness.no-replaceall:apps/client/src/conflict-resolvers.ts:114"},{"rule_id":"opengrep/javascript.lang.correctness.no-replaceall","severity":"medium","message":"The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, \"good\") instead of mystring.replaceAll(\"bad\", \"good\") (https://discourse.thre","path":"apps/server/src/lockfile-install.ts","line":134,"fingerprint":"javascript.lang.correctness.no-replaceall:apps/server/src/lockfile-install.ts:134"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`const` is assigned twice; the first assignment is useless","path":"apps/cli/bin/ingit.cjs","line":8,"fingerprint":"javascript.lang.correctness.useless-assignment:apps/cli/bin/ingit.cjs:8"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`const` is assigned twice; the first assignment is useless","path":"apps/cli/bin/ingit.cjs","line":9,"fingerprint":"javascript.lang.correctness.useless-assignment:apps/cli/bin/ingit.cjs: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":"apps/client/src/App.tsx","line":579,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/App.tsx:579"},{"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":"apps/client/src/App.tsx","line":579,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/App.tsx:579"},{"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":"apps/client/src/App.tsx","line":824,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/App.tsx:824"},{"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":"apps/client/src/App.tsx","line":824,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/App.tsx:824"},{"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":"apps/client/src/components/AgentIcon.tsx","line":36,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/AgentIcon.tsx: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":"apps/client/src/components/AgentIcon.tsx","line":36,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/AgentIcon.tsx: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":"apps/client/src/components/CommitDetail.tsx","line":635,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/CommitDetail.tsx:635"},{"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":"apps/client/src/components/CommitDetail.tsx","line":635,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/CommitDetail.tsx:635"},{"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":"apps/client/src/components/CommitMessageSettings.tsx","line":109,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/CommitMessageSettings.tsx:109"},{"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":"apps/client/src/components/CommitMessageSettings.tsx","line":109,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/CommitMessageSettings.tsx:109"},{"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":"apps/client/src/components/DiffView.tsx","line":41,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/DiffView.tsx:41"},{"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":"apps/client/src/components/DiffView.tsx","line":41,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/DiffView.tsx:41"},{"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":"apps/client/src/components/InstallOutputDialog.tsx","line":41,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/InstallOutputDialog.tsx:41"},{"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":"apps/client/src/components/InstallOutputDialog.tsx","line":41,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/InstallOutputDialog.tsx:41"},{"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":"apps/client/src/components/RepoOpen.tsx","line":348,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/RepoOpen.tsx:348"},{"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":"apps/client/src/components/RepoOpen.tsx","line":348,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/RepoOpen.tsx:348"},{"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":"apps/client/src/components/SettingsDialog.tsx","line":991,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/SettingsDialog.tsx:991"},{"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":"apps/client/src/components/SettingsDialog.tsx","line":991,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/SettingsDialog.tsx:991"},{"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":"apps/client/src/components/SshConversionDialog.tsx","line":56,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/SshConversionDialog.tsx:56"},{"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":"apps/client/src/components/SshConversionDialog.tsx","line":56,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:apps/client/src/components/SshConversionDialog.tsx:56"},{"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":"packages/git-core/src/repo-session.ts","line":993,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:packages/git-core/src/repo-session.ts:993"},{"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":"packages/git-core/src/repo-session.ts","line":993,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:packages/git-core/src/repo-session.ts:993"},{"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":"packages/git-core/src/repo-session.ts","line":1223,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:packages/git-core/src/repo-session.ts:1223"},{"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":"packages/git-core/src/repo-session.ts","line":1223,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:packages/git-core/src/repo-session.ts:1223"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`slot` is assigned twice; the first assignment is useless","path":"packages/graph-core/src/lane-ordering.ts","line":542,"fingerprint":"javascript.lang.correctness.useless-assignment:packages/graph-core/src/lane-ordering.ts:542"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.4424,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":0.0,"check:tests_cochange":1.0,"test_lines":7887.0,"source_lines":35657.0,"test_ratio":0.2212,"ci_files":2.0,"cochange_share":0.5854,"cochange_commits":164.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},{"kind":"ci","description":"CI runs tests (bun test)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["bun test"],"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":86.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":1.0,"check:low_escape_density":1.0,"escapes":1.0,"escapes_per_kloc":0.028},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: apps/client/tsconfig.json","ref":"apps/client/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":2425.0,"other_lines":33232.0,"files_blamed":115.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":142.0,"quality:other_per_kloc":4.273,"quality:ratio":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":14.0,"security:other_per_kloc":0.421,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}