{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:47:44.659410Z","repo":{"ref":{"host":"github.com","owner":"EdenLabs","name":"agentic-renderdoc"},"default_branch":"master","clone_url":"https://github.com/EdenLabs/agentic-renderdoc.git","html_url":"https://github.com/EdenLabs/agentic-renderdoc","description":"An MCP server and RenderDoc extension that allows AI agents to inspect and interact with a live captures","stars":18,"forks":7,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":147,"primary_language":"Python","license_spdx":"MIT","created_at":"2026-02-22T02:44:51Z","pushed_at":"2026-10-08T02:18:05Z","security_policy_url":null,"distribution":{"owner_created_at":"2023-09-22T00:45:23Z","owner_type":"Organization","release_assets":[]}},"commit_sha":"2abcc5530656603375fff4eef90f1ab44f113fdf","profile":{"lines_by_language":{"Python":7466},"files_by_category":{"source":19,"docs":6,"config":3,"binary":1,"test":1},"source_lines":7466,"test_lines":0},"pillars":{"ai_provenance":{"score":98.8,"confidence":0.73,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.9879,"suspected_share":0.0,"estimated_share":0.9879,"ai_artifacts":0.0,"flagged_work_units":1.0,"flagged_releases":null},"summary":"Explicit AI attribution on 99% of first-party code added; an estimated 99% including velocity signals."},"quality":{"score":40.9,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":55.1,"duplication":80.4,"lint":41.9,"testing":3.6,"docs":65.0,"type_safety":0.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 20% of function code in complex or long functions; 4% duplicated lines. Weakest area: type safety."},"security":{"score":74.9,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":81.0,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is adequate: 5 high-severity SAST findings. 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":2.0,"checked":2.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":14.0,"attributed_commits":13.0,"attributed_commit_share":0.9285714285714286,"effective_loc":8652.0,"attributed_loc":8547.0,"attributed_loc_share":0.9878640776699029,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 13 attributed commits, 8,547 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2abcc5530656603375fff4eef90f1ab44f113fdf","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/2abcc5530656603375fff4eef90f1ab44f113fdf","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"62ca9e29726d57d19d538510b9b14c67a6e2f76d","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/62ca9e29726d57d19d538510b9b14c67a6e2f76d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f0d9ba6189516a91af528e29dadb5f40c0b7055e","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/f0d9ba6189516a91af528e29dadb5f40c0b7055e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"d62de7adcd39a2b2a2ef218f478bad360dfb948c","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/d62de7adcd39a2b2a2ef218f478bad360dfb948c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3aad81b6bfaadccd42a77ed9fef868b2dad52b8d","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/3aad81b6bfaadccd42a77ed9fef868b2dad52b8d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0f92a8d1af8755a1b608e4d4f04927cfb1cabc7a","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/0f92a8d1af8755a1b608e4d4f04927cfb1cabc7a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c8f1133c9509572ad9896aa06d28b9c36ebe9253","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/c8f1133c9509572ad9896aa06d28b9c36ebe9253","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e685db8b8a52c1b3da85e03c41b1f78d05394674","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/e685db8b8a52c1b3da85e03c41b1f78d05394674","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e45db9ffb9f01fe50cc4ab21107b3642ca8df378","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/e45db9ffb9f01fe50cc4ab21107b3642ca8df378","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3a0973649518c38db772920199e176c14cd25b79","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/3a0973649518c38db772920199e176c14cd25b79","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4d64ade1344aa51bdb7e60251309e202a44ec4c7","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/4d64ade1344aa51bdb7e60251309e202a44ec4c7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5b494ccef40af8bef5b8c12f5f02e0d9a72ccfd8","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/5b494ccef40af8bef5b8c12f5f02e0d9a72ccfd8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"bd80606ab1ef0bf83bce3d45da4b487a949307d9","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/bd80606ab1ef0bf83bce3d45da4b487a949307d9","weight":0.9}],"data":{"attributed_loc_by_commit":{"bd80606ab1ef0bf83bce3d45da4b487a949307d9":523,"5b494ccef40af8bef5b8c12f5f02e0d9a72ccfd8":2843,"4d64ade1344aa51bdb7e60251309e202a44ec4c7":1516,"3a0973649518c38db772920199e176c14cd25b79":283,"e45db9ffb9f01fe50cc4ab21107b3642ca8df378":373,"e685db8b8a52c1b3da85e03c41b1f78d05394674":164,"c8f1133c9509572ad9896aa06d28b9c36ebe9253":8,"0f92a8d1af8755a1b608e4d4f04927cfb1cabc7a":201,"3aad81b6bfaadccd42a77ed9fef868b2dad52b8d":2002,"d62de7adcd39a2b2a2ef218f478bad360dfb948c":634,"f0d9ba6189516a91af528e29dadb5f40c0b7055e":0,"62ca9e29726d57d19d538510b9b14c67a6e2f76d":0,"2abcc5530656603375fff4eef90f1ab44f113fdf":0},"tools":{"claude-code":{"name":"Claude Code","commits":13,"loc":8547,"first_seen":1771728351,"last_seen":1791425884}},"monthly":{"2026-02":{"loc":4882,"attributed_loc":4882},"2026-03":{"loc":820,"attributed_loc":820},"2026-04":{"loc":2211,"attributed_loc":2211},"2026-05":{"loc":634,"attributed_loc":634},"2026-09":{"loc":105,"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-4","metrics":{"work_units":10.0,"flagged_units":1.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":5809.0,"flagged_loc":2002.0,"flagged_loc_share":0.3446376312618351,"max_loc_per_hour":500.5,"median_loc_per_hour":70.75,"pr_timed_units":2.0,"excluded_import_loc":2843.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"2,002 lines of first-party code in ~4.0h (500 lines/hour, 1 commit session)","ref":"3aad81b6bfaadccd42a77ed9fef868b2dad52b8d","url":"https://github.com/EdenLabs/agentic-renderdoc/commit/3aad81b6bfaadccd42a77ed9fef868b2dad52b8d","weight":0.15014999999999998}],"data":{"flagged_loc_by_commit":{"3aad81b6bfaadccd42a77ed9fef868b2dad52b8d":2002},"excluded_import_commits":["5b494ccef40af8bef5b8c12f5f02e0d9a72ccfd8"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":7466.0,"index":0.402,"count:narrated_steps":3.0,"per_kloc:narrated_steps":0.402,"files:narrated_steps":1.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: ask the bridge to shut down via the protocol if it's","ref":"src/server/client.py:801","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/client.py#L801","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: SIGTERM and wait briefly.","ref":"src/server/client.py:816","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/client.py#L816","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 3: SIGKILL on force or if still alive.","ref":"src/server/client.py:827","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/client.py#L827","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":8.0,"findings_high":5.0,"findings_medium":3.0,"findings_low":0.0,"weighted_findings":4.5,"scanned_lines":7466.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'check_call' 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":"package.py","line":50,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:package.py:50"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'check_call' 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/install.py","line":27,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/install.py:27"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'check_call' 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/install.py","line":41,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/install.py:41"},{"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":"src/extension/headless.py","line":210,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:src/extension/headless.py:210"},{"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":"src/server/client.py","line":704,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:src/server/client.py:704"},{"rule_id":"opengrep/python.lang.security.audit.exec-detected","severity":"medium","message":"Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources. [confidence low]","path":"src/extension/handlers.py","line":409,"fingerprint":"python.lang.security.audit.exec-detected:src/extension/handlers.py:409"},{"rule_id":"opengrep/python.lang.security.audit.eval-detected","severity":"medium","message":"Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources. [confidence low]","path":"src/extension/handlers.py","line":410,"fingerprint":"python.lang.security.audit.eval-detected:src/extension/handlers.py:410"},{"rule_id":"opengrep/python.lang.security.audit.exec-detected","severity":"medium","message":"Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources. [confidence low]","path":"src/extension/handlers.py","line":412,"fingerprint":"python.lang.security.audit.exec-detected:src/extension/handlers.py:412"}],"evidence":[],"data":{"rulesets":["python"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"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.1429,"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":258.0,"function_nloc":3804.0,"mean_ccn":4.23,"p90_ccn":11.0,"complex_functions":9.0,"long_functions":3.0,"many_param_functions":1.0,"risky_nloc_share":0.1987},"findings":[],"evidence":[{"kind":"complex-function","description":"shader_reflection in src/extension/serialize.py: complexity 34, 121 lines","ref":"src/extension/serialize.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/serialize.py#L434","weight":0.5666666666666667},{"kind":"complex-function","description":"_decode_texture in src/server/tools.py: complexity 25, 69 lines","ref":"src/server/tools.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/tools.py#L625","weight":0.4166666666666667},{"kind":"complex-function","description":"pipeline_state in src/extension/serialize.py: complexity 24, 156 lines","ref":"src/extension/serialize.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/serialize.py#L241","weight":0.4},{"kind":"complex-function","description":"main in src/extension/embedded_headless.py: complexity 21, 78 lines","ref":"src/extension/embedded_headless.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/embedded_headless.py#L58","weight":0.35},{"kind":"complex-function","description":"make_describe_draw.make_describe_draw.describe_draw._describe in src/extension/utilities.py: complexity 19, 82 lines","ref":"src/extension/utilities.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/utilities.py#L703","weight":0.31666666666666665},{"kind":"complex-function","description":"_serialize_result in src/extension/handlers.py: complexity 18, 40 lines","ref":"src/extension/handlers.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/handlers.py#L550","weight":0.3},{"kind":"complex-function","description":"_iter_candidates in src/extension/renderdoc_locate.py: complexity 18, 50 lines","ref":"src/extension/renderdoc_locate.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/renderdoc_locate.py#L144","weight":0.3},{"kind":"complex-function","description":"_replay_loop in src/extension/context.py: complexity 17, 57 lines","ref":"src/extension/context.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/context.py#L411","weight":0.2833333333333333},{"kind":"complex-function","description":"spawn_headless_worker in src/server/client.py: complexity 16, 103 lines","ref":"src/server/client.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/client.py#L588","weight":0.26666666666666666}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":5616.0,"duplicated_lines":204.0,"duplicated_share":0.0363,"files":19.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: src/extension/context.py:284 and src/extension/context.py:565","ref":"src/extension/context.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/context.py#L284","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/extension/headless.py:278 and src/server/client.py:932","ref":"src/extension/headless.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/headless.py#L278","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/extension/serialize.py:252 and src/extension/utilities.py:712","ref":"src/extension/serialize.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/serialize.py#L252","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/extension/serialize.py:463 and src/extension/serialize.py:481","ref":"src/extension/serialize.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/serialize.py#L463","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/extension/utilities.py:600 and src/extension/utilities.py:652","ref":"src/extension/utilities.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/extension/utilities.py#L600","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/server/client.py:462 and src/server/client.py:503","ref":"src/server/client.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/client.py#L462","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/server/tools.py:899 and src/server/tools.py:912","ref":"src/server/tools.py","url":"https://github.com/EdenLabs/agentic-renderdoc/blob/2abcc5530656603375fff4eef90f1ab44f113fdf/src/server/tools.py#L899","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":16.0,"weighted_findings":26.0,"scanned_lines":7466.0,"category:best-practice":5.0,"category:correctness":5.0,"category:maintainability":6.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"package.py","line":33,"fingerprint":"python.lang.best-practice.arbitrary-sleep:package.py:33"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"src/extension/embedded_headless.py","line":139,"fingerprint":"python.lang.best-practice.arbitrary-sleep:src/extension/embedded_headless.py:139"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"src/extension/headless.py","line":272,"fingerprint":"python.lang.best-practice.arbitrary-sleep:src/extension/headless.py:272"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"src/extension/headless.py","line":320,"fingerprint":"python.lang.best-practice.arbitrary-sleep:src/extension/headless.py:320"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"src/server/client.py","line":911,"fingerprint":"python.lang.best-practice.arbitrary-sleep:src/server/client.py:911"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_spawned\" a function or an attribute? If it is a function, you may have meant e.is_spawned() because e.is_spawned is always true.","path":"src/server/client.py","line":88,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:src/server/client.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":"src/server/client.py","line":90,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:src/server/client.py:90"},{"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":"src/server/client.py","line":93,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:src/server/client.py:93"},{"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":"src/server/client.py","line":99,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:src/server/client.py:99"},{"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":"src/server/client.py","line":101,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:src/server/client.py:101"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_spawned\" a function or an attribute? If it is a function, you may have meant e.is_spawned() because e.is_spawned is always true.","path":"src/server/client.py","line":112,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:src/server/client.py:112"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_spawned\" a function or an attribute? If it is a function, you may have meant e.is_spawned() because e.is_spawned is always true.","path":"src/server/client.py","line":121,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:src/server/client.py:121"},{"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":"src/server/client.py","line":123,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:src/server/client.py:123"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_spawned\" a function or an attribute? If it is a function, you may have meant e.is_spawned() because e.is_spawned is always true.","path":"src/server/client.py","line":140,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:src/server/client.py:140"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_spawned\" a function or an attribute? If it is a function, you may have meant self.is_spawned() because self.is_spawned is always true.","path":"src/server/client.py","line":213,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:src/server/client.py:213"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_spawned\" a function or an attribute? If it is a function, you may have meant self.is_spawned() because self.is_spawned is always true.","path":"src/server/client.py","line":235,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:src/server/client.py:235"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.3636,"test_lines":0.0,"source_lines":7466.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0909,"cochange_commits":11.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":127.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":147.0,"escapes_per_kloc":19.689},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":7362.0,"other_lines":104.0,"files_blamed":19.0,"blame_failures":0.0,"quality:ai_findings":16.0,"quality:ai_per_kloc":2.173,"quality:other_findings":0.0,"quality:other_per_kloc":0.0,"security:ai_findings":8.0,"security:ai_per_kloc":1.087,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":["unreviewed-ai-risk"]}