{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T15:07:27.306846Z","repo":{"ref":{"host":"github.com","owner":"666ghj","name":"MiroFish"},"default_branch":"main","clone_url":"https://github.com/666ghj/MiroFish.git","html_url":"https://github.com/666ghj/MiroFish","description":"A Simple and Universal Swarm Intelligence Engine, Predicting Anything. 简洁通用的群体智能引擎，预测万物","stars":85560,"forks":12980,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":16817,"primary_language":"Python","license_spdx":"AGPL-3.0","created_at":"2025-11-26T04:23:02Z","pushed_at":"2026-10-16T03:32:19Z","security_policy_url":null,"distribution":{"owner_created_at":"2022-08-01T11:43:11Z","owner_type":"User","release_assets":[]}},"commit_sha":"7657031ac01184afe2cb220f5ee3545573b5e843","profile":{"lines_by_language":{"Python":30707,"Vue":20461,"JavaScript":515},"files_by_category":{"source":66,"test":21,"config":14,"binary":14,"docs":5,"other":4,"generated":3,"oversized":1},"source_lines":46873,"test_lines":4810},"pillars":{"ai_provenance":{"score":10.3,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.1034,"suspected_share":0.4752,"estimated_share":0.1034,"ai_artifacts":0.0,"flagged_work_units":14.0,"flagged_releases":0.0,"style_index":0.533},"summary":"Explicit AI attribution on 10% of first-party code added; an estimated 10% including velocity signals."},"quality":{"score":51.2,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":41.7,"duplication":40.8,"lint":62.5,"testing":63.1,"docs":65.0,"type_safety":0.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.10, CI runs tests; 29% of function code in complex or long functions; 15% duplicated lines. Weakest area: type safety."},"security":{"score":53.2,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":96.7,"sast":96.3,"dependencies":0.2,"ci_actions":29.5,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 332 known vulnerabilities in 49 dependencies; 4 high-severity SAST findings; 6 high-severity workflow issues. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":23.0,"checked":23.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":299.0,"attributed_commits":8.0,"attributed_commit_share":0.026755852842809364,"effective_loc":64529.0,"attributed_loc":6672.0,"attributed_loc_share":0.10339537262316167,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"OpenAI Codex: 7 attributed commits, 6,672 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"Cursor agent: 1 attributed commits, 0 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/star-history-manual-merge'","ref":"0f67b29c6c3cfdab113ceff92bfbb17a6c185425","url":"https://github.com/666ghj/MiroFish/commit/0f67b29c6c3cfdab113ceff92bfbb17a6c185425","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/star-history-pr-mode'","ref":"a97ba4ffc9adb8bc1c6780b29ff2cdcfa2d4234e","url":"https://github.com/666ghj/MiroFish/commit/a97ba4ffc9adb8bc1c6780b29ff2cdcfa2d4234e","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (60757b3c82)","ref":"f0d487f3104743e195bdac1befbdf8bfd0ae3ce2","url":"https://github.com/666ghj/MiroFish/commit/f0d487f3104743e195bdac1befbdf8bfd0ae3ce2","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (d64175943e)","ref":"407c391f35c89bcb9ac46c0e4ead14167f299bd1","url":"https://github.com/666ghj/MiroFish/commit/407c391f35c89bcb9ac46c0e4ead14167f299bd1","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (d64175943e)","ref":"c81d62897543a633ee05c659db90ebe6c8930b0f","url":"https://github.com/666ghj/MiroFish/commit/c81d62897543a633ee05c659db90ebe6c8930b0f","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (d64175943e)","ref":"54bd7a3d4ec5b3e874c700ccc80541a3f3e16c85","url":"https://github.com/666ghj/MiroFish/commit/54bd7a3d4ec5b3e874c700ccc80541a3f3e16c85","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (d64175943e)","ref":"e4aa38dff249036872142b5bbaa6dd2534c6f39e","url":"https://github.com/666ghj/MiroFish/commit/e4aa38dff249036872142b5bbaa6dd2534c6f39e","weight":0.9},{"kind":"attributed-commit","description":"Cursor agent: author email cursoragent@cursor.com","ref":"84dd2cbcca2848b29942162cbd435a663bb735f5","url":"https://github.com/666ghj/MiroFish/commit/84dd2cbcca2848b29942162cbd435a663bb735f5","weight":0.9}],"data":{"attributed_loc_by_commit":{"84dd2cbcca2848b29942162cbd435a663bb735f5":0,"e4aa38dff249036872142b5bbaa6dd2534c6f39e":4752,"54bd7a3d4ec5b3e874c700ccc80541a3f3e16c85":1094,"c81d62897543a633ee05c659db90ebe6c8930b0f":0,"407c391f35c89bcb9ac46c0e4ead14167f299bd1":53,"f0d487f3104743e195bdac1befbdf8bfd0ae3ce2":631,"a97ba4ffc9adb8bc1c6780b29ff2cdcfa2d4234e":110,"0f67b29c6c3cfdab113ceff92bfbb17a6c185425":32},"tools":{"cursor":{"name":"Cursor agent","commits":1,"loc":0,"first_seen":1767089067,"last_seen":1767089067},"openai-codex":{"name":"OpenAI Codex","commits":7,"loc":6672,"first_seen":1784731315,"last_seen":1785751937}},"monthly":{"2025-11":{"loc":4533,"attributed_loc":0},"2025-12":{"loc":45009,"attributed_loc":0},"2026-01":{"loc":1348,"attributed_loc":0},"2026-02":{"loc":1248,"attributed_loc":0},"2026-03":{"loc":169,"attributed_loc":0},"2026-04":{"loc":1749,"attributed_loc":0},"2026-05":{"loc":23,"attributed_loc":0},"2026-07":{"loc":10308,"attributed_loc":6530},"2026-08":{"loc":142,"attributed_loc":142},"2026-09":{"loc":0,"attributed_loc":0},"2026-10":{"loc":0,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"work_units":100.0,"flagged_units":14.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":61961.0,"flagged_loc":36511.0,"flagged_loc_share":0.5892577589128646,"max_loc_per_hour":1856.0486058370402,"median_loc_per_hour":205.91623036649216,"pr_timed_units":2.0,"excluded_import_loc":2568.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"4,752 lines of first-party code in ~2.6h (1,856 lines/hour, 1 commit session)","ref":"e4aa38dff249036872142b5bbaa6dd2534c6f39e","url":"https://github.com/666ghj/MiroFish/commit/e4aa38dff249036872142b5bbaa6dd2534c6f39e","weight":0.5568145817511121},{"kind":"velocity-burst","description":"1,564 lines of first-party code in ~1.1h (1,474 lines/hour, 1 commit session)","ref":"fc95cc6595bd27ef097bac414fcd5625bcb48ac0","url":"https://github.com/666ghj/MiroFish/commit/fc95cc6595bd27ef097bac414fcd5625bcb48ac0","weight":0.4421780104712042},{"kind":"velocity-burst","description":"5,801 lines of first-party code in ~4.0h (1,450 lines/hour, 1 commit session)","ref":"5f159f6d88e8c3eebfa8417e171dc78060813721","url":"https://github.com/666ghj/MiroFish/commit/5f159f6d88e8c3eebfa8417e171dc78060813721","weight":0.435075},{"kind":"velocity-burst","description":"4,635 lines of first-party code in ~4.1h (1,121 lines/hour, 11 commit session)","ref":"9db7781ee3ded9e496e5c82fdaa0e9541538b751","url":"https://github.com/666ghj/MiroFish/commit/9db7781ee3ded9e496e5c82fdaa0e9541538b751","weight":0.33638868355621254},{"kind":"velocity-burst","description":"1,094 lines of first-party code in ~1.1h (1,019 lines/hour, 1 commit session)","ref":"54bd7a3d4ec5b3e874c700ccc80541a3f3e16c85","url":"https://github.com/666ghj/MiroFish/commit/54bd7a3d4ec5b3e874c700ccc80541a3f3e16c85","weight":0.30577639751552793},{"kind":"velocity-burst","description":"1,554 lines of first-party code in ~1.8h (863 lines/hour, 3 commit session)","ref":"74aab44766016fbb63276896b3dcebd153641100","url":"https://github.com/666ghj/MiroFish/commit/74aab44766016fbb63276896b3dcebd153641100","weight":0.25884022208513263},{"kind":"velocity-burst","description":"2,309 lines of first-party code in ~2.8h (835 lines/hour, 3 commit session)","ref":"851b12dfd95c16fcb8e9c10889c8ebc9bfbd8c9e","url":"https://github.com/666ghj/MiroFish/commit/851b12dfd95c16fcb8e9c10889c8ebc9bfbd8c9e","weight":0.25047408597830456},{"kind":"velocity-burst","description":"1,943 lines of first-party code in ~2.3h (834 lines/hour, 5 commit session)","ref":"a90b683a441baae622d493c0c880fdaf47914c13","url":"https://github.com/666ghj/MiroFish/commit/a90b683a441baae622d493c0c880fdaf47914c13","weight":0.2500524308865586},{"kind":"velocity-burst","description":"1,687 lines of first-party code in ~2.2h (776 lines/hour, 1 commit session)","ref":"f8a58819fa059e4e54d58313def716e6a02a197b","url":"https://github.com/666ghj/MiroFish/commit/f8a58819fa059e4e54d58313def716e6a02a197b","weight":0.23283833865814693},{"kind":"velocity-burst","description":"1,701 lines of first-party code in ~2.2h (763 lines/hour, 2 commit session)","ref":"be90a46cb40fdc7ed2769c50c581cc9eb40b570b","url":"https://github.com/666ghj/MiroFish/commit/be90a46cb40fdc7ed2769c50c581cc9eb40b570b","weight":0.22897669201046986},{"kind":"velocity-burst","description":"2,829 lines of first-party code in ~4.0h (707 lines/hour, 1 commit session)","ref":"4ebb2ed6e9d33e12b6c06e59789ca6a14cd74661","url":"https://github.com/666ghj/MiroFish/commit/4ebb2ed6e9d33e12b6c06e59789ca6a14cd74661","weight":0.212175},{"kind":"velocity-burst","description":"2,755 lines of first-party code in ~4.0h (689 lines/hour, 1 commit session)","ref":"5ece3f670bef791884f21677fe8d69e81abe1b3c","url":"https://github.com/666ghj/MiroFish/commit/5ece3f670bef791884f21677fe8d69e81abe1b3c","weight":0.20662499999999998},{"kind":"velocity-burst","description":"2,602 lines of first-party code in ~4.2h (617 lines/hour, 2 commit session)","ref":"1f191cb21e74ad9651f5887e29370093a07c13a5","url":"https://github.com/666ghj/MiroFish/commit/1f191cb21e74ad9651f5887e29370093a07c13a5","weight":0.18519572953736654},{"kind":"velocity-burst","description":"1,285 lines of first-party code in ~2.4h (535 lines/hour, 4 commit session)","ref":"c91dad30db64b74abc95ca57d7e898d7ce06d1fd","url":"https://github.com/666ghj/MiroFish/commit/c91dad30db64b74abc95ca57d7e898d7ce06d1fd","weight":0.16038368196001387}],"data":{"flagged_loc_by_commit":{"5f159f6d88e8c3eebfa8417e171dc78060813721":5801,"1042d50306d5d6802570a26fd221d862d21956f5":2499,"1f191cb21e74ad9651f5887e29370093a07c13a5":103,"5ece3f670bef791884f21677fe8d69e81abe1b3c":2755,"a0c97b1344141337bfaf077ef720c11e7e763bd6":886,"b022c38d789958fe01cf0d965a15d08ac89e5625":523,"74aab44766016fbb63276896b3dcebd153641100":145,"5a27b7ca7192bddc92799dfbca5e56e998b58f50":1215,"23927dc64bda17fa6635e278ee99ca7808bead16":197,"b7db395dfc70a8ef7254f0c7979a1ce2bec1ac35":71,"8565f04d222a8896112e2efb7c48842e44049910":314,"a90b683a441baae622d493c0c880fdaf47914c13":146,"fc95cc6595bd27ef097bac414fcd5625bcb48ac0":1564,"f8a58819fa059e4e54d58313def716e6a02a197b":1687,"0577ecdae84bad972a7f82ac0e08711f8a3d5b58":715,"ec418c1defc3566ed34ade2f60d1c195ecbb079a":132,"d768fd1ea2825c6c38bce5f6175515b687313190":35,"c91dad30db64b74abc95ca57d7e898d7ce06d1fd":403,"b4435e273a254f04a109bf05a85be72fc23b325a":856,"f9044077415f08306e993cc43c9053578d46ba64":1452,"851b12dfd95c16fcb8e9c10889c8ebc9bfbd8c9e":1,"9be2c28a5d52cebf4dc1f0da96c60e6ab55d2448":1667,"be90a46cb40fdc7ed2769c50c581cc9eb40b570b":34,"6bf1f2937a906aa0c6fd7e86f450b963b58ad27f":1285,"3b20672527d9e6c0f5c2415def1afdef796d4a18":148,"70922a3525f2098ea71aa9bdff1fd9dbd7989ccb":2339,"cb47e9859c783b85cbd030b8374a82351afdced5":41,"c738d7edfbecec414a2774f7c9adb1087de7d16b":308,"318d60fa42ef9abc32a2536a778089c67491c3ad":2,"c43b83f10dde12a12fcc73cae6a163618b324cc7":131,"4bd3c856f5c9158c0e14274054bbb7f0bfc4dcd2":53,"78c8c43699203048e3a3ae1a97ff2ad52ccb43a7":259,"cc094e48ce68ff658996fbd2cb4414d1a1a9197e":68,"9db7781ee3ded9e496e5c82fdaa0e9541538b751":1,"4ebb2ed6e9d33e12b6c06e59789ca6a14cd74661":2829,"e4aa38dff249036872142b5bbaa6dd2534c6f39e":4752,"54bd7a3d4ec5b3e874c700ccc80541a3f3e16c85":1094},"excluded_import_commits":["08f417f3b7274de25ac01a5cb878a14ce40b804c"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"releases":2.0,"flagged_releases":0.0,"max_loc_per_day":74.4},"findings":[],"evidence":[],"data":{"releases":[{"from":"v0.1.0","to":"v0.1.1","loc":2305,"days":30.96,"loc_per_day":74.4,"flagged":false},{"from":"v0.1.1","to":"v0.1.2","loc":1288,"days":42.25,"loc_per_day":30.5,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":46873.0,"index":0.533,"count:narrated_steps":10.0,"per_kloc:narrated_steps":0.213,"files:narrated_steps":1.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":30.0,"per_kloc:emoji_in_code":0.64,"files:emoji_in_code":3.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: 使用LLM生成子问题","ref":"backend/app/services/zep_tools.py:979","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L979","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: 对每个子问题进行语义搜索","ref":"backend/app/services/zep_tools.py:989","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L989","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 3: 从边中提取相关实体UUID，只获取这些实体的信息（不获取全部节点）","ref":"backend/app/services/zep_tools.py:1024","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L1024","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 4: 构建所有关系链（不限制数量）","ref":"backend/app/services/zep_tools.py:1069","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L1069","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: 读取人设文件","ref":"backend/app/services/zep_tools.py:1314","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L1314","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: 使用LLM选择要采访的Agent（返回agent_id列表）","ref":"backend/app/services/zep_tools.py:1325","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L1325","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 3: 生成采访问题（如果没有提供）","ref":"backend/app/services/zep_tools.py:1337","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L1337","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 4: 调用真实的采访API（不指定platform，默认双平台同时采访）","ref":"backend/app/services/zep_tools.py:1363","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/zep_tools.py#L1363","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":1.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 9657061b26); removed from the current tree but still retrievable","path":"txt2graph/lib/vis-9.1.2/vis-network.min.js","line":26,"fingerprint":"9657061b267638447e98e57bb01e0cf4ef899bbc:txt2graph/lib/vis-9.1.2/vis-network.min.js:generic-api-key:26"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":9.0,"findings_high":4.0,"findings_medium":4.0,"findings_low":1.0,"weighted_findings":5.112,"scanned_lines":46873.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":"Dockerfile","line":29,"fingerprint":"dockerfile.security.missing-user:Dockerfile:29"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' 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":"backend/app/services/simulation_runner.py","line":539,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:backend/app/services/simulation_runner.py:539"},{"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":"scripts/star_history.py","line":24,"fingerprint":"python.lang.security.use-defused-xml:scripts/star_history.py:24"},{"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":"scripts/star_history.py","line":197,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/star_history.py:197"},{"rule_id":"opengrep/javascript.vue.security.audit.xss.templates.avoid-v-html","severity":"medium","message":"Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS vulnerabilities. Only use HTML interpolation on trusted content and never on user-provided content. [confidence low]","path":"frontend/src/components/Step4Report.vue","line":51,"fingerprint":"javascript.vue.security.audit.xss.templates.avoid-v-html:frontend/src/components/Step4Report.vue:51"},{"rule_id":"opengrep/javascript.vue.security.audit.xss.templates.avoid-v-html","severity":"medium","message":"Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS vulnerabilities. Only use HTML interpolation on trusted content and never on user-provided content. [confidence low]","path":"frontend/src/components/Step5Interaction.vue","line":51,"fingerprint":"javascript.vue.security.audit.xss.templates.avoid-v-html:frontend/src/components/Step5Interaction.vue:51"},{"rule_id":"opengrep/javascript.vue.security.audit.xss.templates.avoid-v-html","severity":"medium","message":"Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS vulnerabilities. Only use HTML interpolation on trusted content and never on user-provided content. [confidence low]","path":"frontend/src/components/Step5Interaction.vue","line":273,"fingerprint":"javascript.vue.security.audit.xss.templates.avoid-v-html:frontend/src/components/Step5Interaction.vue:273"},{"rule_id":"opengrep/javascript.vue.security.audit.xss.templates.avoid-v-html","severity":"medium","message":"Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS vulnerabilities. Only use HTML interpolation on trusted content and never on user-provided content. [confidence low]","path":"frontend/src/components/Step5Interaction.vue","line":403,"fingerprint":"javascript.vue.security.audit.xss.templates.avoid-v-html:frontend/src/components/Step5Interaction.vue:403"},{"rule_id":"opengrep/python.lang.security.use-defusedcsv","severity":"low","message":"Detected the generation of a CSV file using the built-in `csv` module. If user data is used to generate the data in this file, it is possible that an attacker could inject a formula when the CSV is imported into a spreadsheet application that runs an attacker script, which could steal data from the  [confidence low]","path":"backend/app/services/oasis_profile_generator.py","line":1136,"fingerprint":"python.lang.security.use-defusedcsv:backend/app/services/oasis_profile_generator.py:1136"}],"evidence":[],"data":{"rulesets":["python","javascript","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":49.0,"vulnerabilities":332.0,"vulns_critical":16.0,"vulns_high":151.0,"vulns_medium":142.0,"vulns_low":21.0,"vulns_unknown":2.0,"penalty":380.0},"findings":[{"rule_id":"osv/GHSA-82r6-8w77-94w6","severity":"critical","message":"anyio@4.12.0 (PyPI) is affected by PYSEC-2026-4025, GHSA-82r6-8w77-94w6","path":"backend/uv.lock","line":null,"fingerprint":"anyio@4.12.0 (PyPI):GHSA-82r6-8w77-94w6"},{"rule_id":"osv/GHSA-6q48-6c7w-9gw2","severity":"critical","message":"certifi@2025.11.12 (PyPI) is affected by PYSEC-2026-4320, GHSA-6q48-6c7w-9gw2","path":"backend/uv.lock","line":null,"fingerprint":"certifi@2025.11.12 (PyPI):GHSA-6q48-6c7w-9gw2"},{"rule_id":"osv/GHSA-p423-j2cm-9vmq","severity":"critical","message":"cryptography@46.0.3 (PyPI) is affected by PYSEC-2026-36, GHSA-p423-j2cm-9vmq","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-p423-j2cm-9vmq"},{"rule_id":"osv/GHSA-x99w-6fgc-pmfw","severity":"critical","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3735, GHSA-x99w-6fgc-pmfw","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-x99w-6fgc-pmfw"},{"rule_id":"osv/GHSA-m4rf-3fr8-xwx3","severity":"critical","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3749, GHSA-m4rf-3fr8-xwx3","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-m4rf-3fr8-xwx3"},{"rule_id":"osv/GHSA-5x8w-8jj5-q52h","severity":"critical","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-5x8w-8jj5-q52h"},{"rule_id":"osv/GHSA-8g5g-8vmr-9782","severity":"critical","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-8g5g-8vmr-9782"},{"rule_id":"osv/GHSA-xvh5-g6gv-559v","severity":"critical","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-xvh5-g6gv-559v"},{"rule_id":"osv/GHSA-332p-7hrc-92wf","severity":"critical","message":"pillow@10.3.0 (PyPI) is affected by GHSA-332p-7hrc-92wf","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-332p-7hrc-92wf"},{"rule_id":"osv/GHSA-w889-685w-c8fh","severity":"critical","message":"pillow@10.3.0 (PyPI) is affected by GHSA-w889-685w-c8fh","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-w889-685w-c8fh"},{"rule_id":"osv/GHSA-ffc3-869f-jxw9","severity":"critical","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4145, GHSA-ffc3-869f-jxw9","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-ffc3-869f-jxw9"},{"rule_id":"osv/GHSA-jhr6-gm9c-rqjv","severity":"critical","message":"sentence-transformers@3.0.0 (PyPI) is affected by PYSEC-2026-4164, GHSA-jhr6-gm9c-rqjv","path":"backend/uv.lock","line":null,"fingerprint":"sentence-transformers@3.0.0 (PyPI):GHSA-jhr6-gm9c-rqjv"},{"rule_id":"osv/GHSA-fgcw-684q-jj6r","severity":"critical","message":"transformers@4.57.3 (PyPI) is affected by PYSEC-2026-2290, GHSA-fgcw-684q-jj6r","path":"backend/uv.lock","line":null,"fingerprint":"transformers@4.57.3 (PyPI):GHSA-fgcw-684q-jj6r"},{"rule_id":"osv/GHSA-4mvj-m6j5-pmf7","severity":"critical","message":"unstructured@0.13.7 (PyPI) is affected by PYSEC-2026-3930, GHSA-4mvj-m6j5-pmf7","path":"backend/uv.lock","line":null,"fingerprint":"unstructured@0.13.7 (PyPI):GHSA-4mvj-m6j5-pmf7"},{"rule_id":"osv/GHSA-gm8q-m8mv-jj5m","severity":"critical","message":"unstructured@0.13.7 (PyPI) is affected by PYSEC-2026-558, GHSA-gm8q-m8mv-jj5m","path":"backend/uv.lock","line":null,"fingerprint":"unstructured@0.13.7 (PyPI):GHSA-gm8q-m8mv-jj5m"},{"rule_id":"osv/GHSA-pqg4-j6r4-53mv","severity":"critical","message":"shell-quote@1.9.0 (npm) is affected by GHSA-pqg4-j6r4-53mv","path":"package-lock.json","line":null,"fingerprint":"shell-quote@1.9.0 (npm):GHSA-pqg4-j6r4-53mv"},{"rule_id":"osv/GHSA-r6ph-v2qm-q3c2","severity":"high","message":"cryptography@46.0.3 (PyPI) is affected by PYSEC-2026-2141, GHSA-r6ph-v2qm-q3c2","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-r6ph-v2qm-q3c2"},{"rule_id":"osv/GHSA-g6cj-pr64-35w5","severity":"high","message":"cryptography@46.0.3 (PyPI) is affected by PYSEC-2026-3552, GHSA-g6cj-pr64-35w5","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-g6cj-pr64-35w5"},{"rule_id":"osv/GHSA-jwv3-5hgf-82ww","severity":"high","message":"cryptography@46.0.3 (PyPI) is affected by PYSEC-2026-3553, GHSA-jwv3-5hgf-82ww","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-jwv3-5hgf-82ww"},{"rule_id":"osv/GHSA-537c-gmf6-5ccf","severity":"high","message":"cryptography@46.0.3 (PyPI) is affected by GHSA-537c-gmf6-5ccf","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-537c-gmf6-5ccf"},{"rule_id":"osv/GHSA-27vj-qcqg-25rc","severity":"high","message":"fsspec@2025.12.0 (PyPI) is affected by PYSEC-2026-4217, GHSA-27vj-qcqg-25rc","path":"backend/uv.lock","line":null,"fingerprint":"fsspec@2025.12.0 (PyPI):GHSA-27vj-qcqg-25rc"},{"rule_id":"osv/GHSA-vfmq-68hx-4jfw","severity":"high","message":"lxml@6.0.2 (PyPI) is affected by PYSEC-2026-87, GHSA-vfmq-68hx-4jfw","path":"backend/uv.lock","line":null,"fingerprint":"lxml@6.0.2 (PyPI):GHSA-vfmq-68hx-4jfw"},{"rule_id":"osv/GHSA-hvrp-rf83-w775","severity":"high","message":"mcp@1.24.0 (PyPI) is affected by PYSEC-2026-3481, GHSA-hvrp-rf83-w775","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-hvrp-rf83-w775"},{"rule_id":"osv/GHSA-jpw9-pfvf-9f58","severity":"high","message":"mcp@1.24.0 (PyPI) is affected by PYSEC-2026-3482, GHSA-jpw9-pfvf-9f58","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-jpw9-pfvf-9f58"},{"rule_id":"osv/GHSA-vj7q-gjh5-988w","severity":"high","message":"mcp@1.24.0 (PyPI) is affected by PYSEC-2026-3483, GHSA-vj7q-gjh5-988w","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-vj7q-gjh5-988w"},{"rule_id":"osv/GHSA-84m7-p3x7-pcfv","severity":"high","message":"mcp@1.24.0 (PyPI) is affected by GHSA-84m7-p3x7-pcfv","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-84m7-p3x7-pcfv"},{"rule_id":"osv/GHSA-c8j7-8cv4-2xmq","severity":"high","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2210, GHSA-c8j7-8cv4-2xmq","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-c8j7-8cv4-2xmq"},{"rule_id":"osv/GHSA-4j32-57v6-6g45","severity":"high","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2213, GHSA-4j32-57v6-6g45","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-4j32-57v6-6g45"},{"rule_id":"osv/GHSA-ffq3-xpv3-j92q","severity":"high","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2216, GHSA-ffq3-xpv3-j92q","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-ffq3-xpv3-j92q"},{"rule_id":"osv/GHSA-8mp2-v27r-99xp","severity":"high","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2651, GHSA-8mp2-v27r-99xp","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-8mp2-v27r-99xp"},{"rule_id":"osv/GHSA-qcq2-496w-v96p","severity":"high","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2652, GHSA-qcq2-496w-v96p","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-qcq2-496w-v96p"},{"rule_id":"osv/GHSA-xm59-rqc7-hhvf","severity":"high","message":"nbconvert@7.16.6 (PyPI) is affected by PYSEC-2026-1691, GHSA-xm59-rqc7-hhvf","path":"backend/uv.lock","line":null,"fingerprint":"nbconvert@7.16.6 (PyPI):GHSA-xm59-rqc7-hhvf"},{"rule_id":"osv/GHSA-pjvx-prjx-h659","severity":"high","message":"nbconvert@7.16.6 (PyPI) is affected by GHSA-pjvx-prjx-h659","path":"backend/uv.lock","line":null,"fingerprint":"nbconvert@7.16.6 (PyPI):GHSA-pjvx-prjx-h659"},{"rule_id":"osv/GHSA-6ww7-3frv-cqxh","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3733, GHSA-6ww7-3frv-cqxh","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-6ww7-3frv-cqxh"},{"rule_id":"osv/GHSA-3gq4-3j92-5w49","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3736, GHSA-3gq4-3j92-5w49","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-3gq4-3j92-5w49"},{"rule_id":"osv/GHSA-p4rw-rvv2-7xwr","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3737, GHSA-p4rw-rvv2-7xwr","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-p4rw-rvv2-7xwr"},{"rule_id":"osv/GHSA-ww6m-cw3f-q94g","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3738, GHSA-ww6m-cw3f-q94g","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-ww6m-cw3f-q94g"},{"rule_id":"osv/GHSA-8mgp-746c-j5xp","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3740, GHSA-8mgp-746c-j5xp","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-8mgp-746c-j5xp"},{"rule_id":"osv/GHSA-f794-5jv7-7672","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3741, GHSA-f794-5jv7-7672","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-f794-5jv7-7672"},{"rule_id":"osv/GHSA-97qj-x29f-37w7","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3748, GHSA-97qj-x29f-37w7","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-97qj-x29f-37w7"},{"rule_id":"osv/GHSA-w3v8-gmh9-3wv7","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3751, GHSA-w3v8-gmh9-3wv7","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-w3v8-gmh9-3wv7"},{"rule_id":"osv/GHSA-f833-7jw8-xwrv","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3789, GHSA-f833-7jw8-xwrv","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-f833-7jw8-xwrv"},{"rule_id":"osv/GHSA-5gh2-94qg-qppq","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3867, GHSA-5gh2-94qg-qppq","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-5gh2-94qg-qppq"},{"rule_id":"osv/GHSA-6hwm-xvph-95vm","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3868, GHSA-6hwm-xvph-95vm","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-6hwm-xvph-95vm"},{"rule_id":"osv/GHSA-qx2g-xrx7-vfh8","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3870, GHSA-qx2g-xrx7-vfh8","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-qx2g-xrx7-vfh8"},{"rule_id":"osv/GHSA-8fx7-8jr8-84rv","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by GHSA-8fx7-8jr8-84rv","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-8fx7-8jr8-84rv"},{"rule_id":"osv/GHSA-j456-xh4h-cpf2","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by GHSA-j456-xh4h-cpf2","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-j456-xh4h-cpf2"},{"rule_id":"osv/GHSA-qg35-44qx-7vrr","severity":"high","message":"nltk@3.10.0 (PyPI) is affected by GHSA-qg35-44qx-7vrr","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-qg35-44qx-7vrr"},{"rule_id":"osv/GHSA-3jp2-3mrg-2vxc","severity":"high","message":"oauthlib@3.3.1 (PyPI) is affected by GHSA-3jp2-3mrg-2vxc","path":"backend/uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-3jp2-3mrg-2vxc"},{"rule_id":"osv/GHSA-7984-qgvg-3j9c","severity":"high","message":"oauthlib@3.3.1 (PyPI) is affected by GHSA-7984-qgvg-3j9c","path":"backend/uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-7984-qgvg-3j9c"},{"rule_id":"osv/GHSA-cfh3-3jmp-rvhc","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2249, GHSA-cfh3-3jmp-rvhc","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-cfh3-3jmp-rvhc"},{"rule_id":"osv/GHSA-whj4-6x5x-4v2j","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2250, GHSA-whj4-6x5x-4v2j","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-whj4-6x5x-4v2j"},{"rule_id":"osv/GHSA-pwv6-vv43-88gr","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2252, GHSA-pwv6-vv43-88gr","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-pwv6-vv43-88gr"},{"rule_id":"osv/GHSA-8v84-f9pq-wr9x","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-8v84-f9pq-wr9x"},{"rule_id":"osv/GHSA-5x94-69rx-g8h2","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-5x94-69rx-g8h2"},{"rule_id":"osv/GHSA-45hq-cxwh-f6vc","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-45hq-cxwh-f6vc"},{"rule_id":"osv/GHSA-phj9-mv4w-65pm","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-phj9-mv4w-65pm"},{"rule_id":"osv/GHSA-6r8x-57c9-28j4","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-6r8x-57c9-28j4"},{"rule_id":"osv/GHSA-9hw9-ch79-4vh6","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-9hw9-ch79-4vh6"},{"rule_id":"osv/GHSA-xj96-63gp-2gmr","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-xj96-63gp-2gmr"},{"rule_id":"osv/GHSA-62p4-gmf7-7g93","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-62p4-gmf7-7g93"},{"rule_id":"osv/GHSA-jjj6-mw9f-p565","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-jjj6-mw9f-p565"},{"rule_id":"osv/GHSA-vjc4-5qp5-m44j","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-vjc4-5qp5-m44j"},{"rule_id":"osv/GHSA-27h8-gf7j-v5hc","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-27h8-gf7j-v5hc"},{"rule_id":"osv/GHSA-4558-3h8r-v8xp","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-4558-3h8r-v8xp"},{"rule_id":"osv/GHSA-58r4-6rv3-gfh8","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-58r4-6rv3-gfh8"},{"rule_id":"osv/GHSA-7mwm-ghpf-9vrm","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-7mwm-ghpf-9vrm"},{"rule_id":"osv/GHSA-pchr-8j38-3x4p","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-pchr-8j38-3x4p"},{"rule_id":"osv/GHSA-xgh8-jp6q-p5x8","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4335, GHSA-xgh8-jp6q-p5x8","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-xgh8-jp6q-p5x8"},{"rule_id":"osv/GHSA-g842-9rc4-69pw","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4338, GHSA-g842-9rc4-69pw","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-g842-9rc4-69pw"},{"rule_id":"osv/GHSA-3j72-p6qg-6xp7","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4341, GHSA-3j72-p6qg-6xp7","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-3j72-p6qg-6xp7"},{"rule_id":"osv/GHSA-9v9v-9qvf-h2hj","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4343, GHSA-9v9v-9qvf-h2hj","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-9v9v-9qvf-h2hj"},{"rule_id":"osv/GHSA-22hg-r758-rrw9","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-22hg-r758-rrw9","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-22hg-r758-rrw9"},{"rule_id":"osv/GHSA-5xm2-6676-qcp9","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-5xm2-6676-qcp9","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-5xm2-6676-qcp9"},{"rule_id":"osv/GHSA-65qm-jvmh-6pqg","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-65qm-jvmh-6pqg","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-65qm-jvmh-6pqg"},{"rule_id":"osv/GHSA-c6hw-5grf-ff96","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-c6hw-5grf-ff96","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-c6hw-5grf-ff96"},{"rule_id":"osv/GHSA-f2g6-542v-9j58","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-f2g6-542v-9j58","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-f2g6-542v-9j58"},{"rule_id":"osv/GHSA-g7cr-3p24-7wf7","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-g7cr-3p24-7wf7","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-g7cr-3p24-7wf7"},{"rule_id":"osv/GHSA-gg2r-wvfm-q9rx","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-gg2r-wvfm-q9rx","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-gg2r-wvfm-q9rx"},{"rule_id":"osv/GHSA-j4m9-6w36-pw47","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-j4m9-6w36-pw47","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-j4m9-6w36-pw47"},{"rule_id":"osv/GHSA-jg86-v3jv-hrpm","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-jg86-v3jv-hrpm","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-jg86-v3jv-hrpm"},{"rule_id":"osv/GHSA-mrfp-p49p-3hf2","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-mrfp-p49p-3hf2","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-mrfp-p49p-3hf2"},{"rule_id":"osv/GHSA-p4wg-p73j-c528","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-p4wg-p73j-c528","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-p4wg-p73j-c528"},{"rule_id":"osv/GHSA-q45j-58j2-45rg","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-q45j-58j2-45rg","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-q45j-58j2-45rg"},{"rule_id":"osv/GHSA-xcvg-w56q-r89m","severity":"high","message":"pillow@10.3.0 (PyPI) is affected by GHSA-xcvg-w56q-r89m","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-xcvg-w56q-r89m"},{"rule_id":"osv/PYSEC-2025-183","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2025-183","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):PYSEC-2025-183"},{"rule_id":"osv/GHSA-752w-5fwx-jx9f","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-120, GHSA-752w-5fwx-jx9f","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-752w-5fwx-jx9f"},{"rule_id":"osv/GHSA-xgmm-8j9v-c9wx","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-179, GHSA-xgmm-8j9v-c9wx","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-xgmm-8j9v-c9wx"},{"rule_id":"osv/GHSA-9v7f-9g4p-ffgj","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4144, GHSA-9v7f-9g4p-ffgj","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-9v7f-9g4p-ffgj"},{"rule_id":"osv/GHSA-p4g4-x82p-q773","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4149, GHSA-p4g4-x82p-q773","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-p4g4-x82p-q773"},{"rule_id":"osv/GHSA-x33g-cr3x-6449","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4183, GHSA-x33g-cr3x-6449","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-x33g-cr3x-6449"},{"rule_id":"osv/GHSA-pxh4-856f-4h89","severity":"high","message":"pyjwt@2.10.1 (PyPI) is affected by GHSA-pxh4-856f-4h89","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-pxh4-856f-4h89"},{"rule_id":"osv/GHSA-5xf7-4p34-54qr","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3612, GHSA-5xf7-4p34-54qr","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-5xf7-4p34-54qr"},{"rule_id":"osv/GHSA-g867-7843-wf8q","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3613, GHSA-g867-7843-wf8q","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-g867-7843-wf8q"},{"rule_id":"osv/GHSA-5jq2-8x83-x246","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4153, GHSA-5jq2-8x83-x246","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-5jq2-8x83-x246"},{"rule_id":"osv/GHSA-fp3h-c4fm-7vvf","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4154, GHSA-fp3h-c4fm-7vvf","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-fp3h-c4fm-7vvf"},{"rule_id":"osv/GHSA-g9cg-prrw-2r8q","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4155, GHSA-g9cg-prrw-2r8q","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-g9cg-prrw-2r8q"},{"rule_id":"osv/GHSA-jw7q-gvrg-4vj3","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4156, GHSA-jw7q-gvrg-4vj3","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-jw7q-gvrg-4vj3"},{"rule_id":"osv/GHSA-php9-fj8v-98fj","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4157, GHSA-php9-fj8v-98fj","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-php9-fj8v-98fj"},{"rule_id":"osv/GHSA-qv6h-rv94-w285","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4158, GHSA-qv6h-rv94-w285","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-qv6h-rv94-w285"},{"rule_id":"osv/GHSA-v247-6f48-mgcj","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4159, GHSA-v247-6f48-mgcj","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-v247-6f48-mgcj"},{"rule_id":"osv/GHSA-w23x-9jrw-r45c","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-4160, GHSA-w23x-9jrw-r45c","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-w23x-9jrw-r45c"},{"rule_id":"osv/GHSA-42gh-23hr-vphw","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-42gh-23hr-vphw","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-42gh-23hr-vphw"},{"rule_id":"osv/GHSA-4vqv-7265-gm2w","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-4vqv-7265-gm2w","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-4vqv-7265-gm2w"},{"rule_id":"osv/GHSA-5849-834g-hvw5","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-5849-834g-hvw5","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-5849-834g-hvw5"},{"rule_id":"osv/GHSA-62m5-6wh8-28x7","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-62m5-6wh8-28x7","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-62m5-6wh8-28x7"},{"rule_id":"osv/GHSA-6c7f-9265-g8fw","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-6c7f-9265-g8fw","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-6c7f-9265-g8fw"},{"rule_id":"osv/GHSA-cggf-277g-3q54","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-cggf-277g-3q54","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-cggf-277g-3q54"},{"rule_id":"osv/GHSA-gmh7-3g9r-mjh5","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-gmh7-3g9r-mjh5","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-gmh7-3g9r-mjh5"},{"rule_id":"osv/GHSA-jr96-gvgh-j3r4","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-jr96-gvgh-j3r4","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-jr96-gvgh-j3r4"},{"rule_id":"osv/GHSA-mfr5-77xh-9j7h","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-mfr5-77xh-9j7h","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-mfr5-77xh-9j7h"},{"rule_id":"osv/GHSA-x3rh-gjgm-fmqc","severity":"high","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-x3rh-gjgm-fmqc","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-x3rh-gjgm-fmqc"},{"rule_id":"osv/GHSA-wp53-j4wj-2cfg","severity":"high","message":"python-multipart@0.0.21 (PyPI) is affected by PYSEC-2026-1852, GHSA-wp53-j4wj-2cfg","path":"backend/uv.lock","line":null,"fingerprint":"python-multipart@0.0.21 (PyPI):GHSA-wp53-j4wj-2cfg"},{"rule_id":"osv/GHSA-5rvq-cxj2-64vf","severity":"high","message":"python-multipart@0.0.21 (PyPI) is affected by PYSEC-2026-3036, GHSA-5rvq-cxj2-64vf","path":"backend/uv.lock","line":null,"fingerprint":"python-multipart@0.0.21 (PyPI):GHSA-5rvq-cxj2-64vf"},{"rule_id":"osv/GHSA-pp6c-gr5w-3c5g","severity":"high","message":"python-multipart@0.0.21 (PyPI) is affected by PYSEC-2026-3039, GHSA-pp6c-gr5w-3c5g","path":"backend/uv.lock","line":null,"fingerprint":"python-multipart@0.0.21 (PyPI):GHSA-pp6c-gr5w-3c5g"},{"rule_id":"osv/GHSA-2wc2-fm75-p42x","severity":"high","message":"soupsieve@2.8 (PyPI) is affected by PYSEC-2026-3071, GHSA-2wc2-fm75-p42x","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-2wc2-fm75-p42x"},{"rule_id":"osv/GHSA-836r-79rf-4m37","severity":"high","message":"soupsieve@2.8 (PyPI) is affected by PYSEC-2026-3072, GHSA-836r-79rf-4m37","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-836r-79rf-4m37"},{"rule_id":"osv/GHSA-6655-6qjp-jx7x","severity":"high","message":"soupsieve@2.8 (PyPI) is affected by GHSA-6655-6qjp-jx7x","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-6655-6qjp-jx7x"},{"rule_id":"osv/GHSA-mmhr-3c5m-f64f","severity":"high","message":"soupsieve@2.8 (PyPI) is affected by GHSA-mmhr-3c5m-f64f","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-mmhr-3c5m-f64f"},{"rule_id":"osv/GHSA-wqp7-x3pw-xc5r","severity":"high","message":"starlette@0.50.0 (PyPI) is affected by PYSEC-2026-2281, GHSA-wqp7-x3pw-xc5r","path":"backend/uv.lock","line":null,"fingerprint":"starlette@0.50.0 (PyPI):GHSA-wqp7-x3pw-xc5r"},{"rule_id":"osv/GHSA-82w8-qh3p-5jfq","severity":"high","message":"starlette@0.50.0 (PyPI) is affected by PYSEC-2026-249, GHSA-82w8-qh3p-5jfq","path":"backend/uv.lock","line":null,"fingerprint":"starlette@0.50.0 (PyPI):GHSA-82w8-qh3p-5jfq"},{"rule_id":"osv/PYSEC-2026-139","severity":"high","message":"torch@2.9.1 (PyPI) is affected by PYSEC-2026-139","path":"backend/uv.lock","line":null,"fingerprint":"torch@2.9.1 (PyPI):PYSEC-2026-139"},{"rule_id":"osv/GHSA-63cw-57p8-fm3p","severity":"high","message":"torch@2.9.1 (PyPI) is affected by PYSEC-2026-2286, GHSA-63cw-57p8-fm3p","path":"backend/uv.lock","line":null,"fingerprint":"torch@2.9.1 (PyPI):GHSA-63cw-57p8-fm3p"},{"rule_id":"osv/GHSA-qjxf-f2mg-c6mc","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by PYSEC-2026-140, GHSA-qjxf-f2mg-c6mc","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-qjxf-f2mg-c6mc"},{"rule_id":"osv/GHSA-78cv-mqj4-43f7","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by PYSEC-2026-2287, GHSA-78cv-mqj4-43f7, GHSA-fqwm-6jpj-5wxc","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-78cv-mqj4-43f7"},{"rule_id":"osv/GHSA-3x9g-8vmp-wqvf","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by PYSEC-2026-3387, GHSA-3x9g-8vmp-wqvf","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-3x9g-8vmp-wqvf"},{"rule_id":"osv/GHSA-mgf9-4vpg-hj56","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by PYSEC-2026-3389, GHSA-mgf9-4vpg-hj56","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-mgf9-4vpg-hj56"},{"rule_id":"osv/GHSA-mpf4-983q-p7j4","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by PYSEC-2026-3928, GHSA-mpf4-983q-p7j4","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-mpf4-983q-p7j4"},{"rule_id":"osv/GHSA-c2m8-h5v5-343r","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by GHSA-c2m8-h5v5-343r","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-c2m8-h5v5-343r"},{"rule_id":"osv/GHSA-chx6-46f5-w4vp","severity":"high","message":"tornado@6.5.4 (PyPI) is affected by GHSA-chx6-46f5-w4vp","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-chx6-46f5-w4vp"},{"rule_id":"osv/PYSEC-2025-217","severity":"high","message":"transformers@4.57.3 (PyPI) is affected by PYSEC-2025-217","path":"backend/uv.lock","line":null,"fingerprint":"transformers@4.57.3 (PyPI):PYSEC-2025-217"},{"rule_id":"osv/GHSA-69w3-r845-3855","severity":"high","message":"transformers@4.57.3 (PyPI) is affected by PYSEC-2026-2288, GHSA-69w3-r845-3855","path":"backend/uv.lock","line":null,"fingerprint":"transformers@4.57.3 (PyPI):GHSA-69w3-r845-3855"},{"rule_id":"osv/GHSA-29pf-2h5f-8g72","severity":"high","message":"transformers@4.57.3 (PyPI) is affected by PYSEC-2026-2289, GHSA-29pf-2h5f-8g72","path":"backend/uv.lock","line":null,"fingerprint":"transformers@4.57.3 (PyPI):GHSA-29pf-2h5f-8g72"},{"rule_id":"osv/GHSA-xrqw-3rrv-vx5w","severity":"high","message":"transformers@4.57.3 (PyPI) is affected by PYSEC-2026-3929, GHSA-xrqw-3rrv-vx5w","path":"backend/uv.lock","line":null,"fingerprint":"transformers@4.57.3 (PyPI):GHSA-xrqw-3rrv-vx5w"},{"rule_id":"osv/GHSA-x9r9-c232-4q39","severity":"high","message":"transformers@4.57.3 (PyPI) is affected by PYSEC-2026-4174, GHSA-x9r9-c232-4q39","path":"backend/uv.lock","line":null,"fingerprint":"transformers@4.57.3 (PyPI):GHSA-x9r9-c232-4q39"},{"rule_id":"osv/GHSA-qccp-gfcp-xxvc","severity":"high","message":"urllib3@2.6.2 (PyPI) is affected by PYSEC-2026-141, GHSA-qccp-gfcp-xxvc","path":"backend/uv.lock","line":null,"fingerprint":"urllib3@2.6.2 (PyPI):GHSA-qccp-gfcp-xxvc"},{"rule_id":"osv/GHSA-mf9v-mfxr-j63j","severity":"high","message":"urllib3@2.6.2 (PyPI) is affected by PYSEC-2026-142, GHSA-mf9v-mfxr-j63j","path":"backend/uv.lock","line":null,"fingerprint":"urllib3@2.6.2 (PyPI):GHSA-mf9v-mfxr-j63j"},{"rule_id":"osv/GHSA-38jv-5279-wg99","severity":"high","message":"urllib3@2.6.2 (PyPI) is affected by PYSEC-2026-1996, GHSA-38jv-5279-wg99","path":"backend/uv.lock","line":null,"fingerprint":"urllib3@2.6.2 (PyPI):GHSA-38jv-5279-wg99"},{"rule_id":"osv/GHSA-8988-9cw3-xx77","severity":"high","message":"urllib3@2.6.2 (PyPI) is affected by PYSEC-2026-4175, GHSA-8988-9cw3-xx77","path":"backend/uv.lock","line":null,"fingerprint":"urllib3@2.6.2 (PyPI):GHSA-8988-9cw3-xx77"},{"rule_id":"osv/GHSA-vxq7-64xx-v4gw","severity":"high","message":"urllib3@2.6.2 (PyPI) is affected by PYSEC-2026-4177, GHSA-vxq7-64xx-v4gw","path":"backend/uv.lock","line":null,"fingerprint":"urllib3@2.6.2 (PyPI):GHSA-vxq7-64xx-v4gw"},{"rule_id":"osv/GHSA-94p9-xgh2-xp45","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by PYSEC-2026-4011, GHSA-94p9-xgh2-xp45","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-94p9-xgh2-xp45"},{"rule_id":"osv/GHSA-p58f-9548-mpm2","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by PYSEC-2026-4013, GHSA-p58f-9548-mpm2","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-p58f-9548-mpm2"},{"rule_id":"osv/GHSA-x78j-v8h9-3j2q","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by PYSEC-2026-4014, GHSA-x78j-v8h9-3j2q","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-x78j-v8h9-3j2q"},{"rule_id":"osv/GHSA-394h-qwmc-48pf","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-394h-qwmc-48pf","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-394h-qwmc-48pf"},{"rule_id":"osv/GHSA-5vjq-rrrf-7h2q","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-5vjq-rrrf-7h2q","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-5vjq-rrrf-7h2q"},{"rule_id":"osv/GHSA-6w3r-xr62-4xcp","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-6w3r-xr62-4xcp","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-6w3r-xr62-4xcp"},{"rule_id":"osv/GHSA-8rjx-v5ww-45pp","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-8rjx-v5ww-45pp","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-8rjx-v5ww-45pp"},{"rule_id":"osv/GHSA-c947-3pg5-gm8q","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-c947-3pg5-gm8q","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-c947-3pg5-gm8q"},{"rule_id":"osv/GHSA-c978-59m8-c77v","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-c978-59m8-c77v","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-c978-59m8-c77v"},{"rule_id":"osv/GHSA-vxj4-q4g9-crj7","severity":"high","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-vxj4-q4g9-crj7","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-vxj4-q4g9-crj7"},{"rule_id":"osv/GHSA-83rm-6c8r-g728","severity":"high","message":"@intlify/core-base@11.3.0 (npm) is affected by GHSA-83rm-6c8r-g728","path":"frontend/package-lock.json","line":null,"fingerprint":"@intlify/core-base@11.3.0 (npm):GHSA-83rm-6c8r-g728"},{"rule_id":"osv/GHSA-83rm-6c8r-g728","severity":"high","message":"@intlify/shared@11.3.0 (npm) is affected by GHSA-83rm-6c8r-g728","path":"frontend/package-lock.json","line":null,"fingerprint":"@intlify/shared@11.3.0 (npm):GHSA-83rm-6c8r-g728"},{"rule_id":"osv/GHSA-g2v6-rqmx-r4w6","severity":"high","message":"@vue/server-renderer@3.5.25 (npm) is affected by GHSA-g2v6-rqmx-r4w6","path":"frontend/package-lock.json","line":null,"fingerprint":"@vue/server-renderer@3.5.25 (npm):GHSA-g2v6-rqmx-r4w6"},{"rule_id":"osv/GHSA-3pq3-5fj3-cg6v","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-3pq3-5fj3-cg6v","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-3pq3-5fj3-cg6v"},{"rule_id":"osv/GHSA-542g-h47m-68v8","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-542g-h47m-68v8","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-542g-h47m-68v8"},{"rule_id":"osv/GHSA-c29m-xwm3-cm6r","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-c29m-xwm3-cm6r","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-c29m-xwm3-cm6r"},{"rule_id":"osv/GHSA-m8m8-qj5v-23w3","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-m8m8-qj5v-23w3","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-m8m8-qj5v-23w3"},{"rule_id":"osv/GHSA-mghh-pgcx-3jjj","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-mghh-pgcx-3jjj","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-mghh-pgcx-3jjj"},{"rule_id":"osv/GHSA-r4gj-5m52-g5wh","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-r4gj-5m52-g5wh","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-r4gj-5m52-g5wh"},{"rule_id":"osv/GHSA-x97p-jq2g-jp4f","severity":"high","message":"axios@1.18.1 (npm) is affected by GHSA-x97p-jq2g-jp4f","path":"frontend/package-lock.json","line":null,"fingerprint":"axios@1.18.1 (npm):GHSA-x97p-jq2g-jp4f"},{"rule_id":"osv/GHSA-8r9p-f939-6h3c","severity":"high","message":"follow-redirects@1.16.0 (npm) is affected by GHSA-8r9p-f939-6h3c","path":"frontend/package-lock.json","line":null,"fingerprint":"follow-redirects@1.16.0 (npm):GHSA-8r9p-f939-6h3c"},{"rule_id":"osv/GHSA-mrwp-f3q8-3g9p","severity":"high","message":"follow-redirects@1.16.0 (npm) is affected by GHSA-mrwp-f3q8-3g9p","path":"frontend/package-lock.json","line":null,"fingerprint":"follow-redirects@1.16.0 (npm):GHSA-mrwp-f3q8-3g9p"},{"rule_id":"osv/GHSA-q3jh-wrc6-jgq8","severity":"high","message":"follow-redirects@1.16.0 (npm) is affected by GHSA-q3jh-wrc6-jgq8","path":"frontend/package-lock.json","line":null,"fingerprint":"follow-redirects@1.16.0 (npm):GHSA-q3jh-wrc6-jgq8"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.16 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"frontend/package-lock.json","line":null,"fingerprint":"nanoid@3.3.16 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"frontend/package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-587h-7wmj-h5pm","severity":"high","message":"vite@7.3.6 (npm) is affected by GHSA-587h-7wmj-h5pm","path":"frontend/package-lock.json","line":null,"fingerprint":"vite@7.3.6 (npm):GHSA-587h-7wmj-h5pm"},{"rule_id":"osv/GHSA-83rm-6c8r-g728","severity":"high","message":"vue-i18n@11.3.0 (npm) is affected by GHSA-83rm-6c8r-g728","path":"frontend/package-lock.json","line":null,"fingerprint":"vue-i18n@11.3.0 (npm):GHSA-83rm-6c8r-g728"},{"rule_id":"osv/GHSA-68rp-wp8r-4726","severity":"medium","message":"flask@3.0.0 (PyPI) is affected by PYSEC-2026-2151, GHSA-68rp-wp8r-4726","path":"backend/requirements.txt","line":null,"fingerprint":"flask@3.0.0 (PyPI):GHSA-68rp-wp8r-4726"},{"rule_id":"osv/GHSA-mr82-8j83-vxmv","severity":"medium","message":"pydantic@2.0.0 (PyPI) is affected by PYSEC-2026-1812, GHSA-mr82-8j83-vxmv","path":"backend/requirements.txt","line":null,"fingerprint":"pydantic@2.0.0 (PyPI):GHSA-mr82-8j83-vxmv"},{"rule_id":"osv/GHSA-mf9w-mj56-hr94","severity":"medium","message":"python-dotenv@1.0.0 (PyPI) is affected by PYSEC-2026-2270, GHSA-mf9w-mj56-hr94","path":"backend/requirements.txt","line":null,"fingerprint":"python-dotenv@1.0.0 (PyPI):GHSA-mf9w-mj56-hr94"},{"rule_id":"osv/GHSA-5p39-cfhj-2xmp","severity":"medium","message":"anyio@4.12.0 (PyPI) is affected by PYSEC-2026-4024, GHSA-5p39-cfhj-2xmp","path":"backend/uv.lock","line":null,"fingerprint":"anyio@4.12.0 (PyPI):GHSA-5p39-cfhj-2xmp"},{"rule_id":"osv/GHSA-g75f-g53v-794x","severity":"medium","message":"bleach@6.3.0 (PyPI) is affected by GHSA-g75f-g53v-794x","path":"backend/uv.lock","line":null,"fingerprint":"bleach@6.3.0 (PyPI):GHSA-g75f-g53v-794x"},{"rule_id":"osv/GHSA-gj48-438w-jh9v","severity":"medium","message":"bleach@6.3.0 (PyPI) is affected by GHSA-gj48-438w-jh9v","path":"backend/uv.lock","line":null,"fingerprint":"bleach@6.3.0 (PyPI):GHSA-gj48-438w-jh9v"},{"rule_id":"osv/GHSA-m959-cc7f-wv43","severity":"medium","message":"cryptography@46.0.3 (PyPI) is affected by PYSEC-2026-35, GHSA-m959-cc7f-wv43","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-m959-cc7f-wv43"},{"rule_id":"osv/GHSA-m2h6-j472-rp4c","severity":"medium","message":"cryptography@46.0.3 (PyPI) is affected by PYSEC-2026-3554, GHSA-m2h6-j472-rp4c","path":"backend/uv.lock","line":null,"fingerprint":"cryptography@46.0.3 (PyPI):GHSA-m2h6-j472-rp4c"},{"rule_id":"osv/GHSA-qmgc-5h2g-mvrw","severity":"medium","message":"filelock@3.20.1 (PyPI) is affected by PYSEC-2026-1374, GHSA-qmgc-5h2g-mvrw","path":"backend/uv.lock","line":null,"fingerprint":"filelock@3.20.1 (PyPI):GHSA-qmgc-5h2g-mvrw"},{"rule_id":"osv/GHSA-69hj-f68j-2879","severity":"medium","message":"filelock@3.20.1 (PyPI) is affected by GHSA-69hj-f68j-2879","path":"backend/uv.lock","line":null,"fingerprint":"filelock@3.20.1 (PyPI):GHSA-69hj-f68j-2879"},{"rule_id":"osv/GHSA-8mx5-7m5m-r77g","severity":"medium","message":"filelock@3.20.1 (PyPI) is affected by GHSA-8mx5-7m5m-r77g","path":"backend/uv.lock","line":null,"fingerprint":"filelock@3.20.1 (PyPI):GHSA-8mx5-7m5m-r77g"},{"rule_id":"osv/GHSA-68rp-wp8r-4726","severity":"medium","message":"flask@3.1.2 (PyPI) is affected by PYSEC-2026-2151, GHSA-68rp-wp8r-4726","path":"backend/uv.lock","line":null,"fingerprint":"flask@3.1.2 (PyPI):GHSA-68rp-wp8r-4726"},{"rule_id":"osv/GHSA-65pc-fj4g-8rjx","severity":"medium","message":"idna@3.11 (PyPI) is affected by PYSEC-2026-215, GHSA-65pc-fj4g-8rjx","path":"backend/uv.lock","line":null,"fingerprint":"idna@3.11 (PyPI):GHSA-65pc-fj4g-8rjx"},{"rule_id":"osv/GHSA-428g-f7cq-pgp5","severity":"medium","message":"marshmallow@3.26.1 (PyPI) is affected by PYSEC-2026-1605, GHSA-428g-f7cq-pgp5","path":"backend/uv.lock","line":null,"fingerprint":"marshmallow@3.26.1 (PyPI):GHSA-428g-f7cq-pgp5"},{"rule_id":"osv/GHSA-5h93-6whr-6q8j","severity":"medium","message":"mcp@1.24.0 (PyPI) is affected by GHSA-5h93-6whr-6q8j","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-5h93-6whr-6q8j"},{"rule_id":"osv/GHSA-rwrf-2pqf-9j8j","severity":"medium","message":"mcp@1.24.0 (PyPI) is affected by GHSA-rwrf-2pqf-9j8j","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-rwrf-2pqf-9j8j"},{"rule_id":"osv/GHSA-w4fh-qvv9-3v23","severity":"medium","message":"mcp@1.24.0 (PyPI) is affected by GHSA-w4fh-qvv9-3v23","path":"backend/uv.lock","line":null,"fingerprint":"mcp@1.24.0 (PyPI):GHSA-w4fh-qvv9-3v23"},{"rule_id":"osv/GHSA-58cw-g322-p94v","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-168, GHSA-58cw-g322-p94v","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-58cw-g322-p94v"},{"rule_id":"osv/GHSA-8g87-j6q8-g93x","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2206, GHSA-8g87-j6q8-g93x","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-8g87-j6q8-g93x"},{"rule_id":"osv/GHSA-v87v-83h2-53w7","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2207, GHSA-v87v-83h2-53w7","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-v87v-83h2-53w7"},{"rule_id":"osv/PYSEC-2026-2208","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2208","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):PYSEC-2026-2208"},{"rule_id":"osv/PYSEC-2026-2209","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2209","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):PYSEC-2026-2209"},{"rule_id":"osv/GHSA-8c25-4j27-2rv3","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2211, GHSA-8c25-4j27-2rv3","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-8c25-4j27-2rv3"},{"rule_id":"osv/GHSA-r4rv-85jg-w4mf","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2212, GHSA-r4rv-85jg-w4mf","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-r4rv-85jg-w4mf"},{"rule_id":"osv/GHSA-g97x-gvcm-x72h","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2214, GHSA-g97x-gvcm-x72h","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-g97x-gvcm-x72h"},{"rule_id":"osv/GHSA-8mpj-m6qm-5qr8","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2215, GHSA-8mpj-m6qm-5qr8","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-8mpj-m6qm-5qr8"},{"rule_id":"osv/GHSA-qfrw-5rxm-mhh2","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2217, GHSA-qfrw-5rxm-mhh2","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-qfrw-5rxm-mhh2"},{"rule_id":"osv/GHSA-2hm2-hc3v-44h9","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by PYSEC-2026-2218, GHSA-2hm2-hc3v-44h9","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-2hm2-hc3v-44h9"},{"rule_id":"osv/GHSA-h7ww-273w-6cm8","severity":"medium","message":"mistune@3.1.4 (PyPI) is affected by GHSA-h7ww-273w-6cm8","path":"backend/uv.lock","line":null,"fingerprint":"mistune@3.1.4 (PyPI):GHSA-h7ww-273w-6cm8"},{"rule_id":"osv/GHSA-4c99-qj7h-p3vg","severity":"medium","message":"nbconvert@7.16.6 (PyPI) is affected by PYSEC-2026-2229, GHSA-4c99-qj7h-p3vg","path":"backend/uv.lock","line":null,"fingerprint":"nbconvert@7.16.6 (PyPI):GHSA-4c99-qj7h-p3vg"},{"rule_id":"osv/GHSA-7jqv-fw35-gmx9","severity":"medium","message":"nbconvert@7.16.6 (PyPI) is affected by PYSEC-2026-2230, GHSA-7jqv-fw35-gmx9","path":"backend/uv.lock","line":null,"fingerprint":"nbconvert@7.16.6 (PyPI):GHSA-7jqv-fw35-gmx9"},{"rule_id":"osv/GHSA-9754-6rhw-gj3h","severity":"medium","message":"nbconvert@7.16.6 (PyPI) is affected by GHSA-9754-6rhw-gj3h","path":"backend/uv.lock","line":null,"fingerprint":"nbconvert@7.16.6 (PyPI):GHSA-9754-6rhw-gj3h"},{"rule_id":"osv/GHSA-3hhw-38pf-pxj6","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3726, GHSA-3hhw-38pf-pxj6","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-3hhw-38pf-pxj6"},{"rule_id":"osv/GHSA-cw6x-m8jw-qmrh","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3739, GHSA-cw6x-m8jw-qmrh","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-cw6x-m8jw-qmrh"},{"rule_id":"osv/GHSA-8mpw-7fpc-4gqj","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3752, GHSA-8mpw-7fpc-4gqj","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-8mpw-7fpc-4gqj"},{"rule_id":"osv/GHSA-ff5c-cp5c-9wjf","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3869, GHSA-ff5c-cp5c-9wjf","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-ff5c-cp5c-9wjf"},{"rule_id":"osv/GHSA-vp2x-qp44-57v7","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by PYSEC-2026-3871, GHSA-vp2x-qp44-57v7","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-vp2x-qp44-57v7"},{"rule_id":"osv/GHSA-ffr9-mgrr-wcvr","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by GHSA-ffr9-mgrr-wcvr","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-ffr9-mgrr-wcvr"},{"rule_id":"osv/GHSA-gpwc-27cw-rh9r","severity":"medium","message":"nltk@3.10.0 (PyPI) is affected by GHSA-gpwc-27cw-rh9r","path":"backend/uv.lock","line":null,"fingerprint":"nltk@3.10.0 (PyPI):GHSA-gpwc-27cw-rh9r"},{"rule_id":"osv/GHSA-hj66-6f7g-4r5v","severity":"medium","message":"oauthlib@3.3.1 (PyPI) is affected by PYSEC-2026-4113, GHSA-hj66-6f7g-4r5v","path":"backend/uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-hj66-6f7g-4r5v"},{"rule_id":"osv/GHSA-xpv3-w29h-x7cv","severity":"medium","message":"oauthlib@3.3.1 (PyPI) is affected by PYSEC-2026-4114, GHSA-xpv3-w29h-x7cv","path":"backend/uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-xpv3-w29h-x7cv"},{"rule_id":"osv/GHSA-wjx4-4jcj-g98j","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-165, GHSA-wjx4-4jcj-g98j","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-wjx4-4jcj-g98j"},{"rule_id":"osv/GHSA-4x4j-2g7c-83w6","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2257, GHSA-4x4j-2g7c-83w6","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-4x4j-2g7c-83w6"},{"rule_id":"osv/GHSA-r73j-pqj5-w3x7","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-2874, GHSA-r73j-pqj5-w3x7","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-r73j-pqj5-w3x7"},{"rule_id":"osv/GHSA-fj7v-r99m-22gq","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-3494, GHSA-fj7v-r99m-22gq","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-fj7v-r99m-22gq"},{"rule_id":"osv/GHSA-p8hx-v2p6-rp84","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4337, GHSA-p8hx-v2p6-rp84","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-p8hx-v2p6-rp84"},{"rule_id":"osv/GHSA-4rm8-3hmm-39fg","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by PYSEC-2026-4340, GHSA-4rm8-3hmm-39fg","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-4rm8-3hmm-39fg"},{"rule_id":"osv/GHSA-24rc-8hj2-v98c","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-24rc-8hj2-v98c","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-24rc-8hj2-v98c"},{"rule_id":"osv/GHSA-254f-3936-288h","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-254f-3936-288h","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-254f-3936-288h"},{"rule_id":"osv/GHSA-462x-pgg6-55fp","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-462x-pgg6-55fp","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-462x-pgg6-55fp"},{"rule_id":"osv/GHSA-74r2-7ff9-mjj2","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-74r2-7ff9-mjj2","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-74r2-7ff9-mjj2"},{"rule_id":"osv/GHSA-fc9g-5qg7-mf45","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-fc9g-5qg7-mf45","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-fc9g-5qg7-mf45"},{"rule_id":"osv/GHSA-rfgq-q3w2-pmv2","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-rfgq-q3w2-pmv2","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-rfgq-q3w2-pmv2"},{"rule_id":"osv/GHSA-vx6w-vv9f-6gvg","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-vx6w-vv9f-6gvg","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-vx6w-vv9f-6gvg"},{"rule_id":"osv/GHSA-wqgw-9xfh-qf2g","severity":"medium","message":"pillow@10.3.0 (PyPI) is affected by GHSA-wqgw-9xfh-qf2g","path":"backend/uv.lock","line":null,"fingerprint":"pillow@10.3.0 (PyPI):GHSA-wqgw-9xfh-qf2g"},{"rule_id":"osv/GHSA-4xgf-cpjx-pc3j","severity":"medium","message":"pydantic-settings@2.12.0 (PyPI) is affected by GHSA-4xgf-cpjx-pc3j","path":"backend/uv.lock","line":null,"fingerprint":"pydantic-settings@2.12.0 (PyPI):GHSA-4xgf-cpjx-pc3j"},{"rule_id":"osv/GHSA-993g-76c3-p5m4","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-175, GHSA-993g-76c3-p5m4","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-993g-76c3-p5m4"},{"rule_id":"osv/GHSA-jq35-7prp-9v3f","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-176, GHSA-jq35-7prp-9v3f","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-jq35-7prp-9v3f"},{"rule_id":"osv/GHSA-w7vc-732c-9m39","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-178, GHSA-w7vc-732c-9m39","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-w7vc-732c-9m39"},{"rule_id":"osv/GHSA-2gx3-rcp4-g85q","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4140, GHSA-2gx3-rcp4-g85q","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-2gx3-rcp4-g85q"},{"rule_id":"osv/GHSA-42vr-xj54-vc7v","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4141, GHSA-42vr-xj54-vc7v","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-42vr-xj54-vc7v"},{"rule_id":"osv/GHSA-hxm8-2xgr-2p9m","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4147, GHSA-hxm8-2xgr-2p9m","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-hxm8-2xgr-2p9m"},{"rule_id":"osv/GHSA-jwrc-g2q2-pq5p","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4148, GHSA-jwrc-g2q2-pq5p","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-jwrc-g2q2-pq5p"},{"rule_id":"osv/GHSA-w6j9-cwv2-h6wq","severity":"medium","message":"pyjwt@2.10.1 (PyPI) is affected by PYSEC-2026-4152, GHSA-w6j9-cwv2-h6wq","path":"backend/uv.lock","line":null,"fingerprint":"pyjwt@2.10.1 (PyPI):GHSA-w6j9-cwv2-h6wq"},{"rule_id":"osv/GHSA-2q4j-m29v-hq73","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-1827, GHSA-2q4j-m29v-hq73","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-2q4j-m29v-hq73"},{"rule_id":"osv/GHSA-248m-82v9-q6g6","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3004, GHSA-248m-82v9-q6g6","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-248m-82v9-q6g6"},{"rule_id":"osv/GHSA-3crg-w4f6-42mx","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3006, GHSA-3crg-w4f6-42mx","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-3crg-w4f6-42mx"},{"rule_id":"osv/GHSA-4pxv-j86v-mhcw","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3007, GHSA-4pxv-j86v-mhcw","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-4pxv-j86v-mhcw"},{"rule_id":"osv/GHSA-52x6-gq3r-vpf4","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3009, GHSA-52x6-gq3r-vpf4","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-52x6-gq3r-vpf4"},{"rule_id":"osv/GHSA-5hgr-hg42-57jg","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3010, GHSA-5hgr-hg42-57jg","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-5hgr-hg42-57jg"},{"rule_id":"osv/GHSA-7gw9-cf7v-778f","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3011, GHSA-7gw9-cf7v-778f","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-7gw9-cf7v-778f"},{"rule_id":"osv/GHSA-87mj-5ggw-8qc3","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3012, GHSA-87mj-5ggw-8qc3","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-87mj-5ggw-8qc3"},{"rule_id":"osv/GHSA-996q-pr4m-cvgq","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3013, GHSA-996q-pr4m-cvgq","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-996q-pr4m-cvgq"},{"rule_id":"osv/GHSA-9m86-7pmv-2852","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3014, GHSA-9m86-7pmv-2852","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-9m86-7pmv-2852"},{"rule_id":"osv/GHSA-9mvc-8737-8j8h","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3015, GHSA-9mvc-8737-8j8h","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-9mvc-8737-8j8h"},{"rule_id":"osv/GHSA-cj93-chg6-vgv8","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3016, GHSA-cj93-chg6-vgv8","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-cj93-chg6-vgv8"},{"rule_id":"osv/GHSA-f2v5-7jq9-h8cg","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3017, GHSA-f2v5-7jq9-h8cg","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-f2v5-7jq9-h8cg"},{"rule_id":"osv/GHSA-g9xf-7f8q-9mcj","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3018, GHSA-g9xf-7f8q-9mcj","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-g9xf-7f8q-9mcj"},{"rule_id":"osv/GHSA-hqmh-ppp3-xvm7","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3019, GHSA-hqmh-ppp3-xvm7","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-hqmh-ppp3-xvm7"},{"rule_id":"osv/GHSA-j543-4vmf-qm7v","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3020, GHSA-j543-4vmf-qm7v","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-j543-4vmf-qm7v"},{"rule_id":"osv/GHSA-jj6c-8h6c-hppx","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3021, GHSA-jj6c-8h6c-hppx","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-jj6c-8h6c-hppx"},{"rule_id":"osv/GHSA-m2v9-299j-rv96","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3022, GHSA-m2v9-299j-rv96","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-m2v9-299j-rv96"},{"rule_id":"osv/GHSA-qpxp-75px-xjcp","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3023, GHSA-qpxp-75px-xjcp","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-qpxp-75px-xjcp"},{"rule_id":"osv/GHSA-wgvp-vg3v-2xq3","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3024, GHSA-wgvp-vg3v-2xq3","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-wgvp-vg3v-2xq3"},{"rule_id":"osv/GHSA-wjqc-6w8f-h24c","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3025, GHSA-wjqc-6w8f-h24c","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-wjqc-6w8f-h24c"},{"rule_id":"osv/GHSA-x284-j5p8-9c5p","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3026, GHSA-x284-j5p8-9c5p","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-x284-j5p8-9c5p"},{"rule_id":"osv/GHSA-x7hp-r3qg-r3cj","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3027, GHSA-x7hp-r3qg-r3cj","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-x7hp-r3qg-r3cj"},{"rule_id":"osv/GHSA-55h5-xmcq-c37v","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3610, GHSA-55h5-xmcq-c37v","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-55h5-xmcq-c37v"},{"rule_id":"osv/GHSA-5qjq-93h5-hrgp","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3611, GHSA-5qjq-93h5-hrgp","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-5qjq-93h5-hrgp"},{"rule_id":"osv/GHSA-fp3f-mc75-235c","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3655, GHSA-fp3f-mc75-235c","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-fp3f-mc75-235c"},{"rule_id":"osv/GHSA-fwg2-594c-jp42","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3656, GHSA-fwg2-594c-jp42","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-fwg2-594c-jp42"},{"rule_id":"osv/GHSA-23w6-3w8w-8484","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3910, GHSA-23w6-3w8w-8484","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-23w6-3w8w-8484"},{"rule_id":"osv/GHSA-763m-79hh-57f2","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3911, GHSA-763m-79hh-57f2","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-763m-79hh-57f2"},{"rule_id":"osv/GHSA-fc8x-2rww-xw9m","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3912, GHSA-fc8x-2rww-xw9m","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-fc8x-2rww-xw9m"},{"rule_id":"osv/GHSA-jp53-mhqp-8xcg","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by PYSEC-2026-3913, GHSA-jp53-mhqp-8xcg","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-jp53-mhqp-8xcg"},{"rule_id":"osv/GHSA-39mj-jf6j-2qj3","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-39mj-jf6j-2qj3","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-39mj-jf6j-2qj3"},{"rule_id":"osv/GHSA-6vvc-x485-93v7","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-6vvc-x485-93v7","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-6vvc-x485-93v7"},{"rule_id":"osv/GHSA-7mh2-4gg2-979f","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-7mh2-4gg2-979f","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-7mh2-4gg2-979f"},{"rule_id":"osv/GHSA-9mx8-4j7g-633p","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-9mx8-4j7g-633p","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-9mx8-4j7g-633p"},{"rule_id":"osv/GHSA-cgf9-327m-v77c","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-cgf9-327m-v77c","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-cgf9-327m-v77c"},{"rule_id":"osv/GHSA-f54x-cmq8-qg57","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-f54x-cmq8-qg57","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-f54x-cmq8-qg57"},{"rule_id":"osv/GHSA-jm82-fx9c-mx94","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-jm82-fx9c-mx94","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-jm82-fx9c-mx94"},{"rule_id":"osv/GHSA-qfv9-64jg-mh7p","severity":"medium","message":"pypdf@6.4.2 (PyPI) is affected by GHSA-qfv9-64jg-mh7p","path":"backend/uv.lock","line":null,"fingerprint":"pypdf@6.4.2 (PyPI):GHSA-qfv9-64jg-mh7p"},{"rule_id":"osv/GHSA-6w46-j5rx-g56g","severity":"medium","message":"pytest@8.2.0 (PyPI) is affected by PYSEC-2026-1845, GHSA-6w46-j5rx-g56g","path":"backend/uv.lock","line":null,"fingerprint":"pytest@8.2.0 (PyPI):GHSA-6w46-j5rx-g56g"},{"rule_id":"osv/GHSA-mf9w-mj56-hr94","severity":"medium","message":"python-dotenv@1.2.1 (PyPI) is affected by PYSEC-2026-2270, GHSA-mf9w-mj56-hr94","path":"backend/uv.lock","line":null,"fingerprint":"python-dotenv@1.2.1 (PyPI):GHSA-mf9w-mj56-hr94"},{"rule_id":"osv/GHSA-mj87-hwqh-73pj","severity":"medium","message":"python-multipart@0.0.21 (PyPI) is affected by PYSEC-2026-3038, GHSA-mj87-hwqh-73pj","path":"backend/uv.lock","line":null,"fingerprint":"python-multipart@0.0.21 (PyPI):GHSA-mj87-hwqh-73pj"},{"rule_id":"osv/GHSA-gc5v-m9x4-r6x2","severity":"medium","message":"requests@2.32.5 (PyPI) is affected by PYSEC-2026-2275, GHSA-gc5v-m9x4-r6x2","path":"backend/uv.lock","line":null,"fingerprint":"requests@2.32.5 (PyPI):GHSA-gc5v-m9x4-r6x2"},{"rule_id":"osv/GHSA-h35f-9h28-mq5c","severity":"medium","message":"setuptools@80.9.0 (PyPI) is affected by PYSEC-2026-3447, GHSA-h35f-9h28-mq5c","path":"backend/uv.lock","line":null,"fingerprint":"setuptools@80.9.0 (PyPI):GHSA-h35f-9h28-mq5c"},{"rule_id":"osv/GHSA-gjv8-xp57-g29c","severity":"medium","message":"soupsieve@2.8 (PyPI) is affected by PYSEC-2026-4170, GHSA-gjv8-xp57-g29c","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-gjv8-xp57-g29c"},{"rule_id":"osv/GHSA-j934-xhv5-fg8f","severity":"medium","message":"soupsieve@2.8 (PyPI) is affected by PYSEC-2026-4171, GHSA-j934-xhv5-fg8f","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-j934-xhv5-fg8f"},{"rule_id":"osv/GHSA-4j63-6c4x-wfg4","severity":"medium","message":"soupsieve@2.8 (PyPI) is affected by GHSA-4j63-6c4x-wfg4","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-4j63-6c4x-wfg4"},{"rule_id":"osv/GHSA-7g44-g9rc-x53w","severity":"medium","message":"soupsieve@2.8 (PyPI) is affected by GHSA-7g44-g9rc-x53w","path":"backend/uv.lock","line":null,"fingerprint":"soupsieve@2.8 (PyPI):GHSA-7g44-g9rc-x53w"},{"rule_id":"osv/GHSA-86qp-5c8j-p5mr","severity":"medium","message":"starlette@0.50.0 (PyPI) is affected by PYSEC-2026-161, GHSA-86qp-5c8j-p5mr","path":"backend/uv.lock","line":null,"fingerprint":"starlette@0.50.0 (PyPI):GHSA-86qp-5c8j-p5mr"},{"rule_id":"osv/GHSA-x746-7m8f-x49c","severity":"medium","message":"starlette@0.50.0 (PyPI) is affected by PYSEC-2026-2280, GHSA-x746-7m8f-x49c","path":"backend/uv.lock","line":null,"fingerprint":"starlette@0.50.0 (PyPI):GHSA-x746-7m8f-x49c"},{"rule_id":"osv/GHSA-jp82-jpqv-5vv3","severity":"medium","message":"starlette@0.50.0 (PyPI) is affected by PYSEC-2026-248, GHSA-jp82-jpqv-5vv3","path":"backend/uv.lock","line":null,"fingerprint":"starlette@0.50.0 (PyPI):GHSA-jp82-jpqv-5vv3"},{"rule_id":"osv/GHSA-qfhq-4f3w-5fph","severity":"medium","message":"torch@2.9.1 (PyPI) is affected by GHSA-qfhq-4f3w-5fph","path":"backend/uv.lock","line":null,"fingerprint":"torch@2.9.1 (PyPI):GHSA-qfhq-4f3w-5fph"},{"rule_id":"osv/GHSA-rrmf-rvhw-rf47","severity":"medium","message":"torch@2.9.1 (PyPI) is affected by GHSA-rrmf-rvhw-rf47","path":"backend/uv.lock","line":null,"fingerprint":"torch@2.9.1 (PyPI):GHSA-rrmf-rvhw-rf47"},{"rule_id":"osv/GHSA-3hv7-mjh2-fv65","severity":"medium","message":"tornado@6.5.4 (PyPI) is affected by GHSA-3hv7-mjh2-fv65","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-3hv7-mjh2-fv65"},{"rule_id":"osv/GHSA-8423-8fgw-73vq","severity":"medium","message":"tornado@6.5.4 (PyPI) is affected by GHSA-8423-8fgw-73vq","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-8423-8fgw-73vq"},{"rule_id":"osv/GHSA-pcg2-g6cj-q92c","severity":"medium","message":"tornado@6.5.4 (PyPI) is affected by GHSA-pcg2-g6cj-q92c","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-pcg2-g6cj-q92c"},{"rule_id":"osv/GHSA-pw6j-qg29-8w7f","severity":"medium","message":"tornado@6.5.4 (PyPI) is affected by GHSA-pw6j-qg29-8w7f","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-pw6j-qg29-8w7f"},{"rule_id":"osv/GHSA-r4j5-9xpp-3985","severity":"medium","message":"tornado@6.5.4 (PyPI) is affected by GHSA-r4j5-9xpp-3985","path":"backend/uv.lock","line":null,"fingerprint":"tornado@6.5.4 (PyPI):GHSA-r4j5-9xpp-3985"},{"rule_id":"osv/GHSA-32r8-54hf-c9p3","severity":"medium","message":"unstructured@0.13.7 (PyPI) is affected by PYSEC-2026-1993, GHSA-32r8-54hf-c9p3","path":"backend/uv.lock","line":null,"fingerprint":"unstructured@0.13.7 (PyPI):GHSA-32r8-54hf-c9p3"},{"rule_id":"osv/GHSA-v5mq-3xhg-98m9","severity":"medium","message":"unstructured@0.13.7 (PyPI) is affected by GHSA-v5mq-3xhg-98m9","path":"backend/uv.lock","line":null,"fingerprint":"unstructured@0.13.7 (PyPI):GHSA-v5mq-3xhg-98m9"},{"rule_id":"osv/GHSA-gh4c-6fx4-qh6g","severity":"medium","message":"urllib3@2.6.2 (PyPI) is affected by PYSEC-2026-4176, GHSA-gh4c-6fx4-qh6g","path":"backend/uv.lock","line":null,"fingerprint":"urllib3@2.6.2 (PyPI):GHSA-gh4c-6fx4-qh6g"},{"rule_id":"osv/GHSA-597g-3phw-6986","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by PYSEC-2026-2009, GHSA-597g-3phw-6986","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-597g-3phw-6986"},{"rule_id":"osv/GHSA-9h9j-4vrj-gf7g","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by PYSEC-2026-4012, GHSA-9h9j-4vrj-gf7g","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-9h9j-4vrj-gf7g"},{"rule_id":"osv/GHSA-43mp-35q3-x3fq","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-43mp-35q3-x3fq","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-43mp-35q3-x3fq"},{"rule_id":"osv/GHSA-558c-9hv2-4prj","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-558c-9hv2-4prj","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-558c-9hv2-4prj"},{"rule_id":"osv/GHSA-cw65-gx24-rc82","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-cw65-gx24-rc82","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-cw65-gx24-rc82"},{"rule_id":"osv/GHSA-fc2g-4w5p-6whm","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-fc2g-4w5p-6whm","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-fc2g-4w5p-6whm"},{"rule_id":"osv/GHSA-hhxq-47xx-j5xx","severity":"medium","message":"virtualenv@20.35.4 (PyPI) is affected by GHSA-hhxq-47xx-j5xx","path":"backend/uv.lock","line":null,"fingerprint":"virtualenv@20.35.4 (PyPI):GHSA-hhxq-47xx-j5xx"},{"rule_id":"osv/GHSA-87hc-h4r5-73f7","severity":"medium","message":"werkzeug@3.1.4 (PyPI) is affected by PYSEC-2026-2044, GHSA-87hc-h4r5-73f7","path":"backend/uv.lock","line":null,"fingerprint":"werkzeug@3.1.4 (PyPI):GHSA-87hc-h4r5-73f7"}],"evidence":[],"data":{"ecosystems":["PyPI","npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":7.0,"findings_high":6.0,"findings_medium":1.0,"findings_low":0.0,"penalty":73.2},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-image.yml","line":26,"fingerprint":"unpinned-uses:.github/workflows/docker-image.yml:26"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-image.yml","line":29,"fingerprint":"unpinned-uses:.github/workflows/docker-image.yml:29"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-image.yml","line":32,"fingerprint":"unpinned-uses:.github/workflows/docker-image.yml:32"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-image.yml","line":36,"fingerprint":"unpinned-uses:.github/workflows/docker-image.yml:36"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-image.yml","line":44,"fingerprint":"unpinned-uses:.github/workflows/docker-image.yml:44"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-image.yml","line":53,"fingerprint":"unpinned-uses:.github/workflows/docker-image.yml:53"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/docker-image.yml","line":25,"fingerprint":"artipacked:.github/workflows/docker-image.yml:25"}],"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.075,"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":1028.0,"function_nloc":18533.0,"mean_ccn":4.32,"p90_ccn":10.0,"complex_functions":45.0,"long_functions":25.0,"many_param_functions":8.0,"risky_nloc_share":0.2913},"findings":[],"evidence":[{"kind":"complex-function","description":"run in backend/scripts/validate_zep_cloud_integration.py: complexity 65, 329 lines","ref":"backend/scripts/validate_zep_cloud_integration.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/scripts/validate_zep_cloud_integration.py#L467","weight":1.0},{"kind":"complex-function","description":"_validate_svg in scripts/star_history.py: complexity 50, 217 lines","ref":"scripts/star_history.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/scripts/star_history.py#L1070","weight":0.8333333333333334},{"kind":"complex-function","description":"_validate_and_process in backend/app/services/ontology_generator.py: complexity 40, 149 lines","ref":"backend/app/services/ontology_generator.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/ontology_generator.py#L432","weight":0.6666666666666666},{"kind":"complex-function","description":"start_simulation in backend/app/api/simulation.py: complexity 37, 211 lines","ref":"backend/app/api/simulation.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/simulation.py#L1502","weight":0.6166666666666667},{"kind":"complex-function","description":"_build_graph_impl in backend/app/api/graph.py: complexity 35, 158 lines","ref":"backend/app/api/graph.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/graph.py#L460","weight":0.5833333333333334},{"kind":"complex-function","description":"validate_state in scripts/star_history.py: complexity 35, 97 lines","ref":"scripts/star_history.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/scripts/star_history.py#L344","weight":0.5833333333333334},{"kind":"complex-function","description":"generate_report in backend/app/api/report.py: complexity 33, 190 lines","ref":"backend/app/api/report.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/report.py#L33","weight":0.55},{"kind":"complex-function","description":"_generate_section_react in backend/app/services/report_agent.py: complexity 31, 231 lines","ref":"backend/app/services/report_agent.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/report_agent.py#L1260","weight":0.5166666666666667},{"kind":"complex-function","description":"run_reddit_simulation in backend/scripts/run_parallel_simulation.py: complexity 31, 135 lines","ref":"backend/scripts/run_parallel_simulation.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/scripts/run_parallel_simulation.py#L1293","weight":0.5166666666666667},{"kind":"complex-function","description":"_enrich_action_context in backend/scripts/run_parallel_simulation.py: complexity 30, 76 lines","ref":"backend/scripts/run_parallel_simulation.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/scripts/run_parallel_simulation.py#L749","weight":0.5}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":34976.0,"duplicated_lines":5231.0,"duplicated_share":0.1496,"files":66.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/api/graph.py:137 and backend/app/api/graph.py:176","ref":"backend/app/api/graph.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/graph.py#L137","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/api/graph.py:851 and backend/app/api/report.py:375","ref":"backend/app/api/graph.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/graph.py#L851","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/api/report.py:57 and backend/app/api/simulation.py:435","ref":"backend/app/api/report.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/report.py#L57","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/api/report.py:75 and backend/app/api/report.py:638","ref":"backend/app/api/report.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/report.py#L75","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/api/simulation.py:662 and backend/app/api/simulation.py:1048","ref":"backend/app/api/simulation.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/api/simulation.py#L662","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/services/graph_builder.py:498 and backend/app/services/graph_builder.py:522","ref":"backend/app/services/graph_builder.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/graph_builder.py#L498","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/services/oasis_profile_generator.py:125 and backend/app/services/oasis_profile_generator.py:153","ref":"backend/app/services/oasis_profile_generator.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/oasis_profile_generator.py#L125","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/services/oasis_profile_generator.py:251 and backend/app/services/simulation_config_generator.py:232","ref":"backend/app/services/oasis_profile_generator.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/oasis_profile_generator.py#L251","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/services/ontology_generator.py:660 and backend/app/services/ontology_generator.py:688","ref":"backend/app/services/ontology_generator.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/ontology_generator.py#L660","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: backend/app/services/report_agent.py:178 and backend/app/services/report_agent.py:200","ref":"backend/app/services/report_agent.py","url":"https://github.com/666ghj/MiroFish/blob/7657031ac01184afe2cb220f5ee3545573b5e843/backend/app/services/report_agent.py#L178","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":69.0,"weighted_findings":88.25,"scanned_lines":46873.0,"category:best-practice":20.0,"category:correctness":34.0,"category:maintainability":15.0},"findings":[{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `health` is defined inside a function but never used","path":"backend/app/__init__.py","line":72,"fingerprint":"python.lang.maintainability.useless-inner-function:backend/app/__init__.py:72"},{"rule_id":"opengrep/python.lang.correctness.tempfile.tempfile-without-flush","severity":"high","message":"Using 'f.name' without '.flush()' or '.close()' may cause an error because the file may not exist when 'f.name' is used. Use '.flush()' or close the file before using 'f.name'.","path":"backend/app/api/report.py","line":540,"fingerprint":"python.lang.correctness.tempfile.tempfile-without-flush:backend/app/api/report.py:540"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/app/services/graph_builder.py","line":671,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/app/services/graph_builder.py:671"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/app/services/graph_builder.py","line":772,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/app/services/graph_builder.py:772"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/app/services/simulation_ipc.py","line":176,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/app/services/simulation_ipc.py:176"},{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"backend/app/services/simulation_runner.py","line":529,"fingerprint":"python.lang.best-practice.open-never-closed:backend/app/services/simulation_runner.py:529"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/app/services/simulation_runner.py","line":656,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/app/services/simulation_runner.py:656"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/app/services/zep_graph_memory_updater.py","line":442,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/app/services/zep_graph_memory_updater.py:442"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"backend/app/services/zep_graph_memory_updater.py","line":620,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/app/services/zep_graph_memory_updater.py:620"},{"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/validate_zep_cloud_integration.py","line":297,"fingerprint":"python.lang.best-practice.arbitrary-sleep:backend/scripts/validate_zep_cloud_integration.py:297"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/oasis_profile_generator.py","line":109,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/oasis_profile_generator.py:109"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/app/services/ontology_generator.py","line":391,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/app/services/ontology_generator.py:391"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/app/services/ontology_generator.py","line":395,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/app/services/ontology_generator.py:395"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/app/services/ontology_generator.py","line":405,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/app/services/ontology_generator.py:405"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_config_generator.py","line":68,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_config_generator.py:68"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_config_generator.py","line":98,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_config_generator.py:98"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_config_generator.py","line":102,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_config_generator.py:102"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_config_generator.py","line":106,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_config_generator.py:106"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_config_generator.py","line":110,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_config_generator.py:110"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_config_generator.py","line":174,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_config_generator.py:174"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_ipc.py","line":46,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_ipc.py:46"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_ipc.py","line":73,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_ipc.py:73"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_manager.py","line":74,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_manager.py:74"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_manager.py","line":75,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_manager.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/app/services/simulation_manager.py","line":471,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/simulation_manager.py:471"},{"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/app/services/simulation_manager.py","line":473,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/simulation_manager.py:473"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"backend/app/services/simulation_runner.py","line":146,"fingerprint":"python.lang.maintainability.return-not-in-function:backend/app/services/simulation_runner.py:146"},{"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/app/services/simulation_runner.py","line":450,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/simulation_runner.py:450"},{"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/app/services/zep_entity_reader.py","line":218,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/zep_entity_reader.py:218"},{"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/app/services/zep_entity_reader.py","line":421,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/zep_entity_reader.py:421"},{"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/app/services/zep_tools.py","line":539,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/zep_tools.py:539"},{"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/app/services/zep_tools.py","line":743,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/zep_tools.py:743"},{"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/app/services/zep_tools.py","line":775,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/services/zep_tools.py:775"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_expired\" a function or an attribute? If it is a function, you may have meant edge.is_expired() because edge.is_expired is always true.","path":"backend/app/services/zep_tools.py","line":1197,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/app/services/zep_tools.py:1197"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_invalid\" a function or an attribute? If it is a function, you may have meant edge.is_invalid() because edge.is_invalid is always true.","path":"backend/app/services/zep_tools.py","line":1197,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:backend/app/services/zep_tools.py:1197"},{"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/app/utils/retry.py","line":55,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/utils/retry.py:55"},{"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/app/utils/retry.py","line":108,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/utils/retry.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/app/utils/retry.py","line":179,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/utils/retry.py:179"},{"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/app/utils/retry.py","line":227,"fingerprint":"python.lang.best-practice.logging-error-without-handling:backend/app/utils/retry.py:227"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":52,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:52"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":58,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:58"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":64,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:64"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":70,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:70"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":76,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:76"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":82,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:82"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":88,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:88"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":94,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:94"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":100,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:100"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":106,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:106"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":116,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:116"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":122,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:122"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"backend/scripts/validate_zep_cloud_integration.py","line":128,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:backend/scripts/validate_zep_cloud_integration.py:128"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":983,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:983"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":990,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:990"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":993,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:993"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":996,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:996"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1000,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1000"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1002,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1002"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1004,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1004"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1007,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1007"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1013,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1013"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1019,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1019"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1022,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1022"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1024,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1024"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1026,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1026"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1028,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1028"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1030,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1030"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"scripts/star_history.py","line":1032,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:scripts/star_history.py:1032"},{"rule_id":"opengrep/python.lang.correctness.useless-eqeq","severity":"low","message":"This expression is always True: `OWNER_AVATAR_MEDIA_TYPE == OWNER_AVATAR_MEDIA_TYPE` or `OWNER_AVATAR_MEDIA_TYPE != OWNER_AVATAR_MEDIA_TYPE`. If testing for floating point NaN, use `math.isnan(OWNER_AVATAR_MEDIA_TYPE)`, or `cmath.isnan(OWNER_AVATAR_MEDIA_TYPE)` if the number is complex.","path":"scripts/star_history.py","line":1056,"fingerprint":"python.lang.correctness.useless-eqeq:scripts/star_history.py:1056"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.2052,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.2991,"test_lines":4810.0,"source_lines":46873.0,"test_ratio":0.1026,"ci_files":2.0,"cochange_share":0.0748,"cochange_commits":214.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/docker-image.yml","ref":".github/workflows/docker-image.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/update-star-history.yml","ref":".github/workflows/update-star-history.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (unittest)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["unittest"],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":140.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":0.0,"escapes":261.0,"escapes_per_kloc":10.078},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":3538.0,"other_lines":43335.0,"files_blamed":66.0,"blame_failures":0.0,"quality:ai_findings":19.0,"quality:ai_per_kloc":5.37,"quality:other_findings":50.0,"quality:other_per_kloc":1.154,"quality:ratio":4.65,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":8.0,"security:other_per_kloc":0.185,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}