AI Slop Code RIsk Monitor

gptme/gptme

Your agent in your terminal, equipped with local tools: writes code, uses the terminal, browses the web. Make your own persistent autonomous agent on top!

36.2 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for gptme/gptme, a Python project with 4,447 GitHub stars. SynthScan examined 575,344 lines of code across 1567 source files, recording 16362 pattern matches distributed across 28 syntactic categories. The legacy adjusted pattern signal is 36.2 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

36.2
Adjusted Signal
36.2
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
4.4K
Stars
Python
Language
575.3K
Lines of Code
1.6K
Files
16.4K
Pattern Hits
2026-10-12
Scan Date
0.27
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 63.4/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 12512 finding(s).

Hallucinated Dependency & Supply Chain Risk 11.8/100 · LOW

Are imports declared and package/API names verified? 979 finding(s).

Agent Over-Engineering Ratio 77.8/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 14124 finding(s).

PR Review Velocity Impact 85.6/100 · CRITICAL

Which changes need focused human review? 16362 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 418MEDIUM 1923LOW 14020

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 16362 distinct pattern matches across 28 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers11222 hits · 9471 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_server_path_traversal.py50 def test_events_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py55 def test_step_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py63 def test_tool_confirm_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py71 def test_rerun_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py76 def test_elicit_respond_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py84 def test_interrupt_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py96 def test_browse_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py101 def test_upload_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py106 def test_file_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py112 def test_preview_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py120 def test_download_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOW⚡tests/test_server_path_traversal.py285 def test_user_avatar_rejects_non_image_extension(CODE
LOW⚡tests/test_server_path_traversal.py303 def test_user_avatar_accepts_image_extension(CODE
LOW⚡tests/test_server_path_traversal.py335 def test_agent_avatar_by_path_rejects_non_image_extension(CODE
LOW⚡tests/test_server_path_traversal.py385 def test_conversation_agent_avatar_rejects_non_image_extension(CODE
LOWtests/test_server_path_traversal.py38def _assert_traversal_rejected(response):CODE
LOWtests/test_server_path_traversal.py132 def test_post_message_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py170 def test_rejects_traversal_in_files(CODE
LOWtests/test_server_path_traversal.py183 def test_safe_relative_path_not_rejected_as_traversal(CODE
LOWtests/test_server_path_traversal.py220 def test_name_with_dots_no_traversal(self, client: FlaskClient):CODE
LOWtests/test_server_path_traversal.py254 def test_generate_rejects_branch_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py266 def test_valid_branch_accepted(self, client: FlaskClient):CODE
LOWtests/test_server_path_traversal.py319 def test_user_avatar_rejects_dotfile_without_image_ext(CODE
LOWtests/test_server_path_traversal.py361 def test_agent_avatar_by_path_accepts_image_extension(CODE
LOWtests/test_server_path_traversal.py427 def test_user_avatar_rejects_disguised_non_image(CODE
LOWtests/test_server_path_traversal.py470 def test_rejects_absolute_path_outside_cwd(CODE
LOWtests/test_server_path_traversal.py484 def test_rejects_home_directory_path(CODE
LOWtests/test_server_path_traversal.py498 def test_rejects_traversal_in_path(CODE
LOWtests/test_server_path_traversal.py525 def test_rejects_non_object_json_body(self, client: FlaskClient, body: object):CODE
LOWtests/test_server_path_traversal.py537 def test_rejects_name_that_slugifies_to_empty(CODE
LOWtests/test_server_path_traversal.py611 def test_whitespace_only_id_rejected_unit(self):CODE
LOWtests/test_server_path_traversal.py626 def test_control_or_edge_whitespace_id_rejected_unit(self, bad_id: str):CODE
LOWtests/test_server_path_traversal.py638 def test_multibyte_over_limit_rejected(self):CODE
LOWtests/test_server_path_traversal.py661 def test_too_long_branch_unit(self):CODE
LOWtests/test_server_path_traversal.py696 def test_multibyte_branch_over_limit_rejected(self):CODE
LOWtests/test_server_path_traversal.py716 def test_too_long_branch_via_endpoint(self, client: FlaskClient):CODE
LOWtests/test_server_path_traversal.py738 def test_rejects_traversal_payloads(self):CODE
LOWtests/test_server_path_traversal.py772 def test_rejects_non_string_branch(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py41 def test_matches_simple_at_ref(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py44 def test_matches_hyphenated_name(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py47 def test_matches_multiple_refs(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py53 def test_no_false_positive_on_email_address(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py64 def test_no_messages_yields_nothing(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py68 def test_no_at_ref_yields_nothing(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py73 def test_at_ref_matches_server_yields_hint(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py85 def test_at_ref_no_matching_server_yields_nothing(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py90 def test_no_loaded_servers_yields_nothing(self):CODE
LOW⚡tests/test_hooks_mcp_namespace_hint.py96 def test_multiple_servers_in_one_message(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py109 def test_only_last_user_message_checked(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py120 def test_tool_without_description(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py136 def test_hint_format_contains_full_tool_name(self):CODE
LOWtests/test_commands_llm.py24def test_cmd_model_appends_replacement_prompt_and_persists_generation(tmp_path: Path):CODE
LOWtests/test_commands_llm.py54def test_cmd_tools_load_appends_replacement_prompt(tmp_path: Path):CODE
LOWtests/test_commands_llm.py80def test_cmd_context_reports_context_savings(tmp_path: Path):CODE
LOWtests/test_commands_llm.py105def test_commands_refresh_runtime_fragments_from_live_config(CODE
LOWtests/test_shell_issue729.py26def test_stderr_redirect_with_pipe(shell):CODE
LOWtests/test_shell_issue729.py49def test_jq_complex_syntax_nested_pipe(shell):CODE
LOWtests/test_shell_issue729.py87def test_jq_function_in_filter(shell):CODE
LOWtests/test_shell_issue729.py118def test_stdout_and_stderr_redirect(shell):CODE
LOWtests/test_session_allowlist_isolation.py30def test_reset_fixture_is_autouse(request: pytest.FixtureRequest) -> None:CODE
11162 more matches not shown…
Decorative Section Separators1606 hits · 5632 pts
SeverityFileLineSnippetContext
MEDIUMtauri/src-tauri/src/lan_access.rs84// ── platform-specific helpers ──────────────────────────────────────────────COMMENT
MEDIUMtauri/src-tauri/src/lan_access.rs113// ── Sidecar rebinding (desktop) ────────────────────────────────────────────COMMENT
MEDIUMtauri/src-tauri/src/lan_access.rs358// ── Tauri commands ─────────────────────────────────────────────────────────COMMENT
MEDIUMtauri/src-tauri/src/lan_access.rs487// ── tests ──────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_hooks_mcp_namespace_hint.py35# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_hooks_mcp_namespace_hint.py37# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_hooks_mcp_namespace_hint.py58# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_hooks_mcp_namespace_hint.py60# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py32# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py34# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py70# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py72# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py114# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py116# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py160# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py162# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py182# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_config_trust.py184# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_shell_max_output_bytes.py23# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_shell_max_output_bytes.py25# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_shell_max_output_bytes.py74# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_shell_max_output_bytes.py76# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_shell_max_output_bytes.py113# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_shell_max_output_bytes.py115# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_computer_api.py348# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_computer_api.py350# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py119# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py121# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py181# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py183# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py213# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py215# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py297# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py299# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_mcp_adapter.py801# ============================================================================COMMENT
MEDIUMtests/test_mcp_adapter.py803# ============================================================================COMMENT
MEDIUMtests/test_codeblock.py900 # ── Exec lang (shell) ──────────────────────────────────────────────────COMMENT
MEDIUMtests/test_codeblock.py933 # ── Non-exec lang (text) ───────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py42# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py44# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py67# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py69# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py93# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py95# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py651# ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_lessons.py653# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py137# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py139# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py161# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py163# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py202# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py204# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py404# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py406# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py491# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py493# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py777# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py779# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py814# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py816# ──────────────────────────────────────────────COMMENT
1546 more matches not shown…
Empty Error Handlers227 hits · 1135 pts
SeverityFileLineSnippetContext
HIGHtests/test_mcp_adapter.py816except ImportError:CODE
HIGHtests/test_eval_behavioral_solutions.py1374except OSError:CODE
HIGHtests/conftest.py644except (ImportError, AttributeError):CODE
HIGHtests/conftest.py314except Exception:CODE
HIGHtests/conftest.py528except ImportError:CODE
HIGHtests/conftest.py537except ImportError:CODE
HIGHtests/conftest.py711except (subprocess.TimeoutExpired, FileNotFoundError):CODE
HIGHtests/test_pdf_to_images.py44except FileNotFoundError:CODE
HIGHtests/test_circuit_breaker.py414except Exception:CODE
HIGHtests/test_llm_anthropic.py525except Exception:CODE
HIGHtests/test_shell_background.py268except ProcessLookupError:CODE
HIGHtests/test_shell_background.py288except ProcessLookupError:CODE
HIGHtests/test_shell_background.py416except OSError:CODE
HIGHtests/test_tools_watch.py410except OSError:CODE
HIGHtests/test_tools_watch.py795except OSError:CODE
HIGHtests/test_tools_watch.py840except OSError:CODE
HIGHtests/test_computer_use_integration.py184except Exception:CODE
HIGHtests/test_computer_milestone_integration.py81except Exception:CODE
HIGHtests/test_sandbox.py734except RuntimeError:CODE
HIGHtests/test_computer_docker_config.py156except ImportError:CODE
HIGHtests/test_shell_high_fd.py75except OSError:CODE
HIGHtests/test_mcp.py338except RuntimeError:CODE
HIGHtests/test_shell_sigterm.py155except ProcessLookupError:CODE
HIGHtests/test_eval.py721except OSError:CODE
HIGHscripts/check_model_freshness.py166except ValueError:CODE
HIGHscripts/treeofthoughts.py92except ValueError:CODE
HIGHscripts/generate_sounds.py406except OSError:CODE
HIGHscripts/demo_capture.py380except Exception:CODE
HIGHscripts/demo_capture.py423except Exception:CODE
HIGHgptme/dirs.py165except (subprocess.TimeoutExpired, FileNotFoundError):CODE
HIGHgptme/dirs.py162except (subprocess.TimeoutExpired, FileNotFoundError):CODE
HIGHgptme/checkpoint.py294except (json.JSONDecodeError, OSError):CODE
HIGHgptme/constants.py49except (ColorParseError, ValueError, KeyError):CODE
HIGHgptme/telemetry.py104except ImportError:CODE
HIGHgptme/__version__.py47except (CODE
HIGHgptme/__version__.py81except (KeyError, AttributeError, TypeError, ValueError, FileNotFoundError):CODE
HIGHgptme/__version__.py98except Exception:CODE
HIGHgptme/init.py566except ImportError:CODE
HIGHgptme/info.py172except Exception:CODE
HIGHgptme/info.py278except (FileNotFoundError, OSError, json.JSONDecodeError, KeyError):CODE
HIGHgptme/knowledge.py157except json.JSONDecodeError:CODE
HIGHgptme/knowledge.py407except OSError:CODE
HIGHgptme/workspace_snapshot.py203except ValueError:CODE
HIGHgptme/workspace_snapshot.py270except ValueError:CODE
HIGHgptme/tools/save.py229except Exception:CODE
HIGHgptme/tools/shell_validation.py957except OSError:CODE
HIGHgptme/tools/computer_transport.py102except (NotImplementedError, AttributeError):CODE
HIGHgptme/tools/computer_transport.py460except Exception:CODE
HIGHgptme/tools/vision.py24except OSError:CODE
HIGHgptme/tools/mcp_adapter.py1195except (json.JSONDecodeError, TypeError):CODE
HIGHgptme/tools/convert.py760except Exception:CODE
HIGHgptme/tools/_browser_playwright.py843except PlaywrightTimeoutError:CODE
HIGHgptme/tools/_browser_playwright.py933except PlaywrightTimeoutError:CODE
HIGHgptme/tools/_browser_playwright.py64except Exception:CODE
HIGHgptme/tools/_browser_playwright.py308except Exception:CODE
HIGHgptme/tools/_browser_playwright.py340except Exception:CODE
HIGHgptme/tools/_browser_playwright.py589except Exception:CODE
HIGHgptme/tools/_browser_playwright.py595except Exception:CODE
HIGHgptme/tools/_browser_playwright.py69except Exception:CODE
HIGHgptme/tools/_browser_playwright.py764except Exception:CODE
167 more matches not shown…
Cross-Language Confusion130 hits · 708 pts
SeverityFileLineSnippetContext
HIGHtests/test_shell_issue729.py41. File descriptor redirects (2>/dev/null, 2>&1, etc.)STRING
HIGHtests/test_config_trust.py210 """EOF on input (e.g. piped /dev/null) defaults to deny."""STRING
HIGH⚡tests/test_codeblock.py775pwd && ls -laCODE
HIGH⚡tests/test_codeblock.py781 assert codeblocks[0] == Codeblock("shell", "pwd && ls -la")CODE
HIGHtests/test_shell_output_mixing_issue408.py106 ret1, out1, err1 = shell.run("sleep 0.1 && echo 'delayed output'")CODE
HIGHtests/test_server_client.py74 b'data: {"type": "connected", "session_id": null}'CODE
HIGHtests/test_shell_foreground_promotion.py385 "touch ran && output 1",CODE
HIGHtests/test_shell_foreground_promotion.py479 ("timeout 10m a && b", None),CODE
HIGHtests/test_shell_issue772.py52. Combinations of || with pipe operators (|)STRING
HIGH⚡tests/test_shell_issue772.py27 Issue: cat .env.local 2>/dev/null || cat .env.example | head -20STRING
HIGH⚡tests/test_shell_issue772.py31 The shell tool was treating the first | in || as a pipe operator,STRING
HIGH⚡tests/test_shell_issue772.py40 code = f"cat /nonexistent 2>/dev/null || cat {temp_file} | head -3"CODE
HIGH⚡tests/test_shell_issue772.py62 Verify that || operator works correctly in basic cases.STRING
HIGH⚡tests/test_shell_issue772.py64 code = "false || echo 'fallback'"CODE
HIGHtests/test_shell_issue772.py85 code = f"cat /nonexistent 2>/dev/null || cat {temp_file}"CODE
HIGH⚡tests/test_shell_issue772.py102 """Test multiple || operators in sequence.STRING
HIGH⚡tests/test_shell_issue772.py104 Verify that chains of || operators are handled correctly.STRING
HIGH⚡tests/test_shell_issue772.py106 code = "false || false || echo 'third try'"CODE
HIGH⚡tests/test_shell_issue772.py115 """Test combination of || and && operators.STRING
HIGH⚡tests/test_shell_issue772.py115 """Test combination of || and && operators.STRING
HIGH⚡tests/test_shell_issue772.py119 code = "true && echo 'success' || echo 'failure'"CODE
HIGH⚡tests/test_shell_issue772.py133 cat file1 2>/dev/null || cat file2 | head -20STRING
HIGH⚡tests/test_shell_issue772.py136 - stderr redirect (2>/dev/null)STRING
HIGHtests/test_shell_issue772.py147 code = f"cat /nonexistent 2>/dev/null || cat {temp_file} | head -5"CODE
HIGHtests/test_message.py394 command = 'pwd && echo "done"'CODE
HIGHtests/test_execenv.py411 env.run("cat input.txt > output.txt && echo ' modified' >> output.txt")CODE
HIGHtests/test_tools_watch.py572 ("sleep 1m && make test", "make test"),CODE
HIGHtests/test_chats_external_search.py509 ("b-null-messages", '{"messages": null}'),CODE
HIGHtests/test_chats_external_search.py452 """Valid JSON that is not an object (list, string, null) is skipped per line."""STRING
HIGHtests/test_logmanager_corrupt_lines.py28 b'{"role": "assistant", "content": null}\n',CODE
HIGH⚡tests/test_tools_shell_multiline.py13 gh pr checks "$pr" --json name,conclusion,workflowName --jq '.[] | select(.conclusion != null) | "\\(.workflowName): \CODE
HIGH⚡tests/test_tools_shell_validation.py209 assert _find_first_unquoted_pipe("cmd1 || cmd2") is NoneCODE
HIGH⚡tests/test_tools_shell_validation.py212 result = _find_first_unquoted_pipe("cmd1 || cmd2 | cmd3")CODE
HIGH⚡tests/test_tools_shell_validation.py215 cmd = "cmd1 || cmd2 | cmd3"CODE
HIGH⚡tests/test_tools_shell_validation.py1440 assert is_allowlisted("ls -la && pwd")CODE
HIGHtests/test_sandbox.py1020 # (suppressed with 2>/dev/null) so pre-existing lower hard limits areCOMMENT
HIGHtests/test_sandbox.py1031 # Hard limit is best-effort (2>/dev/null) so a pre-existing lowerCOMMENT
HIGHtests/test_cli_hooks_settings_shape.py19 b'{"hooks": {"PreToolUse": [{"hooks": [{"command": null}]}]}}',CODE
HIGH⚡tests/test_shell_parser.py124 ("echo a && echo b", "echo a && echo b"),CODE
HIGH⚡tests/test_util_review.py1523 self._review_jsonl('```json\n{"findings": null}\n```')CODE
HIGH⚡tests/test_util_review.py1518 """When findings key is not a list (null, int, dict), the block is skipped."""STRING
HIGHtests/test_util_review.py363 """Non-list findings value (null, int, dict) must not crash from_dict."""STRING
HIGH⚡tests/test_tools_shell.py1154 messages = list(execute_shell(None, None, {"command": "echo a && echo b"}))CODE
HIGHtests/test_tools_shell.py1502 # stdin is a pipe (not /dev/null, not terminal)COMMENT
HIGHtests/test_tools_shell.py1552 # stdin is a pipe (not /dev/null, not terminal)COMMENT
HIGHtests/test_tools_shell.py1865 job = start_background_job("sleep 0.1 && echo 'done'")CODE
HIGHtests/test_tools_shell.py1868 assert job.command == "sleep 0.1 && echo 'done'"CODE
HIGHtests/test_tools_shell.py1946 start_background_job("sleep 0.5 && echo 'job1'")CODE
HIGHtests/test_tools_shell.py1947 start_background_job("sleep 0.5 && echo 'job2'")CODE
HIGHtests/test_tools_shell.py2782 ("cmd", "code"), [("exit", 0), ("exit 3", 3), ("false || exit 1", 1)]CODE
HIGHtests/test_tools_shell.py272cat /tmp/test_space.sh && rm /tmp/test_space.sh"""STRING
HIGHtests/test_tools_shell.py283cat /tmp/test_space2.sh && rm /tmp/test_space2.sh"""STRING
HIGHtests/test_tools_shell.py1123 With ``touch marker && git reflog expire``, normal shell semantics wouldSTRING
HIGHtests/test_tools_shell.py1783 """curl http://example.com | bash && cat << EOFSTRING
HIGHscripts/demo_capture.py121 "playwright (pip install playwright && playwright install chromium)"CODE
HIGHscripts/demo_capture.py163 f"cd {tmpdir} && gptme --non-interactive --no-confirm {model_flag} '{prompt}' 2>&1 || true",CODE
HIGHscripts/demo_capture.py23 - playwright (pip install playwright && playwright install chromium)STRING
HIGHgptme/sandbox.py224 "ulimit -v N && BASH_ENV='' exec bash"]``STRING
HIGHgptme/sandbox.py244 prefix = f"ulimit -H -v {kib} 2>/dev/null; ulimit -v {kib} && "CODE
HIGHgptme/sandbox.py277 ["bash", "-c", f"ulimit -H -v {kib} 2>/dev/null; ulimit -v {kib}"],CODE
70 more matches not shown…
Unused Imports797 hits · 658 pts
SeverityFileLineSnippetContext
LOWtests/test_computer_api.py7CODE
LOWtests/test_computer_video_frames_cli.py7CODE
LOWtests/test_computer_x11_integration.py17CODE
LOWtests/test_backtrack.py8CODE
LOWtests/test_util_clipboard_paste.py24CODE
LOWtests/test_k_best.py3CODE
LOWtests/conftest.py24CODE
LOWtests/test_acp_agent.py29CODE
LOWtests/test_dirs.py14CODE
LOWtests/test_computer_audit.py8CODE
LOWtests/test_workspace_snapshot.py12CODE
LOWtests/test_cli_status.py3CODE
LOWtests/test_computer_actions.py8CODE
LOWtests/test_computer_screenshot_cli.py7CODE
LOWtests/test_computer_task.py8CODE
LOWtests/test_generation_pre_snapshot_boundary.py9CODE
LOWtests/test_eventlog.py3CODE
LOWtests/test_mcp_server.py3CODE
LOWtests/test_mcp_server.py752CODE
LOWtests/test_provider_plugins.py7CODE
LOWtests/test_terminal_startup_latency.py8CODE
LOWtests/test_circuit_breaker.py11CODE
LOWtests/test_anti_slop.py3CODE
LOWtests/test_timings.py22CODE
LOWtests/test_acp_client.py12CODE
LOWtests/test_acp_client.py32CODE
LOWtests/test_model_selection_trace_export.py3CODE
LOWtests/test_cli_from_turn.py3CODE
LOWtests/test_tools_hashline_edit.py3CODE
LOWtests/test_computer_record.py8CODE
LOWtests/test_local_discovery.py7CODE
LOWtests/test_tasks_api.py18CODE
LOWtests/test_context_providers.py10CODE
LOWtests/test_execute_msg_hook_call_id.py17CODE
LOWtests/test_computer_doctor_cmd.py7CODE
LOWtests/test_acp_session_runtime.py3CODE
LOWtests/test_cmd_service.py7CODE
LOWtests/test_util_hooks.py3CODE
LOWtests/test_tools_request_tool_change.py3CODE
LOWtests/test_computer_demo_cmd.py8CODE
LOWtests/test_gptme_provider.py8CODE
LOWtests/test_acp_protocol_logging.py7CODE
LOWtests/test_github_ci_self_heal.py1CODE
LOWtests/test_browser_state.py3CODE
LOWtests/test_computer_run_task_cli.py8CODE
LOWtests/test_browser_blockage.py18CODE
LOWtests/test_snapshot_command.py3CODE
LOWtests/test_snapshot_command.py14CODE
LOWtests/test_treeofthoughts.py8CODE
LOWtests/test_tools_convert.py3CODE
LOWtests/test_agent_fork_command.py8CODE
LOWtests/test_computer_gate.py11CODE
LOWtests/test_computer_use_integration.py18CODE
LOWtests/test_chat.py2097CODE
LOWtests/test_computer_milestone_integration.py23CODE
LOWtests/test_util_cli_review_watch.py3CODE
LOWtests/test_computer_docker_config.py15CODE
LOWtests/test_skill_commands.py184CODE
LOWtests/test_acp_e2e_smoke.py13CODE
LOWtests/test_memory_store.py1136CODE
737 more matches not shown…
Excessive Try-Catch Wrapping681 hits · 655 pts
SeverityFileLineSnippetContext
LOWtests/test_eval_behavioral_solutions.py925 except Exception:STRING
LOWtests/test_eval_behavioral_solutions.py1435 except Exception as e:STRING
LOWtests/conftest.py143 except Exception:CODE
LOWtests/conftest.py314 except Exception:CODE
LOWtests/conftest.py477 except Exception as e:CODE
LOWtests/conftest.py539 except Exception as e:CODE
LOWtests/conftest.py587 except Exception:CODE
LOWtests/conftest.py885 except Exception as e:CODE
LOWtests/test_acp_agent.py416 except Exception as e:CODE
LOWtests/test_chat_history.py69 except Exception as e:CODE
MEDIUMtests/test_chat_history.py70 print(f"Error generating chat history: {e}")CODE
MEDIUMtests/test_circuit_breaker.py345def do_fail():CODE
MEDIUMtests/test_circuit_breaker.py371def do_fail():CODE
LOW⚡tests/test_circuit_breaker.py348 except Exception as e:CODE
LOWtests/test_circuit_breaker.py414 except Exception:CODE
LOWtests/test_hooks_server_confirm.py211 except Exception as e:CODE
LOWtests/test_hooks_server_confirm.py219 except Exception as e:CODE
MEDIUMtests/test_hooks_server_confirm.py204def register_and_wait(tool_id):CODE
LOWtests/test_llm_anthropic.py525 except Exception:CODE
MEDIUMtests/test_subagent_unit.py6273def thread_target():CODE
LOWtests/test_subagent_unit.py6285 except Exception as e:CODE
MEDIUMtests/test_eval_behavioral.py1022 print(f"Error: negative value {value}")CODE
MEDIUMtests/test_eval_behavioral.py1028 print(f"Error: {e}")CODE
MEDIUMtests/test_eval_behavioral.py984def process_record(record):CODE
LOW⚡tests/test_eval_behavioral.py1680 except Exception:CODE
LOWtests/test_eval_behavioral.py2949 except Exception as err:STRING
LOW⚡tests/test_mcp_discovery.py167 except Exception as e:CODE
MEDIUMtests/test_computer_use_integration.py37def _playwright_available() -> bool:CODE
LOW⚡tests/test_computer_use_integration.py184 except Exception:CODE
LOWtests/test_computer_use_integration.py61 except Exception:CODE
MEDIUMtests/test_computer_milestone_integration.py34def _playwright_available() -> bool:CODE
LOW⚡tests/test_computer_milestone_integration.py81 except Exception:CODE
LOWtests/test_computer_milestone_integration.py54 except Exception:CODE
LOWtests/test_memory_store.py63 except Exception as exc:CODE
LOWtests/test_memory_store.py77 except Exception as exc:CODE
LOW⚡tests/test_server_bad_input.py357 except Exception:CODE
LOWtests/test_llm_openai.py697 except Exception:CODE
LOWtests/test_tools_subagent.py1317 except Exception:CODE
LOWtests/test_tools_subagent.py1366 except Exception:CODE
LOWtests/test_server_session_models.py849 except Exception as e:CODE
LOWtests/test_server_session_models.py858 except Exception as e:CODE
LOWtests/test_server_session_models.py891 except Exception as e:CODE
LOWtests/test_server_session_models.py899 except Exception as e:CODE
LOWtests/test_oauth_openrouter.py88 except Exception as e:CODE
MEDIUMtests/test_oauth_openrouter.py81def target() -> None:CODE
MEDIUMtests/test_hooks_registry.py945def registerer():CODE
MEDIUMtests/test_hooks_registry.py954def unregisterer():CODE
LOWtests/test_hooks_registry.py951 except Exception as e:CODE
LOWtests/test_hooks_registry.py958 except Exception as e:CODE
LOWtests/test_url_safety.py156 except Exception as e:CODE
LOWtests/test_tui.py590 except Exception as e:CODE
MEDIUMscripts/auto_rename_logs.py44 print(f"Error: Logs directory not found: {logs_dir}")CODE
LOWscripts/auto_rename_logs.py142 except Exception as e:CODE
MEDIUMscripts/auto_rename_logs.py143 print(f"Error processing {conv_dir}: {e}")CODE
LOWscripts/treeofthoughts.py285 except Exception:CODE
MEDIUMscripts/treeofthoughts.py454 print(f"Error: workspace {workspace} is not a directory", file=sys.stderr)CODE
LOW⚡scripts/eval_phase0_pruning.py266 except Exception as exc:CODE
LOWscripts/eval_phase0_pruning.py291 except Exception as exc:CODE
LOWscripts/eval_phase0_pruning.py347 except Exception as exc:CODE
MEDIUMscripts/github_bot.py72 print(f"Error: {name} environment variable is required", file=sys.stderr)CODE
621 more matches not shown…
Self-Referential Comments179 hits · 556 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_server_path_traversal.py400 # Create the logdir and a valid conversation log so theCOMMENT
MEDIUMtests/test_shell_issue729.py58 # Create a test JSON fileCOMMENT
MEDIUMtests/test_cost_awareness_delayed_warning.py72 # Create a messages list with a user messageCOMMENT
MEDIUMtests/test_cost_awareness_delayed_warning.py97 # Create a messages list with an assistant messageCOMMENT
MEDIUMtests/test_eval_behavioral_solutions.py205 # Create the shared validation moduleSTRING
MEDIUMtests/test_replay.py293 # Create a working context that's nearly full (simulated)COMMENT
MEDIUMtests/test_utils.py16 # Create a test image file that is 0.8MB raw (within 1MB limit)COMMENT
MEDIUMtests/test_utils.py53 # Create a file that is 1.2MB (exceeds 1MB limit)COMMENT
MEDIUMtests/conftest.py620 # Create a temporary file with the given contentCOMMENT
MEDIUMtests/test_acp_agent.py1070 # Create a fake log directory with a conversation.jsonlCOMMENT
MEDIUMtests/test_acp_agent.py2000 # Create a minimal log dir so new_session can resume from diskCOMMENT
MEDIUMtests/test_tools_chats.py13 # Create a test conversation containing "python"COMMENT
MEDIUMtests/test_server_v2.py2351 # Create a conversation with a non-test prefix so it isn't filtered outCOMMENT
MEDIUMtests/test_server_v2.py2384 # Create a real conversation with a non-test prefix so it isn't filteredCOMMENT
MEDIUMtests/test_util_cli_skills.py174 # Create a skill so the index isn't empty (tests the "not found" path, not "empty index")COMMENT
MEDIUMtests/test_util_cli_skills.py363 # Create a skill where metadata.name differs from the H1 titleCOMMENT
MEDIUM⚡tests/test_demo_capture.py48 # Create a fake fileCOMMENT
MEDIUMtests/test_agent.py451 # Create a plist fileCOMMENT
MEDIUMtests/test_agent.py771 # Create a fake workspaceCOMMENT
MEDIUMtests/test_agent.py991 # Create a repo with multiple commitsCOMMENT
MEDIUM⚡tests/test_tools_save.py137 # Create a directory outside the cwdCOMMENT
MEDIUM⚡tests/test_tools_save.py146 # Create a symlink in work_dir pointing to outside_dirCOMMENT
MEDIUMtests/test_tools_save.py115 # Create a subdirectory to work fromCOMMENT
MEDIUMtests/test_tools_save.py193 # Create a symlink in work_dir pointing to outside_dirCOMMENT
MEDIUM⚡tests/test_misc_subprocess_timeouts.py198 # Create a file so glob has something to findCOMMENT
MEDIUMtests/test_llm_utils.py366 # Create a file with a tilde path won't work in CI, but we can testCOMMENT
MEDIUMtests/test_tool_use.py239 "import numpy as np\nimport pandas as pd\n\n# Create a simple dataset\n"CODE
MEDIUM⚡tests/test_chat_history.py30 # Create a few mock conversationsCOMMENT
MEDIUMtests/test_plugins.py463 # Create a hook module with register() functionCOMMENT
MEDIUMtests/test_agent_service_timeouts.py100 # Create a temp file to simulate a log fileCOMMENT
MEDIUMtests/test_util_gh_mocked.py587 # Create a body that exceeds 1000 tokens (4000 chars)COMMENT
MEDIUMtests/test_util_gh_mocked.py616 # Create a body with identifiable start and endCOMMENT
MEDIUMtests/test_util_gh_mocked.py665 # Create a mock response with a very long review commentCOMMENT
MEDIUMtests/test_util_gh_mocked.py720 # Create a long comment with a suggestion in the middle (where truncation would remove it)COMMENT
MEDIUMtests/test_util_gh_mocked.py842 # Create a diff larger than default budget (4000 tokens = 16000 chars)COMMENT
MEDIUMtests/test_custom_providers.py260 # Create a minimal tool specCOMMENT
MEDIUMtests/test_prompt.py123 # Create a symlinkCOMMENT
MEDIUMtests/test_prompt.py148 # Create a new file in tmp_pathCOMMENT
MEDIUM⚡tests/test_util_safety.py202 # Create a report with artificially high-risk segmentsCOMMENT
MEDIUM⚡tests/test_message.py461 # Create a test file in tmp_pathCOMMENT
MEDIUM⚡tests/test_message.py749 # Create a message - role with special chars is unusual but should be safeCOMMENT
MEDIUMtests/test_llm_anthropic.py484 # Create a mock that looks like an Anthropic API 500 errorCOMMENT
MEDIUM⚡tests/test_prompt_skills_summary.py17 # Create a mock skill fileCOMMENT
MEDIUMtests/test_prompt_skills_summary.py56 # Create a mock skill file with long descriptionCOMMENT
MEDIUM⚡tests/test_prompts.py214 # Create a temp workspace with a fileCOMMENT
MEDIUM⚡tests/test_prompts.py219 # Create a file outside workspaceCOMMENT
MEDIUM⚡tests/test_prompts.py224 # Create a gptme.toml with path traversal attemptCOMMENT
MEDIUMtests/test_prompts.py760 # Create a test profileCOMMENT
MEDIUMtests/test_prompts.py825 # Create a test profileCOMMENT
MEDIUMtests/test_execenv.py237 # Create a mock log fileCOMMENT
MEDIUM⚡tests/test_tasks_api.py1023 # Create a temp task fileCOMMENT
MEDIUMtests/test_tasks_api.py219 # Create a fake repo subdir with .gitCOMMENT
MEDIUM⚡tests/test_context_providers.py289 # Create a provider class with a specific name for testingCOMMENT
MEDIUMtests/test_tools_browser.py456 # Create a minimal mock for pypdfCOMMENT
MEDIUMtests/test_computer_doctor_cmd.py736 # Create a tmp_path home with no .XdefaultsCOMMENT
MEDIUMtests/test_acp_session_runtime.py197 # Create a conversation via the API so LogManager can find itCOMMENT
MEDIUMtests/test_acp_session_runtime.py208 # Create a session backed by the dummy ACP runtimeCOMMENT
MEDIUMtests/test_acp_session_runtime.py980 # Create a session with a dead ACP runtimeCOMMENT
MEDIUM⚡tests/test_lessons_matcher.py374 # Create a lesson fileCOMMENT
MEDIUMtests/test_lessons_matcher.py422 # Create a lesson fileCOMMENT
119 more matches not shown…
Deep Nesting532 hits · 443 pts
SeverityFileLineSnippetContext
LOWtests/test_eval_behavioral_solutions.py55CODE
LOWtests/conftest.py256CODE
LOWtests/conftest.py544CODE
LOWtests/conftest.py675CODE
LOWtests/conftest.py852CODE
LOWtests/conftest.py683CODE
LOWtests/conftest.py861CODE
LOWtests/test_tree.py12CODE
LOWtests/test_onboard.py27CODE
LOWtests/test_plugins.py369CODE
LOWtests/test_server_parent_death_watcher.py45CODE
LOWtests/test_util_gh_mocked.py194CODE
LOWtests/test_util_gh_mocked.py228CODE
LOWtests/test_util_gh_mocked.py712CODE
LOWtests/test_util_gh_mocked.py201CODE
LOWtests/test_util_gh_mocked.py745CODE
LOWtests/test_hooks_server_confirm.py301CODE
LOWtests/test_hooks_server_confirm.py329CODE
LOWtests/test_shell_background.py291CODE
LOWtests/test_shell_background.py391CODE
LOWtests/test_workspace_memory_policy.py80CODE
LOWtests/test_computer_docker_config.py32CODE
LOWtests/test_tools_subagent.py1268CODE
LOWtests/test_tools_subagent.py1322CODE
LOWtests/test_computer_semantic_fixtures.py183CODE
LOWtests/test_shell_high_fd.py57CODE
LOWtests/test_cli.py2197CODE
LOWtests/test_shell_sigterm.py31CODE
LOWdocs/conf.py25CODE
LOWscripts/check_model_freshness.py95CODE
LOWscripts/auto_rename_logs.py32CODE
LOWscripts/github_ci_self_heal.py294CODE
LOWscripts/github_ci_self_heal.py305CODE
LOWscripts/smoke_frozen_server.py47CODE
LOWscripts/treeofthoughts.py183CODE
LOWscripts/generate_sounds.py371CODE
LOWscripts/eval_phase0_pruning.py260CODE
LOWscripts/check_docs_repo_links.py31CODE
LOWscripts/check_docs_repo_links.py78CODE
LOWscripts/build_changelog.py239CODE
LOWscripts/build_changelog.py371CODE
LOWscripts/build_changelog.py504CODE
LOWscripts/check_rst_formatting.py62CODE
LOWscripts/check_rst_formatting.py382CODE
LOWscripts/check_rst_formatting.py504CODE
LOWscripts/analyze_compression.py33CODE
LOWscripts/analyze_compression.py132CODE
LOWscripts/analyze_compression.py236CODE
LOWscripts/analyze_compression.py329CODE
LOWscripts/analyze_compression.py502CODE
LOWscripts/demo_capture.py133CODE
LOWscripts/demo_capture.py200CODE
LOWscripts/demo_capture.py286CODE
LOWscripts/demo_capture.py485CODE
LOWgptme/dirs.py126CODE
LOWgptme/checkpoint.py240CODE
LOWgptme/prompt_queue.py141CODE
LOWgptme/model_attestation.py136CODE
LOWgptme/telemetry.py166CODE
LOWgptme/message.py641CODE
472 more matches not shown…
Modern Structural Boilerplate334 hits · 333 pts
SeverityFileLineSnippetContext
LOWtests/test_eval_behavioral_solutions.py586 def update_metadata(self, key: str, info: dict[str, Any]) -> None:STRING
LOWtests/conftest.py48logger = logging.getLogger(__name__)CODE
LOWtests/test_workspace_snapshot.py344 def set_git_dates(timestamp: int) -> None:CODE
LOWtests/test_server_tts_api.py12def _set_openrouter_key(monkeypatch: pytest.MonkeyPatch, value: str | None) -> None:CODE
LOWtests/test_server_v2_auto_stepping.py12logger = logging.getLogger(__name__)CODE
LOWtests/test_acp_session_runtime.py64 async def set_session_model(self, session_id: str, model_id: str) -> None:CODE
LOWtests/thread_leak.py30__all__ = [CODE
LOW⚡tests/test_subagent_unit.py7042 def _set_agent_id(self, agent_id: str) -> None:CODE
LOWtests/test_eval_behavioral.py1055logger = logging.getLogger(__name__)CODE
LOWtests/test_server_v2_tool_confirmation.py11logger = logging.getLogger(__name__)CODE
LOWscripts/auto_rename_logs.py14logger = logging.getLogger(__name__)CODE
LOWscripts/github_bot.py77def set_github_env(name: str, value: str) -> None:CODE
LOWscripts/build_changelog.py32logger = logging.getLogger(__name__)CODE
LOWscripts/analyze_compression.py25logger = logging.getLogger(__name__)CODE
LOWscripts/train/collect.py19logger = logging.getLogger(__name__)CODE
LOWgptme/dirs.py12logger = logging.getLogger(__name__)CODE
LOWgptme/prompt_queue.py17logger = logging.getLogger(__name__)CODE
LOWgptme/model_attestation.py19logger = logging.getLogger(__name__)CODE
LOWgptme/model_attestation.py288def set_selection_trace(trace: ModelSelectionTrace | None) -> None:CODE
LOWgptme/session.py18logger = logging.getLogger(__name__)CODE
LOWgptme/__init__.py13__all__ = [CODE
LOWgptme/telemetry.py35__all__ = [CODE
LOWgptme/telemetry.py53logger = logging.getLogger(__name__)CODE
LOWgptme/message.py31logger = logging.getLogger(__name__)CODE
LOWgptme/message.py45def set_output_format(fmt: str) -> None:CODE
LOWgptme/status_provider.py31logger = logging.getLogger(__name__)CODE
LOWgptme/sandbox.py47logger = logging.getLogger(__name__)CODE
LOWgptme/chat.py62logger = logging.getLogger(__name__)CODE
LOWgptme/circuit_breaker.py38logger = logging.getLogger(__name__)CODE
LOWgptme/circuit_breaker.py286__all__ = [CODE
LOWgptme/k_best.py38logger = logging.getLogger(__name__)CODE
LOWgptme/init.py37logger = logging.getLogger(__name__)CODE
LOWgptme/init.py494def _set_console_compact(enabled: bool) -> None:CODE
LOWgptme/profiles.py43logger = logging.getLogger(__name__)CODE
LOWgptme/executor.py25logger = logging.getLogger(__name__)CODE
LOWgptme/workspace_snapshot.py30logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_lynx.py14logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell_validation.py23logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell_flags.py34__all__ = ["FlagSpec", "PERMITTED_FLAGS", "flags_permitted"]CODE
LOWgptme/tools/_browser_perplexity.py9logger = logging.getLogger(__name__)CODE
LOWgptme/tools/clarify.py23logger = logging.getLogger(__name__)CODE
LOWgptme/tools/lessons.py34logger = logging.getLogger(__name__)CODE
LOWgptme/tools/memory.py30logger = logging.getLogger(__name__)CODE
LOWgptme/tools/gh.py47logger = logging.getLogger(__name__)CODE
LOWgptme/tools/convert.py32logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_url_safety.py19def set_session_allow_hosts(allow_hosts: list[str] | None) -> None:CODE
LOWgptme/tools/_browser_playwright.py40logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell.py197logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell.py677 def _set_cwd(self, cwd: str) -> None:CODE
LOWgptme/tools/shell.py2355def set_workspace_cwd(cwd: str) -> None:CODE
LOWgptme/tools/shell.py2391def set_shell(shell: ShellSession) -> None:CODE
LOWgptme/tools/tmux.py31logger = logging.getLogger(__name__)CODE
LOW⚡gptme/tools/__init__.py96def _set_available_tools_cache(tools: list[ToolSpec] | None) -> None:CODE
LOWgptme/tools/__init__.py43logger = logging.getLogger(__name__)CODE
LOWgptme/tools/__init__.py46__all__ = [CODE
LOWgptme/tools/__init__.py953def set_tools(tools: list[ToolSpec]) -> None:CODE
LOWgptme/tools/__init__.py968def set_session_allowlist(allowlist: list[str] | None) -> None:CODE
LOWgptme/tools/computer.py122logger = logging.getLogger(__name__)CODE
LOW⚡gptme/tools/_browser_thread.py17logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_thread.py48def set_storage_state_override(path: Path | None) -> None:CODE
274 more matches not shown…
Redundant / Tautological Comments179 hits · 270 pts
SeverityFileLineSnippetContext
LOWtests/test_dspy_basic.py13# Check if DSPy is available and handle import errors gracefullyCOMMENT
LOWtests/conftest.py289 # Check if Anthropic quota is exhausted to skip API tests gracefully.COMMENT
LOW⚡tests/test_chat_history.py23 # Check if feature is enabledCOMMENT
LOWtests/test_hybrid_lessons.py12# Check if hybrid matching is availableCOMMENT
LOW⚡tests/test_context_providers.py540 # Check if compression is neededCOMMENT
LOWtests/test_server_v2_hooks.py76 # Check if test SESSION_START hook message is in the logCOMMENT
LOWtests/test_server_v2_hooks.py125 # Check if test STEP_PRE hook message is in the logCOMMENT
LOWtests/test_server_v2_hooks.py228 # Check if test TURN_POST hook message is in the logCOMMENT
LOWtests/test_tools_computer.py38 # Check if xrandr is available and can run successfullyCOMMENT
LOWtests/test_auto_compact.py368 # Check if original had <think>, if so, compacted should tooCOMMENT
LOW⚡tests/test_tools_morph.py260 # Set cwd to a subdirectory so the file path escapes itCOMMENT
LOWtests/test_cli.py1388 # Set timeout to 5 minutes to avoid Anthropic's streaming recommendationCOMMENT
LOWtests/test_dspy_hybrid.py5# Check if DSPy is available and handle import errors gracefullyCOMMENT
LOWtests/test_tools_shell.py1492# Check if stdin is /dev/nullCOMMENT
LOWtests/test_tools_shell.py1542# Check if stdin is /dev/nullCOMMENT
LOWscripts/github_bot.py454 # Check if there are changesCOMMENT
LOWscripts/check_rst_formatting.py100 # Check if we're exiting a code block (line with same or less indentation that has content)COMMENT
LOWscripts/check_rst_formatting.py136 # Check if there's a blank line between this and the parent list itemCOMMENT
LOWscripts/check_rst_formatting.py149 # Check if a new list needs a blank line before it. An item that followsCOMMENT
LOWscripts/check_rst_formatting.py160 # Check if there's no blank line before this listCOMMENT
LOWscripts/check_poetry_lock_sync.sh13# Check if poetry.lock is in sync with pyproject.tomlCOMMENT
LOWscripts/demo_capture.py109 # Check if playwright is importableCOMMENT
LOWscripts/demo_capture.py375 # Check if server is already runningCOMMENT
LOWscripts/demo_capture.py418 # Check if already runningCOMMENT
LOWscripts/demo_capture.py616 # Print resultsCOMMENT
LOWscripts/build_server_executable.sh6# Check if we're in the project rootCOMMENT
LOWscripts/build_server_executable.sh24# Check if build was successfulCOMMENT
LOWwebui/server.py36 # Check if this looks like an asset requestCOMMENT
LOWgptme/chat.py688 # Check if user declined execution - return to prompt without generating responseCOMMENT
LOWgptme/chat.py738 # Check if there are any runnable tools left. After a mid-turnCOMMENT
LOWgptme/chat.py908 # Check if we should prompt for input or generate response directlyCOMMENT
LOWgptme/codeblock.py604 # Check if this line starts with backticks (potential opening or closing)COMMENT
LOWgptme/codeblock.py608 # Check if this is a bare fence (only backticks on the line)COMMENT
LOWgptme/codeblock.py696 # Check if this line is a bare fence (only backticks)COMMENT
LOWgptme/codeblock.py702 # Check if there's content after it (allowing blank lines)COMMENT
LOWgptme/init.py212 # Check if model has provider/model formatCOMMENT
LOWgptme/init.py215 # Check if it's a built-in provider or custom providerCOMMENT
LOWgptme/info.py268 # Check if editable via direct_url.jsonCOMMENT
LOWgptme/info.py287 # Check if installed via pipx (lives in ~/.local/pipx/)COMMENT
LOWgptme/info.py305 # Check if any of the indicator packages are installedCOMMENT
LOWgptme/tools/save.py171 # Check if file exists and store original content for comparisonCOMMENT
LOWgptme/tools/save.py176 # Check if folder existsCOMMENT
LOWgptme/tools/save.py209 # Check if this was an inefficient overwrite (minimal changes)COMMENT
LOWgptme/tools/save.py268 # Check if folder exists firstCOMMENT
LOWgptme/tools/shell_validation.py339 # Check if this pipe is inside quotesCOMMENT
LOWgptme/tools/shell_validation.py341 # Check if this is part of || (logical OR)COMMENT
LOWgptme/tools/shell_validation.py694 # Check if all commands in the pipeline are allowlistedCOMMENT
LOWgptme/tools/shell_validation.py839 # Check if command is allowlistedCOMMENT
LOWgptme/tools/shell_validation.py866 # Check if disabled via environment variableCOMMENT
LOWgptme/tools/shell_validation.py870 # Check if shellcheck is availableCOMMENT
LOWgptme/tools/shell_validation.py939 # Check if any triggered codes are error codes (should block)COMMENT
LOWgptme/tools/shell_validation.py300 # Check if remaining text is the delimiter. Include theSTRING
LOWgptme/tools/shell_validation.py307 # Check if the line from pos to newline_idx is just the delimiter.STRING
LOWgptme/tools/gh.py244 # Check if all checks are doneCOMMENT
LOWgptme/tools/mcp_adapter.py585 # Check if server already loadedCOMMENT
LOWgptme/tools/mcp_adapter.py589 # Check if server is in configCOMMENT
LOWgptme/tools/shell.py888 # Check if -S or -n flags are present (they disable TTY need)COMMENT
LOWgptme/tools/shell.py1169 # Check if there's already stdin redirectionCOMMENT
LOWgptme/tools/tmux.py380 # Check if output changed (comparing stripped content)COMMENT
LOWgptme/tools/tmux.py385 # Check if output has been stable long enoughCOMMENT
119 more matches not shown…
Docstring Block Structure53 hits · 265 pts
SeverityFileLineSnippetContext
HIGHtests/test_eval_behavioral_solutions.py714\ import re def parse_args(input_str): \"\"\"Parse a string of arguments respeSTRING
HIGHtests/test_eval_behavioral_solutions.py1041\ \"\"\"API client for external service.\"\"\" import urllib.request import json STRING
HIGHtests/test_eval_behavioral.py2732\ import re def parse_args(input_str): """Parse a shell-like argument string into a list of tokens. Handles qSTRING
HIGHgptme/dirs.py172Get the persistent memory directory for an agent profile. Each profile gets its own memory directory where the subaSTRING
HIGHgptme/model_attestation.py239Convenience constructor for creating a selection trace. Args: requested_model: The model string as requesteSTRING
HIGHgptme/session.py81Create a new session. Args: session_id: Unique session identifier log: Optional LogManaSTRING
HIGHgptme/message.py389Concatenate two messages of the same role. Merges content with separator, and combines files and file_hashes. STRING
HIGHgptme/sandbox.py518Return path to the cached CPython WASI binary, downloading if needed. Args: path: Override cache path. DefaSTRING
HIGHgptme/k_best.py77Decorator factory: run the wrapped function K times and return the best result. Args: k: Number of candidatSTRING
HIGHgptme/knowledge.py206Save a knowledge entry to the cross-session knowledge base. Args: problem: Primary content — the problem, dSTRING
HIGHgptme/tools/_browser_playwright.py784Load a previously saved browser session (cookies, localStorage) from a file. This is the in-session complement to `STRING
HIGHgptme/tools/_browser_playwright.py941Press a keyboard key or shortcut in the current browser page. Dispatches the key event to the active focused elemenSTRING
HIGHgptme/tools/computer.py770Return a text dump of the AT-SPI2 accessibility tree for all desktop apps. Requires the optional ``pyatspi`` packagSTRING
HIGHgptme/tools/computer.py848Find an accessible element by role and name and return its center coordinates. Looks up the element via AT-SPI2, coSTRING
HIGHgptme/tools/computer.py944Return a text dump of the macOS accessibility tree for visible apps. Uses AppleScript via ``osascript`` to query thSTRING
HIGHgptme/tools/computer.py1048Find a UI element on macOS by AX role and name and return its center coordinates. Searches the frontmost applicatioSTRING
HIGHgptme/tools/computer.py2436Start recording the screen to an MP4 file. Uses ``ffmpeg`` with ``x11grab`` (Linux) or ``avfoundation`` (macOS). STRING
HIGHgptme/tools/computer.py2519Record the screen for a fixed duration and return the output path. Synchronous wrapper around ``start_recording()``STRING
HIGHgptme/tools/browser.py236Convert PDF pages to images using auto-detected CLI tools. Auto-detects and uses the first available tool: pdftoppmSTRING
HIGHgptme/tools/browser.py1109Load a previously saved browser session (cookies, localStorage) from a file. In-session complement to ``save_browseSTRING
HIGHgptme/tools/browser.py1220Press a keyboard key or shortcut in the current browser page. Dispatches the key event to the focused element (or dSTRING
HIGHgptme/tools/computer_semantic.py125Compare pre/post screenshots and optionally apply a semantic expectation check. Pixel-change detection runs uncondiSTRING
HIGHgptme/tools/screenshot.py63Validate that screenshot path is within allowed directory. Security: Prevents arbitrary file writes via path traverSTRING
HIGHgptme/tools/base.py544 Tool specification. Defines a tool that can be used by the agent. Args: name: The name of the tool. STRING
HIGHgptme/tools/autocompact/hook.py210 Get a unique name for the compacted conversation fork. The original conversation stays untouched as the backupSTRING
HIGHgptme/tools/subagent/batch.py394Wait for the first subagent to complete and return its result. Useful for speculative/hedging patterns: spawn NSTRING
HIGHgptme/tools/subagent/api.py1351Inject a steering message into a running subagent's conversation. The message is queued via the subagent's logdir pSTRING
HIGHgptme/tools/subagent/api.py1966Wait for the first of the given subagents to complete. Useful for speculative/hedging patterns: spawn N subagents aSTRING
HIGHgptme/llm/__init__.py1378 Get available models from a provider. Args: provider: The provider to get models from Returns: STRING
HIGHgptme/llm/utils.py93Convert Parameter objects to JSON Schema dictionary format. This utility converts a list of Parameter objects into STRING
HIGHgptme/oauth/openrouter.py146Run the OpenRouter PKCE OAuth flow and return a durable API key. Args: key_label: Label OpenRouter shows foSTRING
HIGHgptme/util/master_context.py167 Recover truncated content from the master context. Args: logfile: Path to conversation.jsonl bSTRING
HIGHgptme/util/git_worktree.py130Create a git worktree for isolated subagent execution. Args: repo_path: Path to the git repository root. STRING
HIGHgptme/util/content.py2 Check if message content is a command (starts with / and first word has exactly one slash). Examples: STRING
HIGHgptme/util/keyword_matching.py20Convert a keyword (possibly with wildcards) to a compiled regex pattern. Wildcards: - '*' matches zero or more STRING
HIGHgptme/util/install.py40 Get the install command for a package based on the current environment. Args: package: Package name (eSTRING
HIGHgptme/util/tool_format.py214Format detailed tool information. Args: tool: The tool to format include_examples: Include example STRING
HIGHgptme/server/workspace_api.py160 Safely resolve a path within a workspace. Args: workspace: Base workspace path path: Optional STRING
HIGHgptme/server/client.py53Create a new session for conversation via events endpoint. Args: conversation_id: The conversation STRING
HIGHgptme/server/client.py104Take a step in the conversation. Args: conversation_id: The conversation ID session_id:STRING
HIGHgptme/server/client.py140Stream events from conversation. Args: conversation_id: The conversation ID session_id:STRING
HIGHgptme/server/client.py174Interrupt the current generation or tool execution. Args: conversation_id: The conversation ID STRING
HIGHgptme/server/client.py206Confirm, edit, or skip a pending tool execution. Args: conversation_id: The conversation ID STRING
HIGHgptme/agent/workspace.py140 Create an agent workspace by cloning a template repository. This is the recommended approach for creating agenSTRING
HIGHgptme/mcp/client.py419Read a specific resource by URI. Args: uri: The URI of the resource to read. Returns: STRING
HIGHgptme/mcp/client.py499Get a specific prompt by name with optional arguments. Args: name: The name of the prompt to retrieSTRING
HIGHgptme/logmanager/conversations.py559 Delete a conversation by its ID. Args: conv_id: The conversation ID to delete Returns: TrSTRING
HIGHgptme/lessons/installer.py510Check if all skill dependencies are satisfied. Args: skill_names: Specific skills to check (None = check alSTRING
HIGHgptme/lessons/parser.py110Convert a file glob pattern to likely keywords. Args: glob_pattern: File pattern like '**/*.py' or 'src/apiSTRING
HIGHgptme/eval/leaderboard.py1323Generate a leaderboard from eval results. Args: results_dir: Path to eval_results directory with timestampeSTRING
HIGHgptme/eval/dspy/hybrid_optimizer.py382 Select appropriate optimization strategy based on task characteristics. This function implements automated optSTRING
HIGHgptme/eval/dspy/experiments.py407 Run a complete prompt optimization experiment. Args: experiment_name: Name for the experiment STRING
HIGHgptme/eval/dspy/experiments.py458 Quick test of prompt variations without full optimization. Args: prompt_variations: Dictionary of promSTRING
Modern AI Meta-Vocabulary51 hits · 152 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md88 - [🛡 Guardrails](#-guardrails)CODE
MEDIUMREADME.md372See [Running agents autonomously](https://gptme.org/docs/agents/autonomous.html) for scheduling, monitoring, and guardraCODE
MEDIUMtests/test_replay.py337 # Model with a 100-token context windowCOMMENT
MEDIUMtests/conftest.py287 # Download the embedding model before running tests.COMMENT
MEDIUM⚡tests/test_cmd_service.py224 # First scaffold a periodic agent (creates testagent.timer)COMMENT
MEDIUM⚡tests/test_cmd_service.py967 # launchd allows (apostrophe), then scaffold into it.COMMENT
MEDIUMtests/test_cmd_service.py659 # to ensure the actual warning path was exercised (not just the scaffold line).COMMENT
MEDIUMtests/test_util_cli.py388 # Indexing is isolated; retrieval ranking is not — the global RAG storeCOMMENT
MEDIUM⚡tests/test_tools_rag.py58 # Should yield nothing when RAG is not availableCOMMENT
MEDIUMtests/test_tools_rag.py33 # Mock the config to enable RAGCOMMENT
MEDIUMtests/test_tools_rag.py76 # Should yield nothing when RAG is disabledCOMMENT
MEDIUM⚡tests/test_tools_token_awareness.py80 # GPT-4 has a context window of 8192 or 128000 depending on versionCOMMENT
MEDIUM⚡tests/test_init.py56# init() — orchestration testsCOMMENT
MEDIUMdocs/howto/automate-task.md60## Set up a project scaffoldCOMMENT
MEDIUM⚡scripts/eval_phase0_pruning.py276 # default. Prefer the recorded model so the tokenizer and context windowCOMMENT
MEDIUMgptme/constants.py146# This prevents unbounded memory usage and context window overflowCOMMENT
MEDIUMgptme/tools/rag.py21 workspace_only = true # Whether to only search in the workspace directory, or the whole RAG indexSTRING
MEDIUMgptme/tools/rag.py22 paths = [] # List of paths to include in the RAG index. Has no effect if workspace_only is true.STRING
MEDIUMgptme/tools/rag.py82### When to use RAGCOMMENT
MEDIUMgptme/tools/watch.py790# Shell keywords that are loop/condition scaffolding, not the polled check.COMMENT
MEDIUMgptme/tools/watch.py1208 # before any prompt; below guardrails (200).COMMENT
MEDIUMgptme/tools/autocompact/resume.py1056 # they always use the same tokenizer and context window.COMMENT
MEDIUMgptme/tools/subagent/hooks.py106 # immediately, without waiting for the agentic turn to finish naturally.COMMENT
MEDIUMgptme/llm/llm_openai_models.py383 # GPT-5.3 Codex — top-tier agentic coding modelCOMMENT
MEDIUMgptme/llm/llm_openai_models.py413 # GPT-5.2 Codex — agentic coding variant of 5.2COMMENT
MEDIUMgptme/llm/llm_openai_models.py435 # GPT-5.1 Codex — agentic coding variant of 5.1COMMENT
MEDIUMgptme/llm/models/recommended.py18# Recommended model per provider: the model we would pick for agentic workCOMMENT
MEDIUMgptme/context/config.py66 # - float 0 < x ≤ 1: fraction of the model context window (e.g. 0.85)COMMENT
MEDIUMgptme/context/scout.py53# main model's context window. Per-file truncation uses CONTENT_SIZE_WARN_THRESHOLD.COMMENT
MEDIUMgptme/util/ask_execute.py131 # execution request: route it through the hook chain again so guardrailsCOMMENT
MEDIUMgptme/agent/cli.py287 gptme service init # Lightweight alternative: minimal service scaffoldSTRING
MEDIUMgptme/mcp/server.py177 # TOOL_CONFIRM hooks (guardrails) still dispatch instead of auto-confirming.COMMENT
MEDIUMgptme/mcp/server.py189 # auto-confirm without running TOOL_CONFIRM (guardrails).COMMENT
MEDIUMgptme/cli/util.py516 # Initialize RAGCOMMENT
MEDIUMgptme/cli/util.py541 # Initialize RAGCOMMENT
MEDIUMgptme/cli/util.py581 # Initialize RAGCOMMENT
MEDIUMgptme/cli/cmd_knowledge.py316 # Build an ID-indexed map from the FULL JSONL store: RAG may rankCOMMENT
MEDIUMgptme/cli/cmd_knowledge.py359 # RAG succeeded but returned no live entries: the index may be empty,COMMENT
MEDIUMgptme/cli/cmd_knowledge.py361 # no longer map to JSONL entries. A successful-but-empty RAG result isCOMMENT
MEDIUMgptme/cli/cmd_knowledge.py494 # deleted entry. Don't block the CLI on the RAG index operation.COMMENT
MEDIUMgptme/cli/setup.py464# Uncomment to enable RAG (Retrieval-Augmented Generation)COMMENT
MEDIUMgptme/cli/cmd_init.py9 gptme init my-project # Create my-project/ with scaffoldSTRING
MEDIUM⚡gptme/cli/doctor.py227 # A placeholder key (e.g. "test", "dummy-key") is scaffolding, notCOMMENT
MEDIUMgptme/cli/doctor.py51# Placeholder API keys that are commonly left in config as scaffolding. ACOMMENT
MEDIUMgptme/logmanager/manager.py1142 # Expired — drop from context window (not from the log on disk).COMMENT
MEDIUMgptme/logmanager/manager.py1450 # Enrich with enabled context enhancements (RAG, fresh context)COMMENT
MEDIUMgptme/hooks/anomaly_watchdog.py653 priority=150, # after guardrails (200), before confirm hooksCODE
MEDIUMgptme/hooks/anomaly_watchdog.py665 priority=150, # after guardrails (200), before cli/server confirmCODE
MEDIUMgptme/prompts/__init__.py551# Sub-module imports for orchestrationCOMMENT
MEDIUMgptme/commands/llm.py369 # Show context window utilization if model info is availableCOMMENT
MEDIUMgptme/eval/agents/swebench.py83 # implementation. This is the orchestration skeleton from bjsi'sCOMMENT
Over-Commented Block120 hits · 108 pts
SeverityFileLineSnippetContext
LOW.pre-commit-config.yaml41 - id: check-poetry-lock-syncCOMMENT
LOWpyproject.toml461 "xdist_group: marks tests that should run in the same xdist group",COMMENT
LOWdocker-compose.yml1# Two services are available:COMMENT
LOWdocker-compose.yml41 restart: unless-stoppedCOMMENT
LOWgptme.toml1prompt = "This is gptme"COMMENT
LOWgptme.toml21#paths = [COMMENT
LOWgptme.toml41#command = "npx"COMMENT
LOWtauri/src-tauri/src/lan_access.rs1//! LAN access: lets a phone/tablet on the same WiFi open gptme.COMMENT
LOWtauri/src-tauri/src/lan_access.rs121 Ok,COMMENT
LOWtauri/src-tauri/src/lib.rs241 // Connect/read failed, response wasn't HTTP, or the probe timed out:COMMENT
LOWtauri/src-tauri/src/lib.rs381 // A debug build normally loads the Vite dev server, but E2E and otherCOMMENT
LOWtauri/src-tauri/src/lib.rs861 .expect("error while building tauri application")COMMENT
LOWtauri/src-tauri/src/lib.rs921 // Kill child processes first (e.g. uvicorn workers spawned by gptme-server,COMMENT
LOWtauri/src-tauri/src/lib.rs961COMMENT
LOWtauri/e2e/test/specs/first_run.test.js181 try {COMMENT
LOWtauri/e2e/test/specs/first_run.test.js241 //COMMENT
LOWtests/conftest.py561 # Make a copy to iterate over to avoid "dictionary changed size during iteration"COMMENT
LOWtests/thread_leak.py41DICT_RACE_MESSAGE = "dictionary changed size during iteration"COMMENT
LOWtests/test_subagent_unit.py4141 # Prevent the thread from blocking on the global slot semaphore.COMMENT
LOWtests/test_subagent_unit.py7261 """COMMENT
LOWtests/test_logmanager.py901COMMENT
LOWtests/test_tui_e2e.py641 def test_inline_prints_to_scrollback(self, tmux_tui, tmp_path):COMMENT
LOWtests/data/gh-issue-list.txt1#301 fix: broken import in tools/shell.py open 2025-01-15COMMENT
LOWtests/data/gh-issue-list.txt21#321 fix: edge case with piped commands detection open 2025-01-28COMMENT
LOWdocs/conf.py201# Prefix each section label with the name of the document it is in, followed by a colon.COMMENT
LOWscripts/check_model_freshness.py41 "llm/models/resolution.py",COMMENT
LOWscripts/bump_version.sh1#!/bin/bashCOMMENT
LOWscripts/publish_release.sh1#!/bin/bashCOMMENT
LOWscripts/install.sh1#!/usr/bin/env shCOMMENT
LOW.github/workflows/release.yml1name: ReleaseCOMMENT
LOW.github/workflows/release.yml261COMMENT
LOW.github/workflows/webui-visual-diff.yml161 if: steps.diff.outputs.changed > 0COMMENT
LOWwebui/.pre-commit-config.yaml41 # types_or: [javascript, jsx, ts, tsx]COMMENT
LOWwebui/eslint.config.js61 // {COMMENT
LOWwebui/wrangler.toml1# Cloudflare Pages configurationCOMMENT
LOWwebui/e2e/generation.spec.ts1import { test, expect, type Page } from '@playwright/test';COMMENT
LOWwebui/e2e/generation.spec.ts21// chatConfig arrived. Fix: skeleton pill while loading (PR #3441).COMMENT
LOWwebui/e2e/generation.spec.ts41// 1. UI: chat-input is enabled (server is reachable and a conversation canCOMMENT
LOWwebui/e2e/generation.spec.ts81 // Wait for ConversationContent to actually mount. MainLayout returns null whenCOMMENT
LOWwebui/e2e/performance.spec.ts1import { test, expect } from '@playwright/test';COMMENT
LOWwebui/e2e/ui-stability.spec.ts1import { test, expect } from '@playwright/test';COMMENT
LOWwebui/e2e/conversation.spec.ts141COMMENT
LOWwebui/src/stores/conversations.ts61 completedAt: number;COMMENT
LOWwebui/src/stores/conversations.ts81 // flash a skeleton right after send. chatConfig takes precedence once loaded.COMMENT
LOWwebui/src/utils/notifications.ts61 // Tauri deserializes the command arguments from an `options` field (theCOMMENT
LOWwebui/src/utils/workspaceApi.ts81 //COMMENT
LOWwebui/src/utils/conversation.ts1// This file can be removed or repurposed for other conversation utilitiesCOMMENT
LOWwebui/src/utils/tauri.ts1// Detect if we're running in Tauri environment.COMMENT
LOWwebui/src/components/ConversationContent.tsx401 });COMMENT
LOWwebui/src/components/SetupWizard.tsx741 cloudLoginStartBaseUrlRef.current = connectionConfig.baseUrl;COMMENT
LOWwebui/src/components/SandboxedIframePanel.tsx61 // can address it. `resolveSandbox` drops `allow-same-origin` wheneverCOMMENT
LOWwebui/src/components/ChatInput.tsx641 // Get conversation config to read the actual model.COMMENT
LOW…/src/components/__tests__/ConversationContent.test.tsx961 jest.useRealTimers();COMMENT
LOWwebui/src/hooks/useConversation.ts201 }COMMENT
LOWwebui/src/hooks/useConversation.ts621 setConnected(conversationId, false);COMMENT
LOWgptme/constants.py141# The message's max_steps_stop metadata, not this display text, makes the loopCOMMENT
LOWgptme/message.py201 # unprefixed, e.g. "gpt-5.6-sol", "claude-sonnet-4-6-20250929",COMMENT
LOWgptme/message.py221 # The value is the active view (empty for master), so a persisted request isCOMMENT
LOWgptme/sandbox.py241 # which case verify_memory_limit will have caught the unsatisfiable configCOMMENT
LOWgptme/codeblock.py481 # Track nesting depth to handle nested code blocksCOMMENT
60 more matches not shown…
Verbosity Indicators42 hits · 79 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_server_v2.py1713 # Step 1: list sessions (webui catalog fetch)COMMENT
LOW⚡tests/test_server_v2.py1720 # Step 2: fetch that specific session by its ID (webui detail fetch)COMMENT
LOW⚡tests/test_build_changelog.py116 # Step 1: commit the bump and tag it (pre-amend state)COMMENT
LOW⚡tests/test_build_changelog.py120 # Step 2: generate the changelog (this is what the release flow does before amending)COMMENT
LOWtests/test_build_changelog.py133 # Step 3: amend (embed release notes into the bump commit) + force-move the tagCOMMENT
LOW⚡tests/test_snapshot_command.py267 # Step 1: record state before attemptCOMMENT
LOW⚡tests/test_snapshot_command.py276 # Step 2: mutate workspace (simulate a failed attempt)COMMENT
LOW⚡tests/test_snapshot_command.py280 # Step 3: restore to before-attemptCOMMENT
LOWtests/test_server_v2_hooks.py275 # We need to check if there's an endpoint for this or if it happens automaticallyCOMMENT
LOW⚡tests/test_computer_use_integration.py233 # Step 1: open the form pageCOMMENT
LOW⚡tests/test_computer_use_integration.py237 # Step 2: fill message and author fieldsCOMMENT
LOW⚡tests/test_computer_use_integration.py241 # Step 3: click the submit button (waits for page load internally)COMMENT
LOW⚡tests/test_computer_use_integration.py244 # Step 4: read the result pageCOMMENT
LOW⚡tests/test_computer_use_integration.py604 # Step 1: open a page and save the sessionCOMMENT
LOW⚡tests/test_computer_use_integration.py609 # Step 2: reload the state in the same sessionCOMMENT
LOW⚡tests/test_computer_use_integration.py616 # Step 3: open the same page again — should work with restored stateCOMMENT
LOW⚡tests/test_chat.py537 # Step 1: include_paths extracts the image pathCOMMENT
LOW⚡tests/test_chat.py542 # Step 2: embed_attached_file_content preserves imagesCOMMENT
LOW⚡tests/test_chat.py548 # Step 3: msgs2dicts preserves files for provider processingCOMMENT
LOW⚡tests/test_computer_milestone_integration.py117 # Step 1: load the gameCOMMENT
LOW⚡tests/test_computer_milestone_integration.py120 # Step 2: verify initial stateCOMMENT
LOW⚡tests/test_computer_milestone_integration.py129 # Step 3: fire at the enemy — auto-aims so one Space winsCOMMENT
LOW⚡tests/test_computer_milestone_integration.py132 # Step 4: verify the milestone markerCOMMENT
LOW⚡tests/test_computer_milestone_integration.py202 # Step 1: load the gameCOMMENT
LOW⚡tests/test_computer_milestone_integration.py205 # Step 2: verify initial stateCOMMENT
LOW⚡tests/test_computer_milestone_integration.py211 # Step 3: click three ore nodes to gather 6 iron oreCOMMENT
LOW⚡tests/test_computer_milestone_integration.py216 # Step 4: wait for the craft button to become enabled (needs >= 5 ore)COMMENT
LOW⚡tests/test_computer_milestone_integration.py219 # Step 5: craft an iron plateCOMMENT
LOW⚡tests/test_computer_milestone_integration.py222 # Step 6: verify the milestone markerCOMMENT
LOWgptme/llm/llm_gptme.py283 # Step 1: Request device authorizationCOMMENT
LOW⚡gptme/llm/llm_gptme.py301 # Step 2: Display code to userCOMMENT
LOW⚡gptme/llm/llm_gptme.py305 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/auth.py81 # Step 1: Request device authorizationCOMMENT
LOWgptme/cli/auth.py112 # Step 2: Show the user what to doCOMMENT
LOW⚡gptme/cli/auth.py128 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/onboard.py298 # Step 1: Detect providersCOMMENT
LOW⚡gptme/cli/onboard.py331 # Step 2: Select providerCOMMENT
LOW⚡gptme/cli/onboard.py341 # Step 3: Test connectivityCOMMENT
LOWgptme/cli/onboard.py355 # Step 4: Create configCOMMENT
LOW⚡gptme/hooks/form_autodetect.py204 # Step 1: Heuristic detectionCOMMENT
LOW⚡gptme/hooks/form_autodetect.py210 # Step 2: LLM parsingCOMMENT
LOW⚡gptme/hooks/form_autodetect.py216 # Step 3: Create and yield form messageCOMMENT
Structural Annotation Overuse41 hits · 75 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_server_v2.py1713 # Step 1: list sessions (webui catalog fetch)COMMENT
LOW⚡tests/test_server_v2.py1720 # Step 2: fetch that specific session by its ID (webui detail fetch)COMMENT
LOW⚡tests/test_build_changelog.py116 # Step 1: commit the bump and tag it (pre-amend state)COMMENT
LOW⚡tests/test_build_changelog.py120 # Step 2: generate the changelog (this is what the release flow does before amending)COMMENT
LOWtests/test_build_changelog.py133 # Step 3: amend (embed release notes into the bump commit) + force-move the tagCOMMENT
LOW⚡tests/test_snapshot_command.py267 # Step 1: record state before attemptCOMMENT
LOW⚡tests/test_snapshot_command.py276 # Step 2: mutate workspace (simulate a failed attempt)COMMENT
LOW⚡tests/test_snapshot_command.py280 # Step 3: restore to before-attemptCOMMENT
LOW⚡tests/test_computer_use_integration.py233 # Step 1: open the form pageCOMMENT
LOW⚡tests/test_computer_use_integration.py237 # Step 2: fill message and author fieldsCOMMENT
LOW⚡tests/test_computer_use_integration.py241 # Step 3: click the submit button (waits for page load internally)COMMENT
LOW⚡tests/test_computer_use_integration.py244 # Step 4: read the result pageCOMMENT
LOW⚡tests/test_computer_use_integration.py604 # Step 1: open a page and save the sessionCOMMENT
LOW⚡tests/test_computer_use_integration.py609 # Step 2: reload the state in the same sessionCOMMENT
LOW⚡tests/test_computer_use_integration.py616 # Step 3: open the same page again — should work with restored stateCOMMENT
LOW⚡tests/test_chat.py537 # Step 1: include_paths extracts the image pathCOMMENT
LOW⚡tests/test_chat.py542 # Step 2: embed_attached_file_content preserves imagesCOMMENT
LOW⚡tests/test_chat.py548 # Step 3: msgs2dicts preserves files for provider processingCOMMENT
LOW⚡tests/test_computer_milestone_integration.py117 # Step 1: load the gameCOMMENT
LOW⚡tests/test_computer_milestone_integration.py120 # Step 2: verify initial stateCOMMENT
LOW⚡tests/test_computer_milestone_integration.py129 # Step 3: fire at the enemy — auto-aims so one Space winsCOMMENT
LOW⚡tests/test_computer_milestone_integration.py132 # Step 4: verify the milestone markerCOMMENT
LOW⚡tests/test_computer_milestone_integration.py202 # Step 1: load the gameCOMMENT
LOW⚡tests/test_computer_milestone_integration.py205 # Step 2: verify initial stateCOMMENT
LOW⚡tests/test_computer_milestone_integration.py211 # Step 3: click three ore nodes to gather 6 iron oreCOMMENT
LOW⚡tests/test_computer_milestone_integration.py216 # Step 4: wait for the craft button to become enabled (needs >= 5 ore)COMMENT
LOW⚡tests/test_computer_milestone_integration.py219 # Step 5: craft an iron plateCOMMENT
LOW⚡tests/test_computer_milestone_integration.py222 # Step 6: verify the milestone markerCOMMENT
LOWgptme/llm/llm_gptme.py283 # Step 1: Request device authorizationCOMMENT
LOW⚡gptme/llm/llm_gptme.py301 # Step 2: Display code to userCOMMENT
LOW⚡gptme/llm/llm_gptme.py305 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/auth.py81 # Step 1: Request device authorizationCOMMENT
LOWgptme/cli/auth.py112 # Step 2: Show the user what to doCOMMENT
LOW⚡gptme/cli/auth.py128 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/onboard.py298 # Step 1: Detect providersCOMMENT
LOW⚡gptme/cli/onboard.py331 # Step 2: Select providerCOMMENT
LOW⚡gptme/cli/onboard.py341 # Step 3: Test connectivityCOMMENT
LOWgptme/cli/onboard.py355 # Step 4: Create configCOMMENT
LOW⚡gptme/hooks/form_autodetect.py204 # Step 1: Heuristic detectionCOMMENT
LOW⚡gptme/hooks/form_autodetect.py210 # Step 2: LLM parsingCOMMENT
LOW⚡gptme/hooks/form_autodetect.py216 # Step 3: Create and yield form messageCOMMENT
AI Slop Vocabulary28 hits · 74 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml120swebench = {version = ">=1.0", optional=true} # for SWE-bench eval harnessCODE
MEDIUMpyproject.toml121terminal-bench = {version = ">=0.1", optional=true, python = ">=3.12"} # for Terminal-Bench eval harnessCODE
MEDIUMtauri/src-tauri/src/lan_access.rs72 // robust if the token format ever changes.COMMENT
MEDIUMtests/test_cc_memory.py255 This is the core feature of #3625: memories written by any harness toSTRING
MEDIUM⚡tests/test_mcp_discovery.py158 # We'll use a try-except to make the test more robustCOMMENT
MEDIUMtests/test_memory_store.py1177 # Reader harness: own root first, Codex write root still layered inCOMMENT
LOW⚡tests/test_reduce.py150 # Should not raise ValueError, just return messages as-is with content preservedCOMMENT
MEDIUM⚡tests/test_relevance_pruning.py729# shadow_prune_stale_tool_outputs — dry-run / evaluation harnessCOMMENT
MEDIUMgptme/anti_slop.py309 # a single soft (weight-1) tell like "robust" in a 10-word text scoresCOMMENT
MEDIUMgptme/anti_slop.py323 # tells — repeating one soft tell ("robust robust robust") adds weightCOMMENT
MEDIUMgptme/tools/shell.py3587 # only when they refer to this conversation's harness-owned jobs. OtherwiseCOMMENT
MEDIUMgptme/tools/subagent/__init__.py143### ACP Mode (multi-harness support)COMMENT
MEDIUMgptme/tools/subagent/api.py670 # ACP mode: multi-harness support via Agent Client ProtocolCOMMENT
MEDIUMgptme/llm/__init__.py1092 # TODO: make this more robust/general, maybe with a callback that runs on each char/chunkCOMMENT
LOWgptme/util/reduce.py124 # but if prev_len == tokens, we are not making progress, so just return the log as-isCOMMENT
MEDIUMgptme/util/install.py18 # Check for uvx (comprehensive cross-platform detection to avoid false positives)COMMENT
MEDIUMgptme/plugins/__init__.py485 # Check for uvx (comprehensive cross-platform detection to avoid false positives)COMMENT
LOWgptme/server/openapi_docs.py844 # For now, just use the first non-None type as 200 responseCOMMENT
MEDIUM⚡gptme/server/tasks_api.py288 """Get comprehensive task information with derived data."""STRING
MEDIUMgptme/hooks/anomaly_watchdog.py71# copies a harness makes.COMMENT
MEDIUMgptme/prompts/workspace.py422 # This makes memories written by any harness (gptme, Claude Code, Codex) visibleCOMMENT
MEDIUMgptme/prompts/workspace.py423 # in gptme sessions — the cross-harness read path for #3625.COMMENT
MEDIUMgptme/eval/dspy/tasks.py415 """Create advanced multi-step tasks for comprehensive evaluation."""STRING
MEDIUMgptme/eval/dspy/experiments.py29 """Generate a comprehensive optimization report."""STRING
MEDIUMgptme/eval/swe_extra/swe_bench_test_spec.py1# edited from the original swebench/harness/test_spec.pyCOMMENT
MEDIUMgptme/eval/swebench/evaluate.py246 # NOTE: This is NOT authoritative — use the official SWE-bench harness forCOMMENT
MEDIUMgptme/eval/swebench/main.py208 # Run the official harness for the first model's predictionsCOMMENT
MEDIUMgptme/eval/swebench/main.py209 # (multi-model harness runs can be done by calling this multiple times)COMMENT
Fake / Example Data48 hits · 49 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_server_path_traversal.py291 fake_key = tmp_path / "id_rsa"CODE
LOW⚡tests/test_server_path_traversal.py292 fake_key.write_text("PRIVATE KEY")CODE
LOW⚡tests/test_server_path_traversal.py295 mock_config.user.avatar = str(fake_key)CODE
LOW⚡tests/test_server_path_traversal.py343 fake_key = agent_dir / "id_rsa"CODE
LOW⚡tests/test_server_path_traversal.py344 fake_key.write_text("PRIVATE KEY")CODE
LOW⚡tests/test_server_path_traversal.py393 fake_key = agent_dir / "id_rsa"CODE
LOW⚡tests/test_server_path_traversal.py394 fake_key.write_text("PRIVATE KEY")CODE
LOWtests/test_agent.py687 monkeypatch.setenv("GIT_AUTHOR_EMAIL", "test@test.com")CODE
LOWtests/test_agent.py689 monkeypatch.setenv("GIT_COMMITTER_EMAIL", "test@test.com")CODE
LOWtests/test_prompts.py344 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_prompts.py620 ["git", "config", "user.email", "test@test.com"],CODE
LOW⚡tests/test_doctor.py1088 mock_config_obj.get_env.return_value = "dummy-key"CODE
LOW⚡tests/test_doctor.py1096 assert "placeholder" in result.message.lower()CODE
LOW⚡tests/test_doctor.py1535 config = Config(user=UserConfig(env={"ACME_CUSTOM_KEY": "dummy-key"}))CODE
LOW⚡tests/test_doctor.py1080 """Placeholder keys (e.g. "test", "dummy-key") are not-configured, not ERROR.STRING
LOWtests/test_subagent_worktree_isolation.py57 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_agent_doctor.py62 "GIT_AUTHOR_EMAIL": "test@test.com",CODE
LOWtests/test_agent_doctor.py64 "GIT_COMMITTER_EMAIL": "test@test.com",CODE
LOW⚡tests/test_lessons_commands.py160 assert "placeholder" in result.lower()CODE
LOWtests/test_lessons_commands.py57 keywords=["patch", "placeholder", "error"],CODE
LOW⚡tests/test_util_cli.py1342 "GIT_AUTHOR_EMAIL": "test@test.com",CODE
LOW⚡tests/test_util_cli.py1344 "GIT_COMMITTER_EMAIL": "test@test.com",CODE
LOW⚡tests/test_util_cli.py1350 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_git_worktree.py23 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_config_encoding.py99 config_file.write_text('[user]\nabout = "placeholder"\n', encoding="utf-8")CODE
LOWtests/test_auto_compact.py3560 big_checkpoint = "## Objective\n" + ("lorem ipsum dolor sit amet " * 400)CODE
LOWtests/test_auto_compact.py3560 big_checkpoint = "## Objective\n" + ("lorem ipsum dolor sit amet " * 400)CODE
LOWtests/test_auto_compact.py3766 big_checkpoint = "## Objective\n" + ("lorem ipsum dolor sit amet " * 400)CODE
LOWtests/test_auto_compact.py3766 big_checkpoint = "## Objective\n" + ("lorem ipsum dolor sit amet " * 400)CODE
LOW⚡tests/test_util_keyword_matching.py251 text = "Lorem ipsum " * 100 + "specific keyword here" + " dolor sit" * 100CODE
LOWtests/test_util_review.py2517 run(["git", "config", "user.email", "test@test.com"])CODE
LOW.github/workflows/docs.yml62 echo -e '[prompt]\nabout_user = "testing"\nresponse_preference = "just testing"\n\n[env]\nOPENAI_API_KEY="sk-dCODE
LOWwebui/src/democonversations.ts158 content: `Stress message ${i + 1}: ${'Lorem ipsum dolor sit amet. '.repeat(3)}`,CODE
LOWwebui/src/democonversations.ts158 content: `Stress message ${i + 1}: ${'Lorem ipsum dolor sit amet. '.repeat(3)}`,CODE
LOWwebui/src/components/__tests__/CommandPalette.test.tsx678 expect(input).toHaveAttribute('placeholder', expect.stringContaining('command'));CODE
LOWgptme/tools/_browser_playwright.py1112 fill_element("[name='email']", "user@example.com")STRING
LOWgptme/tools/computer.py2073 computer("type", text="user@example.com")CODE
LOWgptme/tools/computer.py2077 computer("type", text="user@example.com")CODE
LOWgptme/tools/browser.py1343 fill_element("[name='email']", "user@example.com")STRING
LOW⚡gptme/cli/doctor.py227 # A placeholder key (e.g. "test", "dummy-key") is scaffolding, notCOMMENT
LOW⚡gptme/cli/doctor.py62 "dummy-key",CODE
LOW⚡gptme/cli/doctor.py63 "placeholder",CODE
LOWgptme/cli/doctor.py82 Placeholder keys (e.g. "test", "dummy-key") are scaffolding left in config,STRING
LOWgptme/eval/suites/practical7.py215 "phone": "555-1234",CODE
LOWgptme/eval/suites/practical7.py217 "street": "123 Main St",CODE
LOWgptme/eval/suites/practical7.py230 "street": "123 Main St",CODE
LOWgptme/eval/suites/behavioral/noisy_worktree_fix.py106 assert validate_email("user@example.com") is TrueCODE
LOW⚡gptme/eval/suites/behavioral/add_docstrings.py174 assert validate_email("user@example.com") == "user@example.com"CODE
Dead Code20 hits · 40 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_mcp_server.py36CODE
MEDIUMtests/test_llm_utils.py757CODE
MEDIUMtests/test_llm_retry_policy.py173CODE
MEDIUMtests/test_tools_request_tool_change.py462CODE
MEDIUMtests/test_tools_request_tool_change.py501CODE
MEDIUMtests/test_hooks.py92CODE
MEDIUMtests/test_hooks.py97CODE
MEDIUMtests/test_hooks.py102CODE
MEDIUMtests/test_llm_openai_subscription.py377CODE
MEDIUMtests/test_commands.py456CODE
MEDIUMtests/test_commands.py471CODE
MEDIUMtests/test_hooks_cwd_changed.py87CODE
MEDIUMtests/test_hooks_cwd_changed.py137CODE
MEDIUMgptme/hooks/aw_watcher_agent.py158CODE
MEDIUMgptme/hooks/aw_watcher_agent.py175CODE
MEDIUMgptme/hooks/aw_watcher_agent.py195CODE
MEDIUMgptme/hooks/aw_watcher_agent.py235CODE
MEDIUMgptme/hooks/cwd_changed.py42CODE
MEDIUMgptme/hooks/auto_snapshots.py253CODE
MEDIUMgptme/hooks/auto_snapshots.py284CODE
AI Structural Patterns31 hits · 24 pts
SeverityFileLineSnippetContext
LOWtests/test_util_cli_models.py191CODE
LOWtests/test_agent.py29CODE
LOWtests/test_chats_stats.py52CODE
LOWtests/test_util_cli.py1146CODE
LOWtests/test_util_tool_format.py28CODE
LOWtests/test_json_output.py137CODE
LOWtests/test_json_output.py653CODE
LOWtests/test_json_output.py767CODE
LOWgptme/chat.py212CODE
LOWgptme/chat.py1011CODE
LOWgptme/tools/shell.py3673CODE
LOWgptme/tools/chats.py666CODE
LOWgptme/tools/base.py596CODE
LOWgptme/tools/subagent/execution.py349CODE
LOWgptme/tools/subagent/execution.py1392CODE
LOWgptme/tools/subagent/batch.py493CODE
LOWgptme/tools/subagent/batch.py602CODE
LOWgptme/tools/subagent/batch.py1098CODE
LOWgptme/tools/subagent/api.py163CODE
LOWgptme/llm/__init__.py395CODE
LOWgptme/llm/__init__.py850CODE
LOWgptme/llm/models/listing.py319CODE
LOWgptme/util/reduce.py457CODE
LOWgptme/config/cli_setup.py108CODE
LOWgptme/server/session_step.py1746CODE
LOWgptme/cli/cmd_init.py193CODE
LOWgptme/prompts/__init__.py457CODE
LOWgptme/prompts/__init__.py578CODE
LOWgptme/eval/main.py543CODE
LOWgptme/eval/dspy/prompt_optimizer.py226CODE
LOWgptme/eval/dspy/prompt_optimizer.py278CODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtests/test_eval_behavioral.py0\ def summarize(text): \"\"\"return a dict with word and line counts for the given text.\"\"\" if not text: return {"worSTRING
HIGH…vioral/minimal_feature_preserve_default_with_decoys.py0\ def summarize(text): \"\"\"return a dict with word and line counts for the given text.\"\"\" if not text: return {"worSTRING
HIGH…eval/suites/behavioral/add_feature_preserve_default.py0\ def summarize(text): \"\"\"return a dict with word and line counts for the given text.\"\"\" if not text: return {"worSTRING
Overly Generic Function Names15 hits · 14 pts
SeverityFileLineSnippetContext
LOWtests/test_active_context.py20 (tmp_path / "utils.py").write_text("def helper(): pass\n")CODE
LOWtests/test_active_context.py138 assert "def helper(): pass" in contentCODE
LOW⚡tests/test_eval_behavioral.py231 def helper():CODE
LOW⚡tests/test_eval_behavioral.py1665def helper():CODE
LOW⚡tests/test_context.py591 (subdir / "utils.py").write_text("def helper(): pass")CODE
LOW⚡tests/test_context.py880 (subdir / "utils.py").write_text("def helper(): pass")CODE
LOW⚡tests/test_tools_base.py277 def helper(name: str) -> bool:CODE
LOW⚡tests/test_tools_base.py288 def helper(name: str) -> bool:CODE
LOWtests/test_tools_base.py456 def helper(name: str) -> bool:CODE
LOWtests/test_tools_base.py502 def helper(name: str) -> bool:CODE
LOWtests/test_tools_shell.py562def test_function(shell):CODE
LOWgptme/cli/cmd_computer.py742def run_task(task: str, timeout: int, model: str | None, as_json: bool):CODE
LOWgptme/hooks/tests/test_active_context.py28 (ws / "utils.py").write_text("def helper():\n return 42\n")CODE
LOWgptme/eval/dspy/tasks.py584 "slow_processor.py": """def process_data(data):STRING
LOWgptme/eval/dspy/tasks.py708def process_data(size):CODE
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHscripts/github_ci_self_heal.py262 f"*🤖 Auto-generated by gptme-bot self-heal ({model})*\n"CODE
HIGHgptme/cli/onboard.py261# Generated by gptme onboardCOMMENT
Magic Placeholder Names2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHgptme/cli/util.py1902 click.echo(f"Set it with: export {env_var}=your-api-key")CODE
HIGH⚡gptme/cli/doctor.py65 "your-api-key",CODE
Example Usage Blocks8 hits · 12 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml56 # Usage:COMMENT
LOWtauri/scripts/build-appimage.sh4# Usage:COMMENT
LOWscripts/bump_version.sh4# Usage:COMMENT
LOWscripts/gh-pr-view-with-pr-comments.sh9# Example usage:COMMENT
LOWscripts/publish_release.sh11# Usage:COMMENT
LOWscripts/install.sh4# Usage:COMMENT
LOWgptme/lessons/installer.py675# Example usageCOMMENT
LOWgptme/eval/dspy/experiments.py498 # Example usageCOMMENT
TODO Padding6 hits · 12 pts
SeverityFileLineSnippetContext
LOW⚡gptme/eval/suites/behavioral/implement_lru_cache.py144 # TODO: implement LRU cachingCOMMENT
LOWgptme/eval/suites/behavioral/implement_memoization.py91 # TODO: implement memoizationCOMMENT
LOW⚡…tme/eval/suites/behavioral/implement_priority_queue.py97 # TODO: implement priority queueCOMMENT
LOW⚡…tme/eval/suites/behavioral/implement_priority_queue.py101 # TODO: implementCOMMENT
LOW⚡…tme/eval/suites/behavioral/implement_priority_queue.py111 # TODO: implementCOMMENT
LOW⚡…tme/eval/suites/behavioral/implement_priority_queue.py120 # TODO: implementCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALtests/test_llm_anthropic.py1170 timeout = mock_client.messages.create.call_args.kwargs.get("timeout")CODE
Slop Phrases3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_anti_slop.py31 "Certainly! It's worth noting that we delve into a rich tapestry of ideas "CODE
MEDIUM⚡tests/test_anti_slop.py51 "It's worth noting that we delve into a rich tapestry of ideas."CODE
MEDIUMtests/test_server_v2_tool_confirmation.py45 "Done, let me know if you need anything else.",CODE
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHwebui/src/utils/__tests__/highlightUtils.test.ts37 '// ... existing code ...\ndef updated_fn():\n return True\n// ... existing code ...';CODE