{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:46:40.499086Z","repo":{"ref":{"host":"github.com","owner":"rm2thaddeus","name":"Pixel_Detective"},"default_branch":"main","clone_url":"https://github.com/rm2thaddeus/Pixel_Detective.git","html_url":"https://github.com/rm2thaddeus/Pixel_Detective","description":"A repository for the Pixel Detective project.","stars":21,"forks":2,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":21828,"primary_language":"Python","license_spdx":"MIT","created_at":"2025-03-10T15:18:20Z","pushed_at":"2026-02-04T13:13:21Z","security_policy_url":null,"distribution":{"owner_created_at":"2012-08-20T00:31:21Z","owner_type":"User","release_assets":[]}},"commit_sha":"8e741807f9b04e4bbb5c1b5c6460cd271e600837","profile":{"lines_by_language":{"Python":36423,"TypeScript":25853,"PowerShell":1139,"JavaScript":879,"Shell":3},"files_by_category":{"vendored":1392,"source":243,"docs":208,"other":73,"config":44,"test":25,"binary":8,"oversized":4,"generated":3},"source_lines":60918,"test_lines":3379},"pillars":{"ai_provenance":{"score":2.6,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0259,"suspected_share":0.1953,"estimated_share":0.0259,"ai_artifacts":29.0,"flagged_work_units":10.0,"flagged_releases":null},"summary":"Explicit AI attribution on 3% of first-party code added; an estimated 3% including velocity signals."},"quality":{"score":49.1,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":39.3,"duplication":58.7,"lint":49.2,"testing":41.2,"docs":85.0,"type_safety":26.3,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.06, no CI test run detected; 31% of function code in complex or long functions; 9% duplicated lines. Weakest area: type safety."},"security":{"score":56.0,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":86.7,"dependencies":0.0,"ci_actions":53.8,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 381 known vulnerabilities in 57 dependencies; 11 high-severity SAST findings; 3 high-severity workflow issues. Weakest area: dependencies."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":148.0,"checked":148.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":309.0,"attributed_commits":20.0,"attributed_commit_share":0.06472491909385113,"effective_loc":104097.0,"attributed_loc":2698.0,"attributed_loc_share":0.025918134048051336,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"OpenAI Codex: 14 attributed commits, 2,678 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"Claude Code: 6 attributed commits, 20 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9a066452a6970591c313910247e91b7dd4557b0f","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/9a066452a6970591c313910247e91b7dd4557b0f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"44cae356080d4a1d79984000add4754bcc70fafc","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/44cae356080d4a1d79984000add4754bcc70fafc","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a234add568413b2865ac0420b49898bde2a1ae25","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/a234add568413b2865ac0420b49898bde2a1ae25","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d2c74c5d7445b598c90a6254430b2c90b93ccfe8","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/d2c74c5d7445b598c90a6254430b2c90b93ccfe8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e6d0d782d6226a4fbce2257ea41a5e6f0cf388df","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/e6d0d782d6226a4fbce2257ea41a5e6f0cf388df","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0f2bda092922f930c12d5ac55b3c820326c0a29d","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/0f2bda092922f930c12d5ac55b3c820326c0a29d","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (288501749b)","ref":"77049264d7371bb77486acdc540a260103a26030","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/77049264d7371bb77486acdc540a260103a26030","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (ed072ad457)","ref":"45c9d2c5e0dc1c2702bbb24547d2aa5e9106d1a2","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/45c9d2c5e0dc1c2702bbb24547d2aa5e9106d1a2","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (e8b4a3f924)","ref":"16566391537f7a8b40db1174f07f912edae4b3d8","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/16566391537f7a8b40db1174f07f912edae4b3d8","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (f501743000)","ref":"eb43da1132569cf445135dd4a15148cbadedf966","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/eb43da1132569cf445135dd4a15148cbadedf966","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (eefaaf87b3)","ref":"e29c52808ace11ee03bfca2b7fde9abaa7fb26a7","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/e29c52808ace11ee03bfca2b7fde9abaa7fb26a7","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (3e0d95f1eb)","ref":"fb26d508864df99d713d868db46a8ec48478ca43","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/fb26d508864df99d713d868db46a8ec48478ca43","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (42c88dd7b7)","ref":"f60617693ed7ec2647d0270f2519d455a9987893","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/f60617693ed7ec2647d0270f2519d455a9987893","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (e1198122b2)","ref":"a984ced4b788ac2c0ab49835aff44fd92462e2c2","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/a984ced4b788ac2c0ab49835aff44fd92462e2c2","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (7a584ee4fe)","ref":"fd723bcc6d91ad17b640d0608697613a997d1ed8","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/fd723bcc6d91ad17b640d0608697613a997d1ed8","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (5e0991a524)","ref":"169e0b6951ade2e08a91cf12d725146a0fe41e73","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/169e0b6951ade2e08a91cf12d725146a0fe41e73","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (5e0991a524)","ref":"cf0f89e55a460a8ccfbd9aaef8e503f4fcacdfaa","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/cf0f89e55a460a8ccfbd9aaef8e503f4fcacdfaa","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (41e65f7681)","ref":"0409311f5fdcf1b05c51fe34047d3dca289b2575","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/0409311f5fdcf1b05c51fe34047d3dca289b2575","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (c7ee4d2302)","ref":"fe01e7458271368d77fb2e00075b25b1a2a6f33f","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/fe01e7458271368d77fb2e00075b25b1a2a6f33f","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (e0b2d451b7)","ref":"0c638479e098276da5abb819ec6db505931cd4c5","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/0c638479e098276da5abb819ec6db505931cd4c5","weight":0.9}],"data":{"attributed_loc_by_commit":{"0c638479e098276da5abb819ec6db505931cd4c5":94,"fe01e7458271368d77fb2e00075b25b1a2a6f33f":0,"0409311f5fdcf1b05c51fe34047d3dca289b2575":1148,"cf0f89e55a460a8ccfbd9aaef8e503f4fcacdfaa":160,"169e0b6951ade2e08a91cf12d725146a0fe41e73":14,"fd723bcc6d91ad17b640d0608697613a997d1ed8":42,"a984ced4b788ac2c0ab49835aff44fd92462e2c2":154,"f60617693ed7ec2647d0270f2519d455a9987893":196,"fb26d508864df99d713d868db46a8ec48478ca43":77,"e29c52808ace11ee03bfca2b7fde9abaa7fb26a7":124,"eb43da1132569cf445135dd4a15148cbadedf966":421,"16566391537f7a8b40db1174f07f912edae4b3d8":25,"45c9d2c5e0dc1c2702bbb24547d2aa5e9106d1a2":59,"77049264d7371bb77486acdc540a260103a26030":164,"0f2bda092922f930c12d5ac55b3c820326c0a29d":20,"e6d0d782d6226a4fbce2257ea41a5e6f0cf388df":0,"d2c74c5d7445b598c90a6254430b2c90b93ccfe8":0,"a234add568413b2865ac0420b49898bde2a1ae25":0,"44cae356080d4a1d79984000add4754bcc70fafc":0,"9a066452a6970591c313910247e91b7dd4557b0f":0},"tools":{"openai-codex":{"name":"OpenAI Codex","commits":14,"loc":2678,"first_seen":1749805276,"last_seen":1758041309},"claude-code":{"name":"Claude Code","commits":6,"loc":20,"first_seen":1770194399,"last_seen":1770210221}},"monthly":{"2025-03":{"loc":5777,"attributed_loc":0},"2025-05":{"loc":20941,"attributed_loc":0},"2025-06":{"loc":22798,"attributed_loc":1416},"2025-07":{"loc":7480,"attributed_loc":1014},"2025-08":{"loc":3484,"attributed_loc":0},"2025-09":{"loc":38850,"attributed_loc":248},"2025-10":{"loc":218,"attributed_loc":0},"2025-11":{"loc":37,"attributed_loc":0},"2026-01":{"loc":4492,"attributed_loc":0},"2026-02":{"loc":20,"attributed_loc":20}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":29.0,"workflow_agents":0.0,"tools_configured":2.0,"earliest_adoption":1747898960.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"backend/AGENTS.md (generic-agent configuration)","ref":"backend/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"backend/gpu_umap_service/AGENTS.md (generic-agent configuration)","ref":"backend/gpu_umap_service/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/gpu_umap_service/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"backend/ingestion_orchestration_fastapi_app/AGENTS.md (generic-agent configuration)","ref":"backend/ingestion_orchestration_fastapi_app/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/ingestion_orchestration_fastapi_app/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"backend/ml_inference_fastapi_app/AGENTS.md (generic-agent configuration)","ref":"backend/ml_inference_fastapi_app/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/ml_inference_fastapi_app/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"dev_graph_audit/AGENTS.md (generic-agent configuration)","ref":"dev_graph_audit/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/dev_graph_audit/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"developer_graph/AGENTS.md (generic-agent configuration)","ref":"developer_graph/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"developer_graph/routes/AGENTS.md (generic-agent configuration)","ref":"developer_graph/routes/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/routes/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"frontend/AGENTS.md (generic-agent configuration)","ref":"frontend/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/frontend/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"tools/dev-graph-ui/AGENTS.md (generic-agent configuration)","ref":"tools/dev-graph-ui/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"tools/dev-graph-ui/src/app/dev-graph/components/AGENTS.md (generic-agent configuration)","ref":"tools/dev-graph-ui/src/app/dev-graph/components/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/src/app/dev-graph/components/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"tools/dev-graph-ui/src/app/dev-graph/structure/AGENTS.md (generic-agent configuration)","ref":"tools/dev-graph-ui/src/app/dev-graph/structure/AGENTS.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/src/app/dev-graph/structure/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":".cursor/cursor_rules.md (cursor configuration)","ref":".cursor/cursor_rules.md","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/cursor_rules.md","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/auto-activation-config.mdc (cursor configuration)","ref":".cursor/rules/auto-activation-config.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/auto-activation-config.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/cross-reference-guide.mdc (cursor configuration)","ref":".cursor/rules/cross-reference-guide.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/cross-reference-guide.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/debugging.mdc (cursor configuration)","ref":".cursor/rules/debugging.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/debugging.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/docker-mcp-operations.mdc (cursor configuration)","ref":".cursor/rules/docker-mcp-operations.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/docker-mcp-operations.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/fastapi.mdc (cursor configuration)","ref":".cursor/rules/fastapi.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/fastapi.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/feature-request.mdc (cursor configuration)","ref":".cursor/rules/feature-request.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/feature-request.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/mcp-browser-tools-setup.mdc (cursor configuration)","ref":".cursor/rules/mcp-browser-tools-setup.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/mcp-browser-tools-setup.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/powershell-syntax.mdc (cursor configuration)","ref":".cursor/rules/powershell-syntax.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/powershell-syntax.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/projectrules.mdc (cursor configuration)","ref":".cursor/rules/projectrules.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/projectrules.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/quick-troubleshooting-index.mdc (cursor configuration)","ref":".cursor/rules/quick-troubleshooting-index.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/quick-troubleshooting-index.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/react.mdc (cursor configuration)","ref":".cursor/rules/react.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/react.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/smart-entry-points.mdc (cursor configuration)","ref":".cursor/rules/smart-entry-points.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/smart-entry-points.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/sprint-lessons-learned.mdc (cursor configuration)","ref":".cursor/rules/sprint-lessons-learned.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/sprint-lessons-learned.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/sprint-planning.mdc (cursor configuration)","ref":".cursor/rules/sprint-planning.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/sprint-planning.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/sprint10-testing-patterns.mdc (cursor configuration)","ref":".cursor/rules/sprint10-testing-patterns.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/sprint10-testing-patterns.mdc","weight":0.5},{"kind":"ai-artifact","description":".cursor/rules/use-mcp-servers.mdc (cursor configuration)","ref":".cursor/rules/use-mcp-servers.mdc","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/.cursor/rules/use-mcp-servers.mdc","weight":0.5}],"data":{"artifacts":[{"tool":"generic-agent","path":"AGENTS.md","added_at":1759395352},{"tool":"generic-agent","path":"backend/AGENTS.md","added_at":1759395352},{"tool":"generic-agent","path":"backend/gpu_umap_service/AGENTS.md","added_at":1759395352},{"tool":"generic-agent","path":"backend/ingestion_orchestration_fastapi_app/AGENTS.md","added_at":1759395352},{"tool":"generic-agent","path":"backend/ml_inference_fastapi_app/AGENTS.md","added_at":1759395352},{"tool":"generic-agent","path":"dev_graph_audit/AGENTS.md","added_at":1759236887},{"tool":"generic-agent","path":"developer_graph/AGENTS.md","added_at":1759236887},{"tool":"generic-agent","path":"developer_graph/routes/AGENTS.md","added_at":1759236887},{"tool":"generic-agent","path":"frontend/AGENTS.md","added_at":1759395352},{"tool":"generic-agent","path":"tools/dev-graph-ui/AGENTS.md","added_at":1759244227},{"tool":"generic-agent","path":"tools/dev-graph-ui/src/app/dev-graph/components/AGENTS.md","added_at":1759244227},{"tool":"generic-agent","path":"tools/dev-graph-ui/src/app/dev-graph/structure/AGENTS.md","added_at":1759244227},{"tool":"cursor","path":".cursor/cursor_rules.md","added_at":1747898960},{"tool":"cursor","path":".cursor/rules/auto-activation-config.mdc","added_at":1750070862},{"tool":"cursor","path":".cursor/rules/cross-reference-guide.mdc","added_at":1750066770},{"tool":"cursor","path":".cursor/rules/debugging.mdc","added_at":1748087390},{"tool":"cursor","path":".cursor/rules/docker-mcp-operations.mdc","added_at":1748088592},{"tool":"cursor","path":".cursor/rules/fastapi.mdc","added_at":1750079228},{"tool":"cursor","path":".cursor/rules/feature-request.mdc","added_at":1748087390},{"tool":"cursor","path":".cursor/rules/mcp-browser-tools-setup.mdc","added_at":1750066770},{"tool":"cursor","path":".cursor/rules/powershell-syntax.mdc","added_at":1748087592},{"tool":"cursor","path":".cursor/rules/projectrules.mdc","added_at":1750070862},{"tool":"cursor","path":".cursor/rules/quick-troubleshooting-index.mdc","added_at":1750066770},{"tool":"cursor","path":".cursor/rules/react.mdc","added_at":1750079228},{"tool":"cursor","path":".cursor/rules/smart-entry-points.mdc","added_at":1750070862},{"tool":"cursor","path":".cursor/rules/sprint-lessons-learned.mdc","added_at":1750066770},{"tool":"cursor","path":".cursor/rules/sprint-planning.mdc","added_at":1748120373},{"tool":"cursor","path":".cursor/rules/sprint10-testing-patterns.mdc","added_at":1750066770},{"tool":"cursor","path":".cursor/rules/use-mcp-servers.mdc","added_at":1748087390}],"workflows":[],"tools":["cursor","generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":154.0,"flagged_units":10.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":89644.0,"flagged_loc":20325.0,"flagged_loc_share":0.22673017714515192,"max_loc_per_hour":1396.0629921259842,"median_loc_per_hour":150.49151027703306,"pr_timed_units":0.0,"excluded_import_loc":14453.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,182 lines of first-party code in ~0.8h (1,396 lines/hour, 1 commit session)","ref":"ee620b9deabda163071c023982efd50daea7bc86","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/ee620b9deabda163071c023982efd50daea7bc86","weight":0.41881889763779523},{"kind":"velocity-burst","description":"1,783 lines of first-party code in ~1.7h (1,050 lines/hour, 1 commit session)","ref":"6fe2553f6935903f85a27a2217883665d64d434c","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/6fe2553f6935903f85a27a2217883665d64d434c","weight":0.31495583905789987},{"kind":"velocity-burst","description":"2,253 lines of first-party code in ~2.3h (976 lines/hour, 2 commit session)","ref":"6754883fbbcbb83bcb4a3e5240baa3be5920775f","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/6754883fbbcbb83bcb4a3e5240baa3be5920775f","weight":0.29277343279990375},{"kind":"velocity-burst","description":"3,115 lines of first-party code in ~4.0h (779 lines/hour, 1 commit session)","ref":"1d5c2a3b81ecbd8bb8d8561d5f1df3bff1077b94","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/1d5c2a3b81ecbd8bb8d8561d5f1df3bff1077b94","weight":0.233625},{"kind":"velocity-burst","description":"1,213 lines of first-party code in ~1.6h (776 lines/hour, 1 commit session)","ref":"38461fff035aabf4ef6409131cd6b47b1b8eed68","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/38461fff035aabf4ef6409131cd6b47b1b8eed68","weight":0.23281322196552334},{"kind":"velocity-burst","description":"1,287 lines of first-party code in ~1.9h (664 lines/hour, 2 commit session)","ref":"c1d20d283c02301cf06f463eb44093a3d5362083","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/c1d20d283c02301cf06f463eb44093a3d5362083","weight":0.1992202952558406},{"kind":"velocity-burst","description":"2,400 lines of first-party code in ~4.0h (600 lines/hour, 1 commit session)","ref":"316f57725bd989bd1bfe61c66179675c414682b2","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/316f57725bd989bd1bfe61c66179675c414682b2","weight":0.18},{"kind":"velocity-burst","description":"2,557 lines of first-party code in ~4.5h (572 lines/hour, 2 commit session)","ref":"ea0174b55610fe845ab1cae7cbbdc67ac85b97b5","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/ea0174b55610fe845ab1cae7cbbdc67ac85b97b5","weight":0.17164273727391385},{"kind":"velocity-burst","description":"2,280 lines of first-party code in ~4.0h (570 lines/hour, 1 commit session)","ref":"d5614beccb987e801ece663f6f45fb2ffd71d6e6","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/d5614beccb987e801ece663f6f45fb2ffd71d6e6","weight":0.17099999999999999},{"kind":"velocity-burst","description":"2,255 lines of first-party code in ~4.0h (564 lines/hour, 1 commit session)","ref":"0c23186ba95508bdc5761e200b89a21527285e4f","url":"https://github.com/rm2thaddeus/Pixel_Detective/commit/0c23186ba95508bdc5761e200b89a21527285e4f","weight":0.169125}],"data":{"flagged_loc_by_commit":{"5f988e03b17b4d64fbe7d86ce6399487ef176e77":2136,"6754883fbbcbb83bcb4a3e5240baa3be5920775f":117,"774a35ab6dfd9df5b375e2da0d83fbd8df7ae5ff":1227,"c1d20d283c02301cf06f463eb44093a3d5362083":60,"ee620b9deabda163071c023982efd50daea7bc86":1182,"0c23186ba95508bdc5761e200b89a21527285e4f":2255,"316f57725bd989bd1bfe61c66179675c414682b2":2400,"f1cfad6c6304bf938d9c7da498febe44fc0d4dbc":1104,"ea0174b55610fe845ab1cae7cbbdc67ac85b97b5":1453,"1d5c2a3b81ecbd8bb8d8561d5f1df3bff1077b94":3115,"d5614beccb987e801ece663f6f45fb2ffd71d6e6":2280,"6fe2553f6935903f85a27a2217883665d64d434c":1783,"38461fff035aabf4ef6409131cd6b47b1b8eed68":1213},"excluded_import_commits":["5ce0d02e6bfa4854156e03dfb59e5eaa86c0af58","70a194dd043959bff48887df3f0f760e5cd7b1db","71a4071ac1470f28274315c00f283c3248dd2efc"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":60918.0,"index":2.815,"count:narrated_steps":15.0,"per_kloc:narrated_steps":0.246,"files:narrated_steps":4.0,"count:placeholder":7.0,"per_kloc:placeholder":0.115,"files:placeholder":6.0,"count:emoji_in_code":269.0,"per_kloc:emoji_in_code":4.416,"files:emoji_in_code":34.0,"count:assistant_voice":4.0,"per_kloc:assistant_voice":0.066,"files:assistant_voice":4.0},"findings":[],"evidence":[{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: # In a real app, this manager instance would be passed around or accessed via a singleton pattern.","ref":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py:359","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_06_service_superseded_managers/optimized_model_manager.py#L359","weight":0.0},{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: # This is a simplified version - in production, use a proper contrast checker","ref":"archive/sprint_09_frontend_ideas/accessibility.py:413","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_09_frontend_ideas/accessibility.py#L413","weight":0.0},{"kind":"stylometry:assistant_voice","description":"assistant-style phrasing left in code: Key Improvements:","ref":"backend/ingestion_orchestration_fastapi_app/routers/ingest.py:536","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/ingestion_orchestration_fastapi_app/routers/ingest.py#L536","weight":0.0},{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: # This is a placeholder implementation. In a real application, this would","ref":"database/db_manager.py:10","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/database/db_manager.py#L10","weight":0.0},{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: # This is a placeholder implementation. In a real application, this would","ref":"database/db_manager.py:15","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/database/db_manager.py#L15","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # First, run the basic enhanced ingest to get sprints, requirements, documents, chunks","ref":"developer_graph/enhanced_git_ingest.py:192","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/enhanced_git_ingest.py#L192","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: Extract commits using single git log command","ref":"developer_graph/parallel_ingestion.py:72","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/parallel_ingestion.py#L72","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: Process commits in parallel batches","ref":"developer_graph/parallel_ingestion.py:80","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/parallel_ingestion.py#L80","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":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":56.0,"findings_high":11.0,"findings_medium":37.0,"findings_low":8.0,"weighted_findings":24.3,"scanned_lines":59779.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"backend/developer_graph_service/Dockerfile","line":17,"fingerprint":"dockerfile.security.missing-user:backend/developer_graph_service/Dockerfile:17"},{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"backend/gpu_umap_service/Dockerfile","line":15,"fingerprint":"dockerfile.security.missing-user:backend/gpu_umap_service/Dockerfile:15"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"developer_graph/parallel_ingestion.py","line":136,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:developer_graph/parallel_ingestion.py:136"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"developer_graph/parallel_ingestion.py","line":316,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:developer_graph/parallel_ingestion.py:316"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"developer_graph/routes/optimized_ingest.py","line":216,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:developer_graph/routes/optimized_ingest.py:216"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"developer_graph/routes/unlimited_ingest.py","line":230,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:developer_graph/routes/unlimited_ingest.py:230"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_standalone.py","line":83,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:skills/dev-graph-exports/scripts/export_timeline_segments_standalone.py:83"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_standalone.py","line":94,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:skills/dev-graph-exports/scripts/export_timeline_segments_standalone.py:94"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"skills/rituals-guide/scripts/audit_and_scaffold_rituals.py","line":35,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:skills/rituals-guide/scripts/audit_and_scaffold_rituals.py:35"},{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"tools/dev-graph-ui/Dockerfile","line":18,"fingerprint":"dockerfile.security.missing-user:tools/dev-graph-ui/Dockerfile:18"},{"rule_id":"opengrep/python.lang.security.use-defused-xml","severity":"high","message":"The Python documentation recommends using `defusedxml` instead of `xml` because the native Python `xml` library is vulnerable to XML External Entity (XXE) attacks. These attacks can leak confidential data and \"XML bombs\" can cause denial of service. [confidence low]","path":"utils/metadata_extractor.py","line":8,"fingerprint":"python.lang.security.use-defused-xml:utils/metadata_extractor.py:8"},{"rule_id":"opengrep/python.fastapi.security.wildcard-cors","severity":"medium","message":"CORS policy allows any origin (using wildcard '*'). This is insecure and should be avoided. [confidence medium]","path":"backend/gpu_umap_service/main.py","line":11,"fingerprint":"python.fastapi.security.wildcard-cors:backend/gpu_umap_service/main.py:11"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":30,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:30"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":31,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:31"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":32,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:32"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":40,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:40"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":44,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:44"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":48,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:48"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":55,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:55"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":65,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:65"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"backend/ml_inference_fastapi_app/services/redis_scheduler.py","line":68,"fingerprint":"python.lang.security.deserialization.avoid-pickle:backend/ml_inference_fastapi_app/services/redis_scheduler.py:68"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/code_symbol_extractor.py","line":430,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:developer_graph/code_symbol_extractor.py:430"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/document_code_linker.py","line":478,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:developer_graph/document_code_linker.py:478"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/document_code_linker.py","line":489,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:developer_graph/document_code_linker.py:489"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/ingestion_manifest.py","line":180,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:developer_graph/ingestion_manifest.py:180"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-md5","severity":"medium","message":"Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/temporal_engine.py","line":858,"fingerprint":"python.lang.security.insecure-hash-algorithm-md5:developer_graph/temporal_engine.py:858"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-md5","severity":"medium","message":"Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/temporal_engine.py","line":875,"fingerprint":"python.lang.security.insecure-hash-algorithm-md5:developer_graph/temporal_engine.py:875"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-md5","severity":"medium","message":"Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/web_utils.py","line":38,"fingerprint":"python.lang.security.insecure-hash-algorithm-md5:developer_graph/web_utils.py:38"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-md5","severity":"medium","message":"Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"developer_graph/web_utils.py","line":41,"fingerprint":"python.lang.security.insecure-hash-algorithm-md5:developer_graph/web_utils.py:41"},{"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":"frontend/src/app/latent-space/utils/visualization.ts","line":900,"fingerprint":"javascript.lang.security.html-in-template-string:frontend/src/app/latent-space/utils/visualization.ts:900"},{"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":"frontend/src/app/latent-space/utils/visualization.ts","line":916,"fingerprint":"javascript.lang.security.html-in-template-string:frontend/src/app/latent-space/utils/visualization.ts:916"},{"rule_id":"opengrep/python.lang.security.audit.dynamic-urllib-use-detected","severity":"medium","message":"Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead. [confidence low]","path":"skills/dev-graph-exports/scripts/export_dashboard_data.py","line":18,"fingerprint":"python.lang.security.audit.dynamic-urllib-use-detected:skills/dev-graph-exports/scripts/export_dashboard_data.py:18"},{"rule_id":"opengrep/python.lang.security.audit.dynamic-urllib-use-detected","severity":"medium","message":"Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_standalone.py","line":21,"fingerprint":"python.lang.security.audit.dynamic-urllib-use-detected:skills/dev-graph-exports/scripts/export_timeline_segments_standalone.py:21"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `p` 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-controlled in [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":234,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:234"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `pngPath` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":455,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:455"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `dir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":714,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:714"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `dir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":715,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:715"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `dir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":717,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:717"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `file` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":717,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:717"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `dir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":719,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:719"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `file` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":719,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:719"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `dir` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":721,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:721"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `file` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":721,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:721"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `file` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":752,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:752"},{"rule_id":"opengrep/python.lang.security.audit.dynamic-urllib-use-detected","severity":"medium","message":"Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead. [confidence low]","path":"skills/sprint-perspectives/scripts/generate_sprint_perspectives.py","line":129,"fingerprint":"python.lang.security.audit.dynamic-urllib-use-detected:skills/sprint-perspectives/scripts/generate_sprint_perspectives.py:129"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `p` 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-controlled in [confidence low]","path":"tools/dev-graph-ui/src/app/dev-graph/components/ProgressiveStructureGraph.tsx","line":530,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:tools/dev-graph-ui/src/app/dev-graph/components/ProgressiveStructureGraph.tsx:530"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"utils/embedding_cache.py","line":22,"fingerprint":"python.lang.security.deserialization.avoid-pickle:utils/embedding_cache.py:22"},{"rule_id":"opengrep/python.lang.security.deserialization.avoid-pickle","severity":"medium","message":"Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format. [confidence low]","path":"utils/embedding_cache.py","line":26,"fingerprint":"python.lang.security.deserialization.avoid-pickle:utils/embedding_cache.py:26"},{"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":"frontend/src/app/latent-space/components/UMAPScatterPlot.tsx","line":766,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:frontend/src/app/latent-space/components/UMAPScatterPlot.tsx:766"},{"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":"frontend/src/app/latent-space/hooks/useStreamingUMAP.ts","line":134,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:frontend/src/app/latent-space/hooks/useStreamingUMAP.ts:134"},{"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":"frontend/src/app/latent-space/hooks/useStreamingUMAP.ts","line":146,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:frontend/src/app/latent-space/hooks/useStreamingUMAP.ts:146"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/BiologicalEvolutionGraph.tsx","line":545,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:tools/dev-graph-ui/src/app/dev-graph/components/BiologicalEvolutionGraph.tsx:545"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/EvolutionGraph.tsx","line":596,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:tools/dev-graph-ui/src/app/dev-graph/components/EvolutionGraph.tsx:596"},{"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":"tools/dev-graph-ui/src/app/dev-graph/structure/page.tsx","line":197,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:tools/dev-graph-ui/src/app/dev-graph/structure/page.tsx:197"},{"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":"tools/dev-graph-ui/src/app/dev-graph/structure/page.tsx","line":258,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:tools/dev-graph-ui/src/app/dev-graph/structure/page.tsx:258"},{"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":"tools/dev-graph-ui/src/app/dev-graph/structure/page.tsx","line":259,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:tools/dev-graph-ui/src/app/dev-graph/structure/page.tsx:259"}],"evidence":[],"data":{"rulesets":["python","typescript","javascript","bash","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":57.0,"vulnerabilities":381.0,"vulns_critical":23.0,"vulns_high":211.0,"vulns_medium":132.0,"vulns_low":13.0,"vulns_unknown":2.0,"penalty":476.0},"findings":[{"rule_id":"osv/GHSA-m7jm-9gc2-mpf2","severity":"critical","message":"fast-xml-parser@4.5.3 (npm) is affected by GHSA-m7jm-9gc2-mpf2","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-xml-parser@4.5.3 (npm):GHSA-m7jm-9gc2-mpf2"},{"rule_id":"osv/GHSA-fjxv-7rqg-78g4","severity":"critical","message":"form-data@4.0.3 (npm) is affected by GHSA-fjxv-7rqg-78g4","path":"frontend/package-lock.json","line":null,"fingerprint":"form-data@4.0.3 (npm):GHSA-fjxv-7rqg-78g4"},{"rule_id":"osv/GHSA-2464-fhr4-w9xw","severity":"critical","message":"next@15.3.3 (npm) is affected by GHSA-2464-fhr4-w9xw","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-2464-fhr4-w9xw"},{"rule_id":"osv/GHSA-2xp9-vwfh-vxw4","severity":"critical","message":"next@15.3.3 (npm) is affected by GHSA-2xp9-vwfh-vxw4","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-2xp9-vwfh-vxw4"},{"rule_id":"osv/GHSA-9qr9-h5gf-34mp","severity":"critical","message":"next@15.3.3 (npm) is affected by GHSA-9qr9-h5gf-34mp","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-9qr9-h5gf-34mp"},{"rule_id":"osv/GHSA-p293-qw3h-jr36","severity":"critical","message":"next@15.3.3 (npm) is affected by GHSA-p293-qw3h-jr36","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-p293-qw3h-jr36"},{"rule_id":"osv/GHSA-x2qx-6953-8485","severity":"critical","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-2161, GHSA-x2qx-6953-8485","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-x2qx-6953-8485"},{"rule_id":"osv/GHSA-284h-m62q-gf8w","severity":"critical","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3786, GHSA-284h-m62q-gf8w","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-284h-m62q-gf8w"},{"rule_id":"osv/GHSA-82r6-8w77-94w6","severity":"critical","message":"anyio@4.8.0 (PyPI) is affected by PYSEC-2026-4025, GHSA-82r6-8w77-94w6","path":"requirements.txt","line":null,"fingerprint":"anyio@4.8.0 (PyPI):GHSA-82r6-8w77-94w6"},{"rule_id":"osv/GHSA-6q48-6c7w-9gw2","severity":"critical","message":"certifi@2025.1.31 (PyPI) is affected by PYSEC-2026-4320, GHSA-6q48-6c7w-9gw2","path":"requirements.txt","line":null,"fingerprint":"certifi@2025.1.31 (PyPI):GHSA-6q48-6c7w-9gw2"},{"rule_id":"osv/GHSA-vqfr-h8mv-ghfj","severity":"critical","message":"h11@0.14.0 (PyPI) is affected by PYSEC-2026-348, GHSA-vqfr-h8mv-ghfj","path":"requirements.txt","line":null,"fingerprint":"h11@0.14.0 (PyPI):GHSA-vqfr-h8mv-ghfj"},{"rule_id":"osv/GHSA-5x8w-8jj5-q52h","severity":"critical","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-5x8w-8jj5-q52h"},{"rule_id":"osv/GHSA-8g5g-8vmr-9782","severity":"critical","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-8g5g-8vmr-9782"},{"rule_id":"osv/GHSA-v9pv-5gc8-w2m6","severity":"critical","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4339, GHSA-v9pv-5gc8-w2m6","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-v9pv-5gc8-w2m6"},{"rule_id":"osv/GHSA-xvh5-g6gv-559v","severity":"critical","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-xvh5-g6gv-559v"},{"rule_id":"osv/GHSA-332p-7hrc-92wf","severity":"critical","message":"pillow@11.1.0 (PyPI) is affected by GHSA-332p-7hrc-92wf","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-332p-7hrc-92wf"},{"rule_id":"osv/GHSA-w889-685w-c8fh","severity":"critical","message":"pillow@11.1.0 (PyPI) is affected by GHSA-w889-685w-c8fh","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-w889-685w-c8fh"},{"rule_id":"osv/GHSA-fgcw-684q-jj6r","severity":"critical","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2026-2290, GHSA-fgcw-684q-jj6r","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):GHSA-fgcw-684q-jj6r"},{"rule_id":"osv/GHSA-2464-fhr4-w9xw","severity":"critical","message":"next@15.5.2 (npm) is affected by GHSA-2464-fhr4-w9xw","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-2464-fhr4-w9xw"},{"rule_id":"osv/GHSA-2xp9-vwfh-vxw4","severity":"critical","message":"next@15.5.2 (npm) is affected by GHSA-2xp9-vwfh-vxw4","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-2xp9-vwfh-vxw4"},{"rule_id":"osv/GHSA-9qr9-h5gf-34mp","severity":"critical","message":"next@15.5.2 (npm) is affected by GHSA-9qr9-h5gf-34mp","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-9qr9-h5gf-34mp"},{"rule_id":"osv/GHSA-p293-qw3h-jr36","severity":"critical","message":"next@15.5.2 (npm) is affected by GHSA-p293-qw3h-jr36","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-p293-qw3h-jr36"},{"rule_id":"osv/GHSA-23hp-3jrh-7fpw","severity":"critical","message":"tar@7.4.3 (npm) is affected by GHSA-23hp-3jrh-7fpw","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-23hp-3jrh-7fpw"},{"rule_id":"osv/GHSA-35jp-ww65-95wh","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-35jp-ww65-95wh","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-35jp-ww65-95wh"},{"rule_id":"osv/GHSA-3g43-6gmg-66jw","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-3g43-6gmg-66jw","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-3g43-6gmg-66jw"},{"rule_id":"osv/GHSA-43fc-jf86-j433","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-43fc-jf86-j433","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-43fc-jf86-j433"},{"rule_id":"osv/GHSA-4hjh-wcwx-xvwj","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-4hjh-wcwx-xvwj","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-4hjh-wcwx-xvwj"},{"rule_id":"osv/GHSA-62hf-57xw-28j9","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-62hf-57xw-28j9","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-62hf-57xw-28j9"},{"rule_id":"osv/GHSA-6chq-wfr3-2hj9","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-6chq-wfr3-2hj9","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-6chq-wfr3-2hj9"},{"rule_id":"osv/GHSA-777c-7fjr-54vf","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-777c-7fjr-54vf","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-777c-7fjr-54vf"},{"rule_id":"osv/GHSA-hfxv-24rg-xrqf","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-hfxv-24rg-xrqf","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-hfxv-24rg-xrqf"},{"rule_id":"osv/GHSA-j5f8-grm9-p9fc","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-j5f8-grm9-p9fc","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-j5f8-grm9-p9fc"},{"rule_id":"osv/GHSA-p92q-9vqr-4j8v","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-p92q-9vqr-4j8v","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-p92q-9vqr-4j8v"},{"rule_id":"osv/GHSA-pf86-5x62-jrwf","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-pf86-5x62-jrwf","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-pf86-5x62-jrwf"},{"rule_id":"osv/GHSA-pmwg-cvhr-8vh7","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-pmwg-cvhr-8vh7","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-pmwg-cvhr-8vh7"},{"rule_id":"osv/GHSA-q8qp-cvcw-x6jj","severity":"high","message":"axios@1.9.0 (npm) is affected by GHSA-q8qp-cvcw-x6jj","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-q8qp-cvcw-x6jj"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-3jxr-9vmj-r5cp; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-6j4f-fj2g-mc7p; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-mh99-v99m-4gvg; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-qhr7-859c-m2p7; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-rgw5-rvv9-x895; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-3jxr-9vmj-r5cp; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-6j4f-fj2g-mc7p; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-mh99-v99m-4gvg; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-qhr7-859c-m2p7; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-rgw5-rvv9-x895; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-8gc5-j5rx-235r","severity":"high","message":"fast-xml-parser@4.5.3 (npm) is affected by GHSA-8gc5-j5rx-235r","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-xml-parser@4.5.3 (npm):GHSA-8gc5-j5rx-235r"},{"rule_id":"osv/GHSA-jmr7-xgp7-cmfj","severity":"high","message":"fast-xml-parser@4.5.3 (npm) is affected by GHSA-jmr7-xgp7-cmfj","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-xml-parser@4.5.3 (npm):GHSA-jmr7-xgp7-cmfj"},{"rule_id":"osv/GHSA-px8p-9vwx-vf98","severity":"high","message":"fflate@0.7.4 (npm) is affected by GHSA-px8p-9vwx-vf98","path":"frontend/package-lock.json","line":null,"fingerprint":"fflate@0.7.4 (npm):GHSA-px8p-9vwx-vf98"},{"rule_id":"osv/GHSA-25h7-pfq9-p65f","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-25h7-pfq9-p65f; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-25h7-pfq9-p65f"},{"rule_id":"osv/GHSA-rf6f-7fwh-wjgh","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-rf6f-7fwh-wjgh; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-rf6f-7fwh-wjgh"},{"rule_id":"osv/GHSA-hmw2-7cc7-3qxx","severity":"high","message":"form-data@4.0.3 (npm) is affected by GHSA-hmw2-7cc7-3qxx","path":"frontend/package-lock.json","line":null,"fingerprint":"form-data@4.0.3 (npm):GHSA-hmw2-7cc7-3qxx"},{"rule_id":"osv/GHSA-w3rx-r6r6-pgpr","severity":"high","message":"image-size@0.7.5 (npm) is affected by GHSA-w3rx-r6r6-pgpr","path":"frontend/package-lock.json","line":null,"fingerprint":"image-size@0.7.5 (npm):GHSA-w3rx-r6r6-pgpr"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.1.0 (npm) is affected by GHSA-2883-xcg3-v3hh; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@4.1.0 (npm) is affected by GHSA-52cp-r559-cp3m; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.1.0 (npm) is affected by GHSA-5p4m-2wfm-xmqj; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-r5fr-rjxr-66jc","severity":"high","message":"lodash@4.17.21 (npm) is affected by GHSA-r5fr-rjxr-66jc","path":"frontend/package-lock.json","line":null,"fingerprint":"lodash@4.17.21 (npm):GHSA-r5fr-rjxr-66jc"},{"rule_id":"osv/GHSA-r5fr-rjxr-66jc","severity":"high","message":"lodash-es@4.17.21 (npm) is affected by GHSA-r5fr-rjxr-66jc","path":"frontend/package-lock.json","line":null,"fingerprint":"lodash-es@4.17.21 (npm):GHSA-r5fr-rjxr-66jc"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-23c5-xmqv-rm74; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-3ppc-4f35-3m26; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-7r86-cg39-jmmj; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-23c5-xmqv-rm74; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-3ppc-4f35-3m26; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-7r86-cg39-jmmj; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-28wg-ghj8-5hjv; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-2v37-7h3g-55p8; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-xwg4-73v4-xw9w; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-267c-6grr-h53f","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-267c-6grr-h53f","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-267c-6grr-h53f"},{"rule_id":"osv/GHSA-26hh-7cqf-hhc6","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-26hh-7cqf-hhc6","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-26hh-7cqf-hhc6"},{"rule_id":"osv/GHSA-36qx-fr4f-26g5","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-36qx-fr4f-26g5","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-36qx-fr4f-26g5"},{"rule_id":"osv/GHSA-89xv-2m56-2m9x","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-89xv-2m56-2m9x","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-89xv-2m56-2m9x"},{"rule_id":"osv/GHSA-8h8q-6873-q5fj","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-8h8q-6873-q5fj","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-8h8q-6873-q5fj"},{"rule_id":"osv/GHSA-c4j6-fc7j-m34r","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-c4j6-fc7j-m34r","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-c4j6-fc7j-m34r"},{"rule_id":"osv/GHSA-h25m-26qc-wcjf","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-h25m-26qc-wcjf","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-h25m-26qc-wcjf"},{"rule_id":"osv/GHSA-m99w-x7hq-7vfj","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-m99w-x7hq-7vfj","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-m99w-x7hq-7vfj"},{"rule_id":"osv/GHSA-mg66-mrh9-m8jx","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-mg66-mrh9-m8jx","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-mg66-mrh9-m8jx"},{"rule_id":"osv/GHSA-mwv6-3258-q52c","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-mwv6-3258-q52c","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-mwv6-3258-q52c"},{"rule_id":"osv/GHSA-p3m5-59mp-jv5r","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-p3m5-59mp-jv5r","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-p3m5-59mp-jv5r"},{"rule_id":"osv/GHSA-p9j2-gv94-2wf4","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-p9j2-gv94-2wf4","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-p9j2-gv94-2wf4"},{"rule_id":"osv/GHSA-q4gf-8mx6-v5v3","severity":"high","message":"next@15.3.3 (npm) is affected by GHSA-q4gf-8mx6-v5v3","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-q4gf-8mx6-v5v3"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@4.0.2 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"frontend/package-lock.json","line":null,"fingerprint":"picomatch@4.0.2 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-6g55-p6wh-862q; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-r28c-9q8g-f849; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.4.49 (npm) is affected by GHSA-6g55-p6wh-862q","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.49 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.4.49 (npm) is affected by GHSA-r28c-9q8g-f849","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.49 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-36hm-qxxp-pg3m","severity":"high","message":"preact@10.26.9 (npm) is affected by GHSA-36hm-qxxp-pg3m","path":"frontend/package-lock.json","line":null,"fingerprint":"preact@10.26.9 (npm):GHSA-36hm-qxxp-pg3m"},{"rule_id":"osv/GHSA-f88m-g3jw-g9cj","severity":"high","message":"sharp@0.34.2 (npm) is affected by GHSA-f88m-g3jw-g9cj","path":"frontend/package-lock.json","line":null,"fingerprint":"sharp@0.34.2 (npm):GHSA-f88m-g3jw-g9cj"},{"rule_id":"osv/GHSA-rgj7-g3m4-5g8c","severity":"high","message":"sharp@0.34.2 (npm) is affected by GHSA-rgj7-g3m4-5g8c","path":"frontend/package-lock.json","line":null,"fingerprint":"sharp@0.34.2 (npm):GHSA-rgj7-g3m4-5g8c"},{"rule_id":"osv/GHSA-wq5f-xc86-pv6w","severity":"high","message":"sharp@0.34.2 (npm) is affected by GHSA-wq5f-xc86-pv6w","path":"frontend/package-lock.json","line":null,"fingerprint":"sharp@0.34.2 (npm):GHSA-wq5f-xc86-pv6w"},{"rule_id":"osv/GHSA-2m8v-j782-fhvr","severity":"high","message":"socket.io-parser@4.2.4 (npm) is affected by GHSA-2m8v-j782-fhvr","path":"frontend/package-lock.json","line":null,"fingerprint":"socket.io-parser@4.2.4 (npm):GHSA-2m8v-j782-fhvr"},{"rule_id":"osv/GHSA-677m-j7p3-52f9","severity":"high","message":"socket.io-parser@4.2.4 (npm) is affected by GHSA-677m-j7p3-52f9","path":"frontend/package-lock.json","line":null,"fingerprint":"socket.io-parser@4.2.4 (npm):GHSA-677m-j7p3-52f9"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-w5hq-g745-h8pq","severity":"high","message":"uuid@9.0.0 (npm) is affected by GHSA-w5hq-g745-h8pq","path":"frontend/package-lock.json","line":null,"fingerprint":"uuid@9.0.0 (npm):GHSA-w5hq-g745-h8pq"},{"rule_id":"osv/GHSA-96hv-2xvq-fx4p","severity":"high","message":"ws@8.17.1 (npm) is affected by GHSA-96hv-2xvq-fx4p","path":"frontend/package-lock.json","line":null,"fingerprint":"ws@8.17.1 (npm):GHSA-96hv-2xvq-fx4p"},{"rule_id":"osv/GHSA-rpm5-65cw-6hj4","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-2160, GHSA-rpm5-65cw-6hj4","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-rpm5-65cw-6hj4"},{"rule_id":"osv/GHSA-7545-fcxq-7j24","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-2162, GHSA-7545-fcxq-7j24","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-7545-fcxq-7j24"},{"rule_id":"osv/GHSA-v87r-6q3f-2j67","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-2163, GHSA-v87r-6q3f-2j67","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-v87r-6q3f-2j67"},{"rule_id":"osv/GHSA-jm78-9fvv-mhgr","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3783, GHSA-jm78-9fvv-mhgr","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-jm78-9fvv-mhgr"},{"rule_id":"osv/GHSA-hmq2-w58f-27jc","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3784, GHSA-hmq2-w58f-27jc","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-hmq2-w58f-27jc"},{"rule_id":"osv/GHSA-7833-fr7j-v32q","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3785, GHSA-7833-fr7j-v32q","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-7833-fr7j-v32q"},{"rule_id":"osv/GHSA-8mcc-hrx5-hvxc","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3787, GHSA-8mcc-hrx5-hvxc","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-8mcc-hrx5-hvxc"},{"rule_id":"osv/GHSA-5xxx-qhh7-9287","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3788, GHSA-5xxx-qhh7-9287","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-5xxx-qhh7-9287"},{"rule_id":"osv/GHSA-2f96-g7mh-g2hx","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3836, GHSA-2f96-g7mh-g2hx","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-2f96-g7mh-g2hx"},{"rule_id":"osv/GHSA-4gmw-gg2m-w46p","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3838, GHSA-4gmw-gg2m-w46p","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-4gmw-gg2m-w46p"},{"rule_id":"osv/GHSA-956x-8gvw-wg5v","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3839, GHSA-956x-8gvw-wg5v","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-956x-8gvw-wg5v"},{"rule_id":"osv/GHSA-9rj7-rf2p-w77r","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3840, GHSA-9rj7-rf2p-w77r","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-9rj7-rf2p-w77r"},{"rule_id":"osv/GHSA-rwj8-pgh3-r573","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3842, GHSA-rwj8-pgh3-r573","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-rwj8-pgh3-r573"},{"rule_id":"osv/GHSA-wvpp-8hx9-p66j","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3843, GHSA-wvpp-8hx9-p66j","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-wvpp-8hx9-p66j"},{"rule_id":"osv/GHSA-539m-9xh6-q6rr","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3948, GHSA-539m-9xh6-q6rr","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-539m-9xh6-q6rr"},{"rule_id":"osv/GHSA-3f7w-8rr8-f37f","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3949, GHSA-3f7w-8rr8-f37f","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-3f7w-8rr8-f37f"},{"rule_id":"osv/GHSA-94p4-4cq8-9g67","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3951, GHSA-94p4-4cq8-9g67","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-94p4-4cq8-9g67"},{"rule_id":"osv/GHSA-6p8h-3wgx-97gf","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3952, GHSA-6p8h-3wgx-97gf","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-6p8h-3wgx-97gf"},{"rule_id":"osv/GHSA-r9mr-m37c-5fr3","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3953, GHSA-r9mr-m37c-5fr3","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-r9mr-m37c-5fr3"},{"rule_id":"osv/GHSA-mv93-w799-cj2w","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3980, GHSA-mv93-w799-cj2w","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-mv93-w799-cj2w"},{"rule_id":"osv/GHSA-3rp5-jjmw-4wv2","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3981, GHSA-3rp5-jjmw-4wv2","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-3rp5-jjmw-4wv2"},{"rule_id":"osv/GHSA-239g-whfq-7xj9","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3982, GHSA-239g-whfq-7xj9","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-239g-whfq-7xj9"},{"rule_id":"osv/GHSA-g5vv-9gxw-82hx","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3984, GHSA-g5vv-9gxw-82hx","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-g5vv-9gxw-82hx"},{"rule_id":"osv/GHSA-fjr4-x663-mwxc","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3995, GHSA-fjr4-x663-mwxc","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-fjr4-x663-mwxc"},{"rule_id":"osv/GHSA-23mf-xhv8-69c2","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-23mf-xhv8-69c2","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-23mf-xhv8-69c2"},{"rule_id":"osv/GHSA-83vg-56qc-22m7","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-83vg-56qc-22m7","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-83vg-56qc-22m7"},{"rule_id":"osv/GHSA-f9j4-qggq-h239","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-f9j4-qggq-h239","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-f9j4-qggq-h239"},{"rule_id":"osv/GHSA-m64x-33q8-m5h7","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-m64x-33q8-m5h7","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-m64x-33q8-m5h7"},{"rule_id":"osv/GHSA-w8jc-g24h-crhw","severity":"high","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-w8jc-g24h-crhw","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-w8jc-g24h-crhw"},{"rule_id":"osv/GHSA-4j2p-28q2-5m79","severity":"high","message":"accelerate@1.5.1 (PyPI) is affected by PYSEC-2026-3804, GHSA-4j2p-28q2-5m79","path":"requirements.txt","line":null,"fingerprint":"accelerate@1.5.1 (PyPI):GHSA-4j2p-28q2-5m79"},{"rule_id":"osv/GHSA-27vj-qcqg-25rc","severity":"high","message":"fsspec@2025.3.0 (PyPI) is affected by PYSEC-2026-4217, GHSA-27vj-qcqg-25rc","path":"requirements.txt","line":null,"fingerprint":"fsspec@2025.3.0 (PyPI):GHSA-27vj-qcqg-25rc"},{"rule_id":"osv/GHSA-cfh3-3jmp-rvhc","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2249, GHSA-cfh3-3jmp-rvhc","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-cfh3-3jmp-rvhc"},{"rule_id":"osv/GHSA-whj4-6x5x-4v2j","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2250, GHSA-whj4-6x5x-4v2j","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-whj4-6x5x-4v2j"},{"rule_id":"osv/GHSA-pwv6-vv43-88gr","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2252, GHSA-pwv6-vv43-88gr","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-pwv6-vv43-88gr"},{"rule_id":"osv/GHSA-8v84-f9pq-wr9x","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-8v84-f9pq-wr9x"},{"rule_id":"osv/GHSA-5x94-69rx-g8h2","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-5x94-69rx-g8h2"},{"rule_id":"osv/GHSA-45hq-cxwh-f6vc","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-45hq-cxwh-f6vc"},{"rule_id":"osv/GHSA-phj9-mv4w-65pm","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-phj9-mv4w-65pm"},{"rule_id":"osv/GHSA-6r8x-57c9-28j4","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-6r8x-57c9-28j4"},{"rule_id":"osv/GHSA-9hw9-ch79-4vh6","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-9hw9-ch79-4vh6"},{"rule_id":"osv/GHSA-xj96-63gp-2gmr","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-xj96-63gp-2gmr"},{"rule_id":"osv/GHSA-62p4-gmf7-7g93","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-62p4-gmf7-7g93"},{"rule_id":"osv/GHSA-jjj6-mw9f-p565","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-jjj6-mw9f-p565"},{"rule_id":"osv/GHSA-vjc4-5qp5-m44j","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-vjc4-5qp5-m44j"},{"rule_id":"osv/GHSA-27h8-gf7j-v5hc","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-27h8-gf7j-v5hc"},{"rule_id":"osv/GHSA-4558-3h8r-v8xp","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-4558-3h8r-v8xp"},{"rule_id":"osv/GHSA-58r4-6rv3-gfh8","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-58r4-6rv3-gfh8"},{"rule_id":"osv/GHSA-7mwm-ghpf-9vrm","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-7mwm-ghpf-9vrm"},{"rule_id":"osv/GHSA-pchr-8j38-3x4p","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-pchr-8j38-3x4p"},{"rule_id":"osv/GHSA-xgh8-jp6q-p5x8","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4335, GHSA-xgh8-jp6q-p5x8","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-xgh8-jp6q-p5x8"},{"rule_id":"osv/GHSA-g842-9rc4-69pw","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4338, GHSA-g842-9rc4-69pw","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-g842-9rc4-69pw"},{"rule_id":"osv/GHSA-3j72-p6qg-6xp7","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4341, GHSA-3j72-p6qg-6xp7","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-3j72-p6qg-6xp7"},{"rule_id":"osv/GHSA-g4qv-2jxx-769h","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4342, GHSA-g4qv-2jxx-769h","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-g4qv-2jxx-769h"},{"rule_id":"osv/GHSA-9v9v-9qvf-h2hj","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by PYSEC-2026-4343, GHSA-9v9v-9qvf-h2hj","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-9v9v-9qvf-h2hj"},{"rule_id":"osv/GHSA-22hg-r758-rrw9","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-22hg-r758-rrw9","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-22hg-r758-rrw9"},{"rule_id":"osv/GHSA-5xm2-6676-qcp9","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-5xm2-6676-qcp9","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-5xm2-6676-qcp9"},{"rule_id":"osv/GHSA-65qm-jvmh-6pqg","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-65qm-jvmh-6pqg","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-65qm-jvmh-6pqg"},{"rule_id":"osv/GHSA-78g4-xqwv-q3g8","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-78g4-xqwv-q3g8","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-78g4-xqwv-q3g8"},{"rule_id":"osv/GHSA-c6hw-5grf-ff96","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-c6hw-5grf-ff96","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-c6hw-5grf-ff96"},{"rule_id":"osv/GHSA-f2g6-542v-9j58","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-f2g6-542v-9j58","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-f2g6-542v-9j58"},{"rule_id":"osv/GHSA-g7cr-3p24-7wf7","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-g7cr-3p24-7wf7","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-g7cr-3p24-7wf7"},{"rule_id":"osv/GHSA-gg2r-wvfm-q9rx","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-gg2r-wvfm-q9rx","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-gg2r-wvfm-q9rx"},{"rule_id":"osv/GHSA-j4m9-6w36-pw47","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-j4m9-6w36-pw47","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-j4m9-6w36-pw47"},{"rule_id":"osv/GHSA-jg86-v3jv-hrpm","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-jg86-v3jv-hrpm","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-jg86-v3jv-hrpm"},{"rule_id":"osv/GHSA-mrfp-p49p-3hf2","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-mrfp-p49p-3hf2","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-mrfp-p49p-3hf2"},{"rule_id":"osv/GHSA-p4wg-p73j-c528","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-p4wg-p73j-c528","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-p4wg-p73j-c528"},{"rule_id":"osv/GHSA-q45j-58j2-45rg","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-q45j-58j2-45rg","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-q45j-58j2-45rg"},{"rule_id":"osv/GHSA-xcvg-w56q-r89m","severity":"high","message":"pillow@11.1.0 (PyPI) is affected by GHSA-xcvg-w56q-r89m","path":"requirements.txt","line":null,"fingerprint":"pillow@11.1.0 (PyPI):GHSA-xcvg-w56q-r89m"},{"rule_id":"osv/GHSA-7gcm-g887-7qv7","severity":"high","message":"protobuf@5.29.3 (PyPI) is affected by PYSEC-2026-1805, GHSA-7gcm-g887-7qv7","path":"requirements.txt","line":null,"fingerprint":"protobuf@5.29.3 (PyPI):GHSA-7gcm-g887-7qv7"},{"rule_id":"osv/GHSA-8qvm-5x2c-j2w7","severity":"high","message":"protobuf@5.29.3 (PyPI) is affected by PYSEC-2026-1806, GHSA-8qvm-5x2c-j2w7","path":"requirements.txt","line":null,"fingerprint":"protobuf@5.29.3 (PyPI):GHSA-8qvm-5x2c-j2w7"},{"rule_id":"osv/GHSA-rgxp-2hwp-jwgg","severity":"high","message":"pyarrow@19.0.1 (PyPI) is affected by PYSEC-2026-113, GHSA-rgxp-2hwp-jwgg","path":"requirements.txt","line":null,"fingerprint":"pyarrow@19.0.1 (PyPI):GHSA-rgxp-2hwp-jwgg"},{"rule_id":"osv/PYSEC-2025-203","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2025-203","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2025-203"},{"rule_id":"osv/PYSEC-2025-204","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2025-204","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2025-204"},{"rule_id":"osv/PYSEC-2025-205","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2025-205","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2025-205"},{"rule_id":"osv/PYSEC-2025-207","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2025-207","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2025-207"},{"rule_id":"osv/PYSEC-2025-208","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2025-208","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2025-208"},{"rule_id":"osv/PYSEC-2025-209","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2025-209","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2025-209"},{"rule_id":"osv/PYSEC-2026-139","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2026-139","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):PYSEC-2026-139"},{"rule_id":"osv/GHSA-63cw-57p8-fm3p","severity":"high","message":"torch@2.7.0+cu118 (PyPI) is affected by PYSEC-2026-2286, GHSA-63cw-57p8-fm3p","path":"requirements.txt","line":null,"fingerprint":"torch@2.7.0+cu118 (PyPI):GHSA-63cw-57p8-fm3p"},{"rule_id":"osv/GHSA-c98p-7wgm-6p64","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2025-266, GHSA-c98p-7wgm-6p64","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-c98p-7wgm-6p64"},{"rule_id":"osv/GHSA-jhmp-mqwm-3gq8","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2025-267, GHSA-jhmp-mqwm-3gq8","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-jhmp-mqwm-3gq8"},{"rule_id":"osv/GHSA-qjxf-f2mg-c6mc","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2026-140, GHSA-qjxf-f2mg-c6mc","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-qjxf-f2mg-c6mc"},{"rule_id":"osv/GHSA-7cx3-6m66-7c5m","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2026-1974, GHSA-7cx3-6m66-7c5m","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-7cx3-6m66-7c5m"},{"rule_id":"osv/GHSA-78cv-mqj4-43f7","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2026-2287, GHSA-78cv-mqj4-43f7, GHSA-fqwm-6jpj-5wxc","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-78cv-mqj4-43f7"},{"rule_id":"osv/GHSA-3x9g-8vmp-wqvf","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2026-3387, GHSA-3x9g-8vmp-wqvf","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-3x9g-8vmp-wqvf"},{"rule_id":"osv/GHSA-mgf9-4vpg-hj56","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2026-3389, GHSA-mgf9-4vpg-hj56","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-mgf9-4vpg-hj56"},{"rule_id":"osv/GHSA-mpf4-983q-p7j4","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by PYSEC-2026-3928, GHSA-mpf4-983q-p7j4","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-mpf4-983q-p7j4"},{"rule_id":"osv/GHSA-c2m8-h5v5-343r","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by GHSA-c2m8-h5v5-343r","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-c2m8-h5v5-343r"},{"rule_id":"osv/GHSA-chx6-46f5-w4vp","severity":"high","message":"tornado@6.4.2 (PyPI) is affected by GHSA-chx6-46f5-w4vp","path":"requirements.txt","line":null,"fingerprint":"tornado@6.4.2 (PyPI):GHSA-chx6-46f5-w4vp"},{"rule_id":"osv/PYSEC-2025-211","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-211","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-211"},{"rule_id":"osv/PYSEC-2025-212","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-212","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-212"},{"rule_id":"osv/PYSEC-2025-213","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-213","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-213"},{"rule_id":"osv/PYSEC-2025-214","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-214","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-214"},{"rule_id":"osv/PYSEC-2025-215","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-215","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-215"},{"rule_id":"osv/PYSEC-2025-216","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-216","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-216"},{"rule_id":"osv/PYSEC-2025-217","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-217","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-217"},{"rule_id":"osv/PYSEC-2025-218","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2025-218","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):PYSEC-2025-218"},{"rule_id":"osv/GHSA-69w3-r845-3855","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2026-2288, GHSA-69w3-r845-3855","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):GHSA-69w3-r845-3855"},{"rule_id":"osv/GHSA-29pf-2h5f-8g72","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2026-2289, GHSA-29pf-2h5f-8g72","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):GHSA-29pf-2h5f-8g72"},{"rule_id":"osv/GHSA-xrqw-3rrv-vx5w","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2026-3929, GHSA-xrqw-3rrv-vx5w","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):GHSA-xrqw-3rrv-vx5w"},{"rule_id":"osv/GHSA-x9r9-c232-4q39","severity":"high","message":"transformers@4.49.0 (PyPI) is affected by PYSEC-2026-4174, GHSA-x9r9-c232-4q39","path":"requirements.txt","line":null,"fingerprint":"transformers@4.49.0 (PyPI):GHSA-x9r9-c232-4q39"},{"rule_id":"osv/GHSA-qccp-gfcp-xxvc","severity":"high","message":"urllib3@2.3.0 (PyPI) is affected by PYSEC-2026-141, GHSA-qccp-gfcp-xxvc","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.3.0 (PyPI):GHSA-qccp-gfcp-xxvc"},{"rule_id":"osv/GHSA-2xpw-w6gg-jr37","severity":"high","message":"urllib3@2.3.0 (PyPI) is affected by PYSEC-2026-1994, GHSA-2xpw-w6gg-jr37","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.3.0 (PyPI):GHSA-2xpw-w6gg-jr37"},{"rule_id":"osv/GHSA-38jv-5279-wg99","severity":"high","message":"urllib3@2.3.0 (PyPI) is affected by PYSEC-2026-1996, GHSA-38jv-5279-wg99","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.3.0 (PyPI):GHSA-38jv-5279-wg99"},{"rule_id":"osv/GHSA-gm62-xv2j-4w53","severity":"high","message":"urllib3@2.3.0 (PyPI) is affected by PYSEC-2026-1998, GHSA-gm62-xv2j-4w53","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.3.0 (PyPI):GHSA-gm62-xv2j-4w53"},{"rule_id":"osv/GHSA-8988-9cw3-xx77","severity":"high","message":"urllib3@2.3.0 (PyPI) is affected by PYSEC-2026-4175, GHSA-8988-9cw3-xx77","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.3.0 (PyPI):GHSA-8988-9cw3-xx77"},{"rule_id":"osv/GHSA-vxq7-64xx-v4gw","severity":"high","message":"urllib3@2.3.0 (PyPI) is affected by PYSEC-2026-4177, GHSA-vxq7-64xx-v4gw","path":"requirements.txt","line":null,"fingerprint":"urllib3@2.3.0 (PyPI):GHSA-vxq7-64xx-v4gw"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.25.4 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"browserslist@4.25.4 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.25.4 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"browserslist@4.25.4 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-267c-6grr-h53f","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-267c-6grr-h53f","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-267c-6grr-h53f"},{"rule_id":"osv/GHSA-26hh-7cqf-hhc6","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-26hh-7cqf-hhc6","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-26hh-7cqf-hhc6"},{"rule_id":"osv/GHSA-36qx-fr4f-26g5","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-36qx-fr4f-26g5","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-36qx-fr4f-26g5"},{"rule_id":"osv/GHSA-492v-c6pp-mqqv","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-492v-c6pp-mqqv","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-492v-c6pp-mqqv"},{"rule_id":"osv/GHSA-89xv-2m56-2m9x","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-89xv-2m56-2m9x","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-89xv-2m56-2m9x"},{"rule_id":"osv/GHSA-8h8q-6873-q5fj","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-8h8q-6873-q5fj","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-8h8q-6873-q5fj"},{"rule_id":"osv/GHSA-c4j6-fc7j-m34r","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-c4j6-fc7j-m34r","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-c4j6-fc7j-m34r"},{"rule_id":"osv/GHSA-h25m-26qc-wcjf","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-h25m-26qc-wcjf","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-h25m-26qc-wcjf"},{"rule_id":"osv/GHSA-m99w-x7hq-7vfj","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-m99w-x7hq-7vfj","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-m99w-x7hq-7vfj"},{"rule_id":"osv/GHSA-mg66-mrh9-m8jx","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-mg66-mrh9-m8jx","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-mg66-mrh9-m8jx"},{"rule_id":"osv/GHSA-mwv6-3258-q52c","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-mwv6-3258-q52c","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-mwv6-3258-q52c"},{"rule_id":"osv/GHSA-p3m5-59mp-jv5r","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-p3m5-59mp-jv5r","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-p3m5-59mp-jv5r"},{"rule_id":"osv/GHSA-p9j2-gv94-2wf4","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-p9j2-gv94-2wf4","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-p9j2-gv94-2wf4"},{"rule_id":"osv/GHSA-q4gf-8mx6-v5v3","severity":"high","message":"next@15.5.2 (npm) is affected by GHSA-q4gf-8mx6-v5v3","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"next@15.5.2 (npm):GHSA-q4gf-8mx6-v5v3"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@4.0.3 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-6g55-p6wh-862q","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-r28c-9q8g-f849","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-f88m-g3jw-g9cj","severity":"high","message":"sharp@0.34.3 (npm) is affected by GHSA-f88m-g3jw-g9cj","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"sharp@0.34.3 (npm):GHSA-f88m-g3jw-g9cj"},{"rule_id":"osv/GHSA-rgj7-g3m4-5g8c","severity":"high","message":"sharp@0.34.3 (npm) is affected by GHSA-rgj7-g3m4-5g8c","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"sharp@0.34.3 (npm):GHSA-rgj7-g3m4-5g8c"},{"rule_id":"osv/GHSA-wq5f-xc86-pv6w","severity":"high","message":"sharp@0.34.3 (npm) is affected by GHSA-wq5f-xc86-pv6w","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"sharp@0.34.3 (npm):GHSA-wq5f-xc86-pv6w"},{"rule_id":"osv/GHSA-9g9j-rggx-7fmg","severity":"high","message":"simple-swizzle@0.2.3 (npm) is affected by MAL-2025-46978, GHSA-9g9j-rggx-7fmg","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"simple-swizzle@0.2.3 (npm):GHSA-9g9j-rggx-7fmg"},{"rule_id":"osv/GHSA-34x7-hfp2-rc4v","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-34x7-hfp2-rc4v","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-34x7-hfp2-rc4v"},{"rule_id":"osv/GHSA-83g3-92jg-28cx","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-83g3-92jg-28cx","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-83g3-92jg-28cx"},{"rule_id":"osv/GHSA-8qq5-rm4j-mr97","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-8qq5-rm4j-mr97","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-8qq5-rm4j-mr97"},{"rule_id":"osv/GHSA-8x88-c5mf-7j5w","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-8x88-c5mf-7j5w","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-8x88-c5mf-7j5w"},{"rule_id":"osv/GHSA-9ppj-qmqm-q256","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-9ppj-qmqm-q256","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-9ppj-qmqm-q256"},{"rule_id":"osv/GHSA-qffp-2rhf-9h96","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-qffp-2rhf-9h96","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-qffp-2rhf-9h96"},{"rule_id":"osv/GHSA-r292-9mhp-454m","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-r292-9mhp-454m","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-r292-9mhp-454m"},{"rule_id":"osv/GHSA-r6q2-hw4h-h46w","severity":"high","message":"tar@7.4.3 (npm) is affected by GHSA-r6q2-hw4h-h46w","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"tar@7.4.3 (npm):GHSA-r6q2-hw4h-h46w"},{"rule_id":"osv/GHSA-96hv-2xvq-fx4p","severity":"high","message":"ws@8.19.0 (npm) is affected by GHSA-96hv-2xvq-fx4p","path":"tools/dev-graph-ui/package-lock.json","line":null,"fingerprint":"ws@8.19.0 (npm):GHSA-96hv-2xvq-fx4p"},{"rule_id":"osv/GHSA-p498-v437-472g","severity":"medium","message":"@humanfs/node@0.16.6 (npm) is affected by GHSA-p498-v437-472g","path":"frontend/package-lock.json","line":null,"fingerprint":"@humanfs/node@0.16.6 (npm):GHSA-p498-v437-472g"},{"rule_id":"osv/GHSA-2g4f-4pwh-qvx6","severity":"medium","message":"ajv@6.12.6 (npm) is affected by GHSA-2g4f-4pwh-qvx6; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"ajv@6.12.6 (npm):GHSA-2g4f-4pwh-qvx6"},{"rule_id":"osv/GHSA-3p68-rc4w-qgx5","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-3p68-rc4w-qgx5","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-3p68-rc4w-qgx5"},{"rule_id":"osv/GHSA-3w6x-2g7m-8v23","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-3w6x-2g7m-8v23","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-3w6x-2g7m-8v23"},{"rule_id":"osv/GHSA-42h9-826w-cgv3","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-42h9-826w-cgv3","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-42h9-826w-cgv3"},{"rule_id":"osv/GHSA-445q-vr5w-6q77","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-445q-vr5w-6q77","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-445q-vr5w-6q77"},{"rule_id":"osv/GHSA-5c9x-8gcm-mpgx","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-5c9x-8gcm-mpgx","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-5c9x-8gcm-mpgx"},{"rule_id":"osv/GHSA-7q8q-rj6j-mhjq","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-7q8q-rj6j-mhjq","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-7q8q-rj6j-mhjq"},{"rule_id":"osv/GHSA-898c-q2cr-xwhg","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-898c-q2cr-xwhg","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-898c-q2cr-xwhg"},{"rule_id":"osv/GHSA-9fr6-4gfg-395g","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-9fr6-4gfg-395g","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-9fr6-4gfg-395g"},{"rule_id":"osv/GHSA-fvcv-3m26-pcqx","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-fvcv-3m26-pcqx","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-fvcv-3m26-pcqx"},{"rule_id":"osv/GHSA-j8rh-479h-cp32","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-j8rh-479h-cp32","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-j8rh-479h-cp32"},{"rule_id":"osv/GHSA-jqh4-m9w3-8hp9","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-jqh4-m9w3-8hp9","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-jqh4-m9w3-8hp9"},{"rule_id":"osv/GHSA-m7pr-hjqh-92cm","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-m7pr-hjqh-92cm","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-m7pr-hjqh-92cm"},{"rule_id":"osv/GHSA-mmx7-hfxf-jppx","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-mmx7-hfxf-jppx","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-mmx7-hfxf-jppx"},{"rule_id":"osv/GHSA-pmv8-rq9r-6j72","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-pmv8-rq9r-6j72","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-pmv8-rq9r-6j72"},{"rule_id":"osv/GHSA-vf2m-468p-8v99","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-vf2m-468p-8v99","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-vf2m-468p-8v99"},{"rule_id":"osv/GHSA-vh66-26gq-q6x8","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-vh66-26gq-q6x8","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-vh66-26gq-q6x8"},{"rule_id":"osv/GHSA-w9j2-pvgh-6h63","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-w9j2-pvgh-6h63","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-w9j2-pvgh-6h63"},{"rule_id":"osv/GHSA-xx6v-rp6x-q39c","severity":"medium","message":"axios@1.9.0 (npm) is affected by GHSA-xx6v-rp6x-q39c","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.9.0 (npm):GHSA-xx6v-rp6x-q39c"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-f886-m6hf-6m8v; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-q2hr-2g5m-vwhr; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-f886-m6hf-6m8v; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-q2hr-2g5m-vwhr; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-gh4j-gqv2-49f6","severity":"medium","message":"fast-xml-parser@4.5.3 (npm) is affected by GHSA-gh4j-gqv2-49f6","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-xml-parser@4.5.3 (npm):GHSA-gh4j-gqv2-49f6"},{"rule_id":"osv/GHSA-jp2q-39xq-3w4g","severity":"medium","message":"fast-xml-parser@4.5.3 (npm) is affected by GHSA-jp2q-39xq-3w4g","path":"frontend/package-lock.json","line":null,"fingerprint":"fast-xml-parser@4.5.3 (npm):GHSA-jp2q-39xq-3w4g"},{"rule_id":"osv/GHSA-r4q5-vmmm-2653","severity":"medium","message":"follow-redirects@1.15.9 (npm) is affected by GHSA-r4q5-vmmm-2653","path":"frontend/package-lock.json","line":null,"fingerprint":"follow-redirects@1.15.9 (npm):GHSA-r4q5-vmmm-2653"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@4.1.0 (npm) is affected by GHSA-h67p-54hq-rp68; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-mh29-5h37-fv8m","severity":"medium","message":"js-yaml@4.1.0 (npm) is affected by GHSA-mh29-5h37-fv8m; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"js-yaml@4.1.0 (npm):GHSA-mh29-5h37-fv8m"},{"rule_id":"osv/GHSA-xxjr-mmjv-4gpg","severity":"medium","message":"lodash@4.17.21 (npm) is affected by GHSA-xxjr-mmjv-4gpg","path":"frontend/package-lock.json","line":null,"fingerprint":"lodash@4.17.21 (npm):GHSA-xxjr-mmjv-4gpg"},{"rule_id":"osv/GHSA-xxjr-mmjv-4gpg","severity":"medium","message":"lodash-es@4.17.21 (npm) is affected by GHSA-xxjr-mmjv-4gpg","path":"frontend/package-lock.json","line":null,"fingerprint":"lodash-es@4.17.21 (npm):GHSA-xxjr-mmjv-4gpg"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@9.0.5 (npm) is affected by GHSA-g3hv-75wg-m249; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-3x4c-7xq6-9pq8","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-3x4c-7xq6-9pq8","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-3x4c-7xq6-9pq8"},{"rule_id":"osv/GHSA-4342-x723-ch2f","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-4342-x723-ch2f","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-4342-x723-ch2f"},{"rule_id":"osv/GHSA-4633-3j49-mh5q","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-4633-3j49-mh5q","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-4633-3j49-mh5q"},{"rule_id":"osv/GHSA-4c39-4ccg-62r3","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-4c39-4ccg-62r3","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-4c39-4ccg-62r3"},{"rule_id":"osv/GHSA-4jqv-mc3x-m676","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-4jqv-mc3x-m676","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-4jqv-mc3x-m676"},{"rule_id":"osv/GHSA-68g3-v927-f742","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-68g3-v927-f742","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-68g3-v927-f742"},{"rule_id":"osv/GHSA-955p-x3mx-jcvp","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-955p-x3mx-jcvp","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-955p-x3mx-jcvp"},{"rule_id":"osv/GHSA-9g9p-9gw9-jx7f","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-9g9p-9gw9-jx7f","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-9g9p-9gw9-jx7f"},{"rule_id":"osv/GHSA-ffhc-5mcf-pf4q","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-ffhc-5mcf-pf4q","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-ffhc-5mcf-pf4q"},{"rule_id":"osv/GHSA-g5qg-72qw-gw5v","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-g5qg-72qw-gw5v","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-g5qg-72qw-gw5v"},{"rule_id":"osv/GHSA-ggv3-7p47-pfv8","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-ggv3-7p47-pfv8","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-ggv3-7p47-pfv8"},{"rule_id":"osv/GHSA-gx5p-jg67-6x7h","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-gx5p-jg67-6x7h","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-gx5p-jg67-6x7h"},{"rule_id":"osv/GHSA-h64f-5h5j-jqjh","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-h64f-5h5j-jqjh","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-h64f-5h5j-jqjh"},{"rule_id":"osv/GHSA-mcj8-r9mp-w47p","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-mcj8-r9mp-w47p","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-mcj8-r9mp-w47p"},{"rule_id":"osv/GHSA-w37m-7fhw-fmv9","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-w37m-7fhw-fmv9","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-w37m-7fhw-fmv9"},{"rule_id":"osv/GHSA-wfc6-r584-vfw7","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-wfc6-r584-vfw7","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-wfc6-r584-vfw7"},{"rule_id":"osv/GHSA-xv57-4mr9-wg8v","severity":"medium","message":"next@15.3.3 (npm) is affected by GHSA-xv57-4mr9-wg8v","path":"frontend/package-lock.json","line":null,"fingerprint":"next@15.3.3 (npm):GHSA-xv57-4mr9-wg8v"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@2.3.1 (npm) is affected by GHSA-3v7f-55p6-f55p; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@4.0.2 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"frontend/package-lock.json","line":null,"fingerprint":"picomatch@4.0.2 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-fxqj-rqcc-2cmp; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-qx2v-qp2m-jg93; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.4.49 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.49 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.4.49 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"frontend/package-lock.json","line":null,"fingerprint":"postcss@8.4.49 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-j452-xhg8-qg39","severity":"medium","message":"protocol-buffers-schema@3.6.0 (npm) is affected by GHSA-j452-xhg8-qg39","path":"frontend/package-lock.json","line":null,"fingerprint":"protocol-buffers-schema@3.6.0 (npm):GHSA-j452-xhg8-qg39"},{"rule_id":"osv/GHSA-58qx-3vcg-4xpx","severity":"medium","message":"ws@8.17.1 (npm) is affected by GHSA-58qx-3vcg-4xpx","path":"frontend/package-lock.json","line":null,"fingerprint":"ws@8.17.1 (npm):GHSA-58qx-3vcg-4xpx"},{"rule_id":"osv/GHSA-48c2-rrv3-qjmp","severity":"medium","message":"yaml@1.10.2 (npm) is affected by GHSA-48c2-rrv3-qjmp; also in tools/dev-graph-ui/package-lock.json","path":"frontend/package-lock.json","line":null,"fingerprint":"yaml@1.10.2 (npm):GHSA-48c2-rrv3-qjmp"},{"rule_id":"osv/GHSA-3wxw-xv34-2frg","severity":"medium","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3837, GHSA-3wxw-xv34-2frg","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-3wxw-xv34-2frg"},{"rule_id":"osv/GHSA-hh9p-6wh2-4mfc","severity":"medium","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3841, GHSA-hh9p-6wh2-4mfc","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-hh9p-6wh2-4mfc"},{"rule_id":"osv/GHSA-p538-c434-8v24","severity":"medium","message":"gitpython@3.1.44 (PyPI) is affected by PYSEC-2026-3950, GHSA-p538-c434-8v24","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-p538-c434-8v24"},{"rule_id":"osv/GHSA-59cr-6r3x-644w","severity":"medium","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-59cr-6r3x-644w","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-59cr-6r3x-644w"},{"rule_id":"osv/GHSA-fx3j-rwgx-fr94","severity":"medium","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-fx3j-rwgx-fr94","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-fx3j-rwgx-fr94"},{"rule_id":"osv/GHSA-gq48-pqfc-9p58","severity":"medium","message":"gitpython@3.1.44 (PyPI) is affected by GHSA-gq48-pqfc-9p58","path":"requirements.txt","line":null,"fingerprint":"gitpython@3.1.44 (PyPI):GHSA-gq48-pqfc-9p58"},{"rule_id":"osv/GHSA-5p39-cfhj-2xmp","severity":"medium","message":"anyio@4.8.0 (PyPI) is affected by PYSEC-2026-4024, GHSA-5p39-cfhj-2xmp","path":"requirements.txt","line":null,"fingerprint":"anyio@4.8.0 (PyPI):GHSA-5p39-cfhj-2xmp"},{"rule_id":"osv/GHSA-qmgc-5h2g-mvrw","severity":"medium","message":"filelock@3.17.0 (PyPI) is affected by PYSEC-2026-1374, GHSA-qmgc-5h2g-mvrw","path":"requirements.txt","line":null,"fingerprint":"filelock@3.17.0 (PyPI):GHSA-qmgc-5h2g-mvrw"}],"evidence":[],"data":{"ecosystems":["PyPI","npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":1.0,"findings":4.0,"findings_high":3.0,"findings_medium":1.0,"findings_low":0.0,"penalty":37.2},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/nextjs.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/nextjs.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/nextjs.yml","line":27,"fingerprint":"unpinned-uses:.github/workflows/nextjs.yml:27"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/nextjs.yml","line":32,"fingerprint":"unpinned-uses:.github/workflows/nextjs.yml:32"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/nextjs.yml","line":24,"fingerprint":"artipacked:.github/workflows/nextjs.yml:24"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.005,"unpinned_manifests":0.0},"findings":[],"evidence":[],"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":2697.0,"function_nloc":42767.0,"mean_ccn":3.84,"p90_ccn":8.0,"complex_functions":93.0,"long_functions":58.0,"many_param_functions":15.0,"risky_nloc_share":0.3112},"findings":[],"evidence":[{"kind":"complex-function","description":"render in tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx: complexity 151, 347 lines","ref":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx#L660","weight":1.0},{"kind":"complex-function","description":"extract_metadata in utils/metadata_extractor.py: complexity 102, 304 lines","ref":"utils/metadata_extractor.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/utils/metadata_extractor.py#L38","weight":1.0},{"kind":"complex-function","description":"(anonymous) in tools/dev-graph-ui/src/app/dev-graph/components/EvolutionGraph.tsx: complexity 85, 202 lines","ref":"tools/dev-graph-ui/src/app/dev-graph/components/EvolutionGraph.tsx","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/src/app/dev-graph/components/EvolutionGraph.tsx#L177","weight":1.0},{"kind":"complex-function","description":"build_story_markdown in skills/sprint-perspectives/scripts/generate_sprint_perspectives.py: complexity 79, 194 lines","ref":"skills/sprint-perspectives/scripts/generate_sprint_perspectives.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/skills/sprint-perspectives/scripts/generate_sprint_perspectives.py#L683","weight":1.0},{"kind":"complex-function","description":"get_windowed_subgraph in developer_graph/temporal_engine.py: complexity 73, 250 lines","ref":"developer_graph/temporal_engine.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/temporal_engine.py#L651","weight":1.0},{"kind":"complex-function","description":"main in skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js: complexity 64, 179 lines","ref":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js#L562","weight":1.0},{"kind":"complex-function","description":"get_quality_overview in developer_graph/routes/quality.py: complexity 56, 520 lines","ref":"developer_graph/routes/quality.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/developer_graph/routes/quality.py#L64","weight":0.9333333333333333},{"kind":"complex-function","description":"buildGraph in skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js: complexity 54, 138 lines","ref":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js#L58","weight":0.9},{"kind":"complex-function","description":"WelcomeDashboard in tools/dev-graph-ui/src/app/dev-graph/welcome/page.tsx: complexity 54, 283 lines","ref":"tools/dev-graph-ui/src/app/dev-graph/welcome/page.tsx","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/src/app/dev-graph/welcome/page.tsx#L58","weight":0.9},{"kind":"complex-function","description":"DevGraphPage in tools/dev-graph-ui/src/app/dev-graph/complex/page.tsx: complexity 53, 323 lines","ref":"tools/dev-graph-ui/src/app/dev-graph/complex/page.tsx","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/tools/dev-graph-ui/src/app/dev-graph/complex/page.tsx#L27","weight":0.8833333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":47561.0,"duplicated_lines":4219.0,"duplicated_share":0.0887,"files":243.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: archive/sprint_06_service_superseded_models/blip_model.py:160 and archive/sprint_06_service_superseded_models/blip_model.py:199","ref":"archive/sprint_06_service_superseded_models/blip_model.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_06_service_superseded_models/blip_model.py#L160","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: archive/sprint_06_service_superseded_models/blip_model.py:294 and archive/sprint_06_service_superseded_models/clip_model.py:418","ref":"archive/sprint_06_service_superseded_models/blip_model.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_06_service_superseded_models/blip_model.py#L294","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: archive/sprint_06_service_superseded_models/clip_model.py:153 and archive/sprint_06_service_superseded_models/clip_model.py:321","ref":"archive/sprint_06_service_superseded_models/clip_model.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_06_service_superseded_models/clip_model.py#L153","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: archive/sprint_09_frontend_ideas/example_advanced_ui_screen.py:217 and archive/sprint_09_frontend_ideas/example_advanced_ui_screen.py:235","ref":"archive/sprint_09_frontend_ideas/example_advanced_ui_screen.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_09_frontend_ideas/example_advanced_ui_screen.py#L217","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: archive/sprint_09_frontend_ideas/example_search_tabs.py:77 and archive/sprint_09_frontend_ideas/example_search_tabs.py:177","ref":"archive/sprint_09_frontend_ideas/example_search_tabs.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/archive/sprint_09_frontend_ideas/example_search_tabs.py#L77","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/gpu_umap_service/umap_service/main.py:9 and backend/gpu_umap_service/umap_service/streaming_service.py:12","ref":"backend/gpu_umap_service/umap_service/main.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/gpu_umap_service/umap_service/main.py#L9","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/gpu_umap_service/umap_service/main.py:127 and backend/gpu_umap_service/umap_service/main.py:297","ref":"backend/gpu_umap_service/umap_service/main.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/gpu_umap_service/umap_service/main.py#L127","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/gpu_umap_service/umap_service/streaming_service.py:69 and backend/gpu_umap_service/umap_service/streaming_service.py:179","ref":"backend/gpu_umap_service/umap_service/streaming_service.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/gpu_umap_service/umap_service/streaming_service.py#L69","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/ingestion_orchestration_fastapi_app/ml_algorithms.py:163 and backend/ingestion_orchestration_fastapi_app/ml_algorithms.py:174","ref":"backend/ingestion_orchestration_fastapi_app/ml_algorithms.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/ingestion_orchestration_fastapi_app/ml_algorithms.py#L163","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/ingestion_orchestration_fastapi_app/pipeline/gpu_worker.py:133 and backend/ingestion_orchestration_fastapi_app/pipeline/gpu_worker.py:187","ref":"backend/ingestion_orchestration_fastapi_app/pipeline/gpu_worker.py","url":"https://github.com/rm2thaddeus/Pixel_Detective/blob/8e741807f9b04e4bbb5c1b5c6460cd271e600837/backend/ingestion_orchestration_fastapi_app/pipeline/gpu_worker.py#L133","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":177.0,"weighted_findings":169.5,"scanned_lines":59779.0,"category:best-practice":94.0,"category:correctness":45.0,"category:maintainability":38.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"archive/deprecated/scripts/browser_connector.py","line":136,"fingerprint":"python.lang.best-practice.arbitrary-sleep:archive/deprecated/scripts/browser_connector.py:136"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"archive/deprecated/scripts/minigame.py","line":204,"fingerprint":"python.lang.best-practice.arbitrary-sleep:archive/deprecated/scripts/minigame.py:204"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":114,"fingerprint":"python.lang.best-practice.arbitrary-sleep:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:114"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":261,"fingerprint":"python.lang.best-practice.arbitrary-sleep:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:261"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/scripts/ingest_benchmark.py","line":63,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/scripts/ingest_benchmark.py:63"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"developer_graph/embedding_service.py","line":77,"fingerprint":"python.lang.best-practice.arbitrary-sleep:developer_graph/embedding_service.py:77"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"docs/reference_guides/app_optimized.py","line":384,"fingerprint":"python.lang.best-practice.arbitrary-sleep:docs/reference_guides/app_optimized.py:384"},{"rule_id":"opengrep/typescript.lang.correctness.useless-ternary","severity":"high","message":"It looks like no matter how selectedRange.start is evaluated, this expression returns undefined. This is probably a copy-paste error.","path":"tools/dev-graph-ui/src/app/dev-graph/complex/page.tsx","line":711,"fingerprint":"typescript.lang.correctness.useless-ternary:tools/dev-graph-ui/src/app/dev-graph/complex/page.tsx:711"},{"rule_id":"opengrep/typescript.lang.correctness.useless-ternary","severity":"high","message":"It looks like no matter how isDoc is evaluated, this expression returns 0.2. This is probably a copy-paste error.","path":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":289,"fingerprint":"typescript.lang.correctness.useless-ternary:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:289"},{"rule_id":"opengrep/typescript.lang.correctness.useless-ternary","severity":"high","message":"It looks like no matter how isChain is evaluated, this expression returns 0.55. This is probably a copy-paste error.","path":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":404,"fingerprint":"typescript.lang.correctness.useless-ternary:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:404"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"utils/optimized_session_state.py","line":198,"fingerprint":"python.lang.best-practice.arbitrary-sleep:utils/optimized_session_state.py:198"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"utils/optimized_session_state.py","line":320,"fingerprint":"python.lang.best-practice.arbitrary-sleep:utils/optimized_session_state.py:320"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"archive/deprecated/models/lazy_model_manager.py","line":30,"fingerprint":"python.lang.best-practice.logging-error-without-handling:archive/deprecated/models/lazy_model_manager.py:30"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"archive/deprecated/models/lazy_model_manager.py","line":43,"fingerprint":"python.lang.best-practice.logging-error-without-handling:archive/deprecated/models/lazy_model_manager.py:43"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":121,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:121"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":125,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:125"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":129,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:129"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":150,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:150"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":151,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:151"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":171,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:171"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":207,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:207"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":207,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:207"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":244,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:244"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":252,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:252"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loading() because self._model_states[model_type].is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":260,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:260"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":269,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:269"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":287,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:287"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[ModelType.CLIP].is_loaded() because self._model_states[ModelType.CLIP].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":292,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:292"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[ModelType.BLIP].is_loaded() because self._model_states[ModelType.BLIP].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":293,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:293"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant state.is_loaded() because state.is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":301,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:301"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant state.is_loading() because state.is_loading is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":302,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:302"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":317,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:317"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loaded\" a function or an attribute? If it is a function, you may have meant self._model_states[model_type].is_loaded() because self._model_states[model_type].is_loaded is always true.","path":"archive/sprint_06_service_superseded_managers/optimized_model_manager.py","line":320,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_06_service_superseded_managers/optimized_model_manager.py:320"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"archive/sprint_06_service_superseded_models/blip_model.py","line":98,"fingerprint":"python.lang.best-practice.logging-error-without-handling:archive/sprint_06_service_superseded_models/blip_model.py:98"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"archive/sprint_06_service_superseded_models/clip_model.py","line":107,"fingerprint":"python.lang.best-practice.logging-error-without-handling:archive/sprint_06_service_superseded_models/clip_model.py:107"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"archive/sprint_06_service_superseded_models/clip_model.py","line":173,"fingerprint":"python.lang.best-practice.logging-error-without-handling:archive/sprint_06_service_superseded_models/clip_model.py:173"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"archive/sprint_06_service_superseded_models/clip_model.py","line":193,"fingerprint":"python.lang.best-practice.logging-error-without-handling:archive/sprint_06_service_superseded_models/clip_model.py:193"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant background_loader.progress.is_loading() because background_loader.progress.is_loading is always true.","path":"archive/sprint_09_frontend_ideas/example_context_sidebar.py","line":77,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:archive/sprint_09_frontend_ideas/example_context_sidebar.py:77"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/gpu_umap_service/umap_service/main.py","line":95,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/gpu_umap_service/umap_service/main.py:95"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/gpu_umap_service/umap_service/main.py","line":109,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/gpu_umap_service/umap_service/main.py:109"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/gpu_umap_service/umap_service/main.py","line":199,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/gpu_umap_service/umap_service/main.py:199"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/gpu_umap_service/umap_service/main.py","line":272,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/gpu_umap_service/umap_service/main.py:272"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/gpu_umap_service/umap_service/main.py","line":407,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/gpu_umap_service/umap_service/main.py:407"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_ready_for_ingestion\" a function or an attribute? If it is a function, you may have meant self.is_ready_for_ingestion() because self.is_ready_for_ingestion is always true.","path":"backend/ingestion_orchestration_fastapi_app/dependencies.py","line":18,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/ingestion_orchestration_fastapi_app/dependencies.py:18"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_ready_for_ingestion\" a function or an attribute? If it is a function, you may have meant app_state.is_ready_for_ingestion() because app_state.is_ready_for_ingestion is always true.","path":"backend/ingestion_orchestration_fastapi_app/main.py","line":63,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/ingestion_orchestration_fastapi_app/main.py:63"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_ready_for_ingestion\" a function or an attribute? If it is a function, you may have meant app_state.is_ready_for_ingestion() because app_state.is_ready_for_ingestion is always true.","path":"backend/ingestion_orchestration_fastapi_app/main.py","line":75,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/ingestion_orchestration_fastapi_app/main.py:75"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_ready_for_ingestion\" a function or an attribute? If it is a function, you may have meant app_state.is_ready_for_ingestion() because app_state.is_ready_for_ingestion is always true.","path":"backend/ingestion_orchestration_fastapi_app/main.py","line":76,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/ingestion_orchestration_fastapi_app/main.py:76"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_ready_for_ingestion\" a function or an attribute? If it is a function, you may have meant app_state.is_ready_for_ingestion() because app_state.is_ready_for_ingestion is always true.","path":"backend/ingestion_orchestration_fastapi_app/main.py","line":288,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/ingestion_orchestration_fastapi_app/main.py:288"},{"rule_id":"opengrep/python.lang.best-practice.pass-body-fn","severity":"medium","message":"`pass` is the body of function schedule_ingestion. Consider removing this or raise NotImplementedError() if this is a TODO","path":"backend/ingestion_orchestration_fastapi_app/main.py","line":300,"fingerprint":"python.lang.best-practice.pass-body-fn:backend/ingestion_orchestration_fastapi_app/main.py:300"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/collections.py","line":46,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/collections.py:46"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/collections.py","line":101,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/collections.py:101"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/collections.py","line":166,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/collections.py:166"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/collections.py","line":235,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/collections.py:235"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":60,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:60"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":110,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:110"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":155,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:155"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":161,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:161"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":244,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:244"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":250,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:250"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/images.py","line":312,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/images.py:312"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/ingest.py","line":513,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/ingest.py:513"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/ingest.py","line":517,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/ingest.py:517"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/ingest.py","line":521,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/ingest.py:521"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/ingest.py","line":1005,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/ingest.py:1005"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_ready_for_ingestion\" a function or an attribute? If it is a function, you may have meant app_state.is_ready_for_ingestion() because app_state.is_ready_for_ingestion is always true.","path":"backend/ingestion_orchestration_fastapi_app/routers/ingest.py","line":1031,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/ingestion_orchestration_fastapi_app/routers/ingest.py:1031"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/random.py","line":62,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/random.py:62"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/random.py","line":75,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/random.py:75"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/search.py","line":108,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/search.py:108"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/search.py","line":127,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/search.py:127"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/search.py","line":195,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/search.py:195"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ingestion_orchestration_fastapi_app/routers/search.py","line":209,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ingestion_orchestration_fastapi_app/routers/search.py:209"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ml_inference_fastapi_app/routers/inference.py","line":189,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ml_inference_fastapi_app/routers/inference.py:189"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ml_inference_fastapi_app/services/blip_service.py","line":79,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ml_inference_fastapi_app/services/blip_service.py:79"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"backend/ml_inference_fastapi_app/services/clip_service.py","line":91,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/ml_inference_fastapi_app/services/clip_service.py:91"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":"backend/scripts/benchmark.py","line":44,"fingerprint":"python.requests.best-practice.use-timeout:backend/scripts/benchmark.py:44"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":"backend/scripts/ingest_benchmark.py","line":19,"fingerprint":"python.requests.best-practice.use-timeout:backend/scripts/ingest_benchmark.py:19"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":"backend/scripts/ingest_benchmark.py","line":29,"fingerprint":"python.requests.best-practice.use-timeout:backend/scripts/ingest_benchmark.py:29"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":"backend/scripts/ingest_benchmark.py","line":39,"fingerprint":"python.requests.best-practice.use-timeout:backend/scripts/ingest_benchmark.py:39"},{"rule_id":"opengrep/python.requests.best-practice.use-timeout","severity":"medium","message":"Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a timeout for all 'requests'.","path":"backend/scripts/ingest_benchmark.py","line":52,"fingerprint":"python.requests.best-practice.use-timeout:backend/scripts/ingest_benchmark.py:52"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/admin.py","line":29,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/admin.py:29"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/admin.py","line":77,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/admin.py:77"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/admin.py","line":105,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/admin.py:105"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/admin.py","line":154,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/admin.py:154"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/chunks.py","line":18,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/chunks.py:18"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/chunks.py","line":64,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/chunks.py:64"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/commits_timeline.py","line":137,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/commits_timeline.py:137"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/commits_timeline.py","line":200,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/commits_timeline.py:200"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/commits_timeline.py","line":225,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/commits_timeline.py:225"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/commits_timeline.py","line":263,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/commits_timeline.py:263"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/commits_timeline.py","line":301,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/commits_timeline.py:301"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/data_quality.py","line":94,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/data_quality.py:94"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/data_quality.py","line":131,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/data_quality.py:131"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/data_quality.py","line":167,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/data_quality.py:167"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/data_quality.py","line":205,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/data_quality.py:205"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/data_quality.py","line":238,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/data_quality.py:238"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":40,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:40"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":110,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:110"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":165,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:165"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":280,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:280"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":429,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:429"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":440,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:440"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":466,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:466"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":489,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:489"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":546,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:546"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":585,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:585"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":629,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:629"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":643,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:643"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":669,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:669"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/ingest.py","line":678,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/ingest.py:678"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/optimized_ingest.py","line":671,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/optimized_ingest.py:671"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/unified_ingest.py","line":939,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/unified_ingest.py:939"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/unified_ingest.py","line":1022,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/unified_ingest.py:1022"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"developer_graph/routes/unlimited_ingest.py","line":790,"fingerprint":"python.lang.best-practice.logging-error-without-handling:developer_graph/routes/unlimited_ingest.py:790"},{"rule_id":"opengrep/python.lang.maintainability.useless-if-body","severity":"medium","message":"Useless if statement; both blocks have the same body","path":"developer_graph/temporal_engine.py","line":891,"fingerprint":"python.lang.maintainability.useless-if-body:developer_graph/temporal_engine.py:891"},{"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":"frontend/src/components/AddImagesModal.tsx","line":166,"fingerprint":"typescript.react.best-practice.react-props-spreading:frontend/src/components/AddImagesModal.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":"frontend/src/components/ui/color-mode.tsx","line":35,"fingerprint":"typescript.react.best-practice.react-props-spreading:frontend/src/components/ui/color-mode.tsx:35"},{"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":"frontend/src/utils/workerManager.ts","line":119,"fingerprint":"javascript.lang.best-practice.lazy-load-module:frontend/src/utils/workerManager.ts:119"},{"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":"frontend/src/utils/workerManager.ts","line":120,"fingerprint":"javascript.lang.best-practice.lazy-load-module:frontend/src/utils/workerManager.ts:120"},{"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":"frontend/src/utils/workerManager.ts","line":154,"fingerprint":"javascript.lang.best-practice.lazy-load-module:frontend/src/utils/workerManager.ts:154"},{"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":"frontend/src/utils/workerManager.ts","line":155,"fingerprint":"javascript.lang.best-practice.lazy-load-module:frontend/src/utils/workerManager.ts:155"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"skills/pixel-detective-exports/scripts/export_umap_hdbscan.py","line":12,"fingerprint":"python.requests.best-practice.use-raise-for-status:skills/pixel-detective-exports/scripts/export_umap_hdbscan.py:12"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"skills/pixel-detective-exports/scripts/export_umap_pdf.py","line":13,"fingerprint":"python.requests.best-practice.use-raise-for-status:skills/pixel-detective-exports/scripts/export_umap_pdf.py:13"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"skills/pixel-detective-exports/scripts/manage_collections.py","line":9,"fingerprint":"python.requests.best-practice.use-raise-for-status:skills/pixel-detective-exports/scripts/manage_collections.py:9"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_directory\" a function or an attribute? If it is a function, you may have meant event.is_directory() because event.is_directory is always true.","path":"utils/incremental_indexer.py","line":32,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/incremental_indexer.py:32"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_directory\" a function or an attribute? If it is a function, you may have meant event.is_directory() because event.is_directory is always true.","path":"utils/incremental_indexer.py","line":39,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/incremental_indexer.py:39"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_directory\" a function or an attribute? If it is a function, you may have meant event.is_directory() because event.is_directory is always true.","path":"utils/incremental_indexer.py","line":46,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/incremental_indexer.py:46"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant entry.is_loading() because entry.is_loading is always true.","path":"utils/optimized_session_state.py","line":71,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:71"},{"rule_id":"opengrep/python.lang.best-practice.logging-error-without-handling","severity":"medium","message":"Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info.","path":"utils/optimized_session_state.py","line":108,"fingerprint":"python.lang.best-practice.logging-error-without-handling:utils/optimized_session_state.py:108"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant entry.is_loading() because entry.is_loading is always true.","path":"utils/optimized_session_state.py","line":163,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:163"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant entry.is_loading() because entry.is_loading is always true.","path":"utils/optimized_session_state.py","line":174,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:174"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant entry.is_loading() because entry.is_loading is always true.","path":"utils/optimized_session_state.py","line":195,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:195"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant entry.is_loading() because entry.is_loading is always true.","path":"utils/optimized_session_state.py","line":210,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:210"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant self._cache[key].is_loading() because self._cache[key].is_loading is always true.","path":"utils/optimized_session_state.py","line":218,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:218"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant e.is_loading() because e.is_loading is always true.","path":"utils/optimized_session_state.py","line":238,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:238"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_loading\" a function or an attribute? If it is a function, you may have meant entry.is_loading() because entry.is_loading is always true.","path":"utils/optimized_session_state.py","line":249,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:utils/optimized_session_state.py:249"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":863,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:863"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":878,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:878"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":878,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:878"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":878,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:878"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":878,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:878"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":878,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:878"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":879,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:879"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":911,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:911"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":911,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:911"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":911,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:911"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":913,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:913"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":914,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:914"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"frontend/src/app/latent-space/utils/visualization.ts","line":914,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:frontend/src/app/latent-space/utils/visualization.ts:914"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`const` is assigned twice; the first assignment is useless","path":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":3,"fingerprint":"javascript.lang.correctness.useless-assignment:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:3"},{"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":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":557,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:557"},{"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":"skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js","line":557,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:skills/dev-graph-exports/scripts/export_timeline_segments_svg_parity.js:557"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":83,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:83"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":83,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:83"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":105,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:105"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":105,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:105"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":409,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:409"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":409,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:409"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":410,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:410"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx","line":410,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/SimpleWebGLTimeline.tsx:410"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":513,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:513"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":513,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:513"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":539,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:539"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":539,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:539"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":580,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:580"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":580,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:580"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":606,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:606"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":606,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:606"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":1198,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:1198"},{"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":"tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx","line":1198,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/components/WebGLEvolutionGraph.tsx:1198"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx","line":24,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx:24"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx","line":24,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx:24"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx","line":35,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx:35"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx","line":35,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-simple/page.tsx:35"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx:59"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx:59"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx","line":85,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx:85"},{"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":"tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx","line":85,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:tools/dev-graph-ui/src/app/dev-graph/timeline/webgl-test/page.tsx:85"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.1109,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.3408,"test_lines":3379.0,"source_lines":60918.0,"test_ratio":0.0555,"ci_files":1.0,"cochange_share":0.0852,"cochange_commits":223.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/nextjs.yml","ref":".github/workflows/nextjs.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":1.0,"readme_lines":319.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},{"kind":"docs","description":"docs/CHANGELOG.md","ref":"docs/CHANGELOG.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.439,"check:low_escape_density":0.0,"escapes":797.0,"escapes_per_kloc":13.532},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: frontend/tsconfig.json","ref":"frontend/tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":2764.0,"other_lines":58154.0,"files_blamed":243.0,"blame_failures":0.0,"quality:ai_findings":1.0,"quality:ai_per_kloc":0.362,"quality:other_findings":176.0,"quality:other_per_kloc":3.026,"quality:ratio":0.12,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":53.0,"security:other_per_kloc":0.911,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}