A coding agent that evolves its own source, in public — 200 lines of Rust on day one, every commit since agent-written and tests-gated.
This report presents the forensic synthetic code analysis of yologdev/yoyo-evolve, a Rust project with 1,842 GitHub stars. SynthScan v2.0 examined 144,333 lines of code across 182 source files, recording 555 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 8.9 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 555 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/integration.rs | 36 | // ── --help ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 78 | // ── --version ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 117 | // ── Empty stdin (piped mode) ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 212 | // ── Unknown flags ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 234 | // ── --no-color suppresses ANSI codes ──────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 271 | // ── Missing API key ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 337 | // ── Flags requiring values show clear errors ──────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 380 | // ── /help output lists all documented commands ────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 453 | // ── --no-color output contains no ANSI escape sequences ───────────── | COMMENT |
| MEDIUM | tests/integration.rs | 498 | // ── Multiple unknown flags each produce warnings ──────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 538 | // ── --system-file with nonexistent file shows useful error ────────── | COMMENT |
| MEDIUM | tests/integration.rs | 586 | // ── Piped input with bad API key (needs network) ──────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 588 | // ── --thinking without a value ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 611 | // ── --verbose flag accepted ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 649 | // ── --allow and --deny flags accepted ─────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 719 | // ── --model without value (specific exit code + error format) ─────── | COMMENT |
| MEDIUM | tests/integration.rs | 746 | // ── Unknown slash-command-like arguments don't crash ──────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 770 | // ── Piped input with bad API key (needs network) ──────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 817 | // ── Error message quality ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 921 | // ── Flag combinations ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1002 | // ── Exit codes ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1059 | // ── Output format ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1159 | // ── Edge cases ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1336 | // ── UX timing tests ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1488 | // ── Dogfood UX verification tests (Issue #69) ────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1488 | // ── Dogfood UX verification tests (Issue #69) ────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1696 | // ── --allow-dir and --deny-dir flags ──────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1809 | // ── /plan command ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1825 | // ── --image flag ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1915 | // ── Benchmark-relevant properties ─────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1989 | // ── Setup wizard wiring (Issue #157) ──────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 1989 | // ── Setup wizard wiring (Issue #157) ──────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 2125 | // ── --no-bell ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 2146 | // ── /map command ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 2164 | // ── MCP collision guard (Day 39) ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/integration.rs | 2193 | // ── Skill loader contract regression guard ──────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 133 | # ── Gate 0: refuse to run with a dirty working tree ──────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 145 | # ── Gate 1: session counter ──────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 155 | # ── Gate 2: 24h cooldown ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 170 | # ── Gate 3: build is green ───────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 197 | # ── Identity context ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 217 | # ── Compose prompt ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 253 | # ── Dry-run short-circuit ────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 267 | # ── Snapshot HEAD (for revert on build break) ────────────────────────── | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 277 | # ── Invoke yoyo ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 28 | # ── Configuration constants ────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 38 | # ── Helpers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 85 | # ── Section 1: Recent session outcomes ─────────────────────────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 155 | # ── Section 2: Per-task success rate from git log ──────────────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 224 | # ── Section 3: Reverts in window (already counted above) ───────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 235 | # ── Section 4: Recurring CI errors via gh run view --log-failed ────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 352 | # ── Section 5: Provider/API health from audit.jsonl files ──────────────── | COMMENT |
| MEDIUM | scripts/extract_trajectory.py | 403 | # ── Final assembly ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 123 | # ── Gate 0: refuse a dirty working tree ──────────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 134 | # ── Gate 1: cooldown (~7 days) ───────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 149 | # ── Build the binary so we can invoke yoyo ───────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 168 | # ── Day number, timestamp, identity context ──────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 183 | # ── Compose the dream prompt ─────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 253 | # ── Dry-run short-circuit ────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/dream.sh | 263 | # ── Snapshot HEAD (for revert on out-of-scope writes) ────────────────── | COMMENT |
| 248 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mutants.toml | 1 | # cargo-mutants configuration for yoyo | COMMENT |
| LOW | tools/gasp-emit/src/main.rs | 1 | //! gasp-emit — maps yoyo's evolve-session transitions onto the GASP event | COMMENT |
| LOW | tests/integration.rs | 2161 | // is in unit tests (map_in_help_text). | COMMENT |
| LOW | tests/integration.rs | 2241 | "skill-evolve meta-skill must be present" | COMMENT |
| LOW | scripts/gasp_shim.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/gasp_shim.sh | 221 | # current (called automatically from gasp_session_end): | COMMENT |
| LOW | scripts/yoyo_context.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/evolve.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/evolve.sh | 141 | SESSION_TASKS_ATTEMPTED=0 | COMMENT |
| LOW | scripts/evolve.sh | 541 | COMMENT | |
| LOW | scripts/social.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/refresh_sponsors.py | 681 | # Failures warn and leave shouted_out=false so the next run retries. | COMMENT |
| LOW | scripts/create_address_book.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/skill_evolve.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/run_mutants.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/dream.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/dream.sh | 21 | # Exits 0 silently when the cooldown gate is active (most cron fires are no-ops). | COMMENT |
| LOW | scripts/bench/humaneval_one.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/bench/humaneval_one.sh | 21 | # - No multi-problem batch running / aggregate pass@1 in ONE invocation. | COMMENT |
| LOW | scripts/bench/humaneval_one.sh | 41 | # script builds/uses `cargo run --release --`. | COMMENT |
| LOW | scripts/bench/humaneval_run.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/bench/humaneval_run.sh | 21 | # USAGE: | COMMENT |
| LOW | src/commands_config.rs | 321 | " session: auto-save on exit ({})", | COMMENT |
| LOW | src/commands_config.rs | 341 | // a runtime mirror and `/config show` stays a file-introspection | COMMENT |
| LOW | src/commands_config.rs | 381 | /// Return `true` if a config key looks like a secret and its value | COMMENT |
| LOW | src/commands_config.rs | 481 | }; | COMMENT |
| LOW | src/repl.rs | 281 | /// | COMMENT |
| LOW | src/repl.rs | 1441 | /// worked) and we continue regardless of the text heuristic. An empty queue | COMMENT |
| LOW | src/dispatch.rs | 1 | //! REPL slash-command routing. | COMMENT |
| LOW | src/smart_edit.rs | 1 | //! SmartEditTool — augments edit_file "not found" errors with line-number context | COMMENT |
| LOW | src/sync_util.rs | 1 | //! Shared synchronisation helpers — lock-recovery for poisoned locks. | COMMENT |
| LOW | src/sync_util.rs | 21 | /// # Examples | COMMENT |
| LOW | src/tools.rs | 1 | //! Tool definitions for the yoyo agent. | COMMENT |
| LOW | src/tools.rs | 41 | use yoagent::tools::list::ListFilesTool; | COMMENT |
| LOW | src/tools.rs | 61 | /// (when available and in interactive mode), producing `AgentEvent::ProgressMessage` | COMMENT |
| LOW | src/tools.rs | 121 | text: output.to_string(), | COMMENT |
| LOW | src/tools.rs | 1081 | /// Hard cap on sub-agent nesting depth. `depth 0` = the top-level parent's | COMMENT |
| LOW | src/commands_git_review.rs | 121 | eprintln!("{DIM} install gh: https://cli.github.com/{RESET}\n"); | COMMENT |
| LOW | src/config.rs | 1 | //! Permission config, directory restrictions, MCP server config, and TOML parsing helpers. | COMMENT |
| LOW | src/config.rs | 41 | /// Directory restriction configuration for file access security. | COMMENT |
| LOW | src/config.rs | 281 | COMMENT | |
| LOW | src/config.rs | 441 | pub struct McpServerConfig { | COMMENT |
| LOW | src/config.rs | 481 | /// Check whether auto-commit is enabled in the config. | COMMENT |
| LOW | src/config.rs | 501 | /// Reads `lite` from the given config map. Defaults to `false` | COMMENT |
| LOW | src/config.rs | 541 | pub fn parse_quiet_from_config(config: &std::collections::HashMap<String, String>) -> bool { | COMMENT |
| LOW | src/commands_session.rs | 41 | // ── compact ────────────────────────────────────────────────────────────── | COMMENT |
| LOW | src/memory.rs | 221 | /// Higher scores indicate better matches. | COMMENT |
| LOW | src/commands_risk_emerging.rs | 1 | //! Emerging-risk / anticipatory detection for the `/risk` subsystem. | COMMENT |
| LOW | src/prompt_budget.rs | 1 | //! Session wall-clock budget and audit log helpers. | COMMENT |
| LOW | src/prompt_budget.rs | 161 | // stay inside a tighter budget than the workflow timeout, so future task | COMMENT |
| LOW | src/prompt_budget.rs | 181 | static SESSION_BUDGET_SECS: OnceLock<Option<u64>> = OnceLock::new(); | COMMENT |
| LOW | src/prompt_budget.rs | 441 | // session_budget_remaining() uses for the expired case. | COMMENT |
| LOW | src/prompt_budget.rs | 501 | // ── End-to-end set-path test for #262 ───────────────────────────── | COMMENT |
| LOW | src/prompt_budget.rs | 521 | // test that calls `session_budget_remaining()` or | COMMENT |
| LOW | src/prompt_budget.rs | 581 | // Set path #3: a *huge* grace window — bigger than the budget | COMMENT |
| LOW | src/hooks.rs | 1 | // Hook system — pre/post tool execution pipeline | COMMENT |
| LOW | src/hooks.rs | 201 | /// Phase at which a shell hook fires. | COMMENT |
| LOW | src/hooks.rs | 341 | } | COMMENT |
| LOW | src/git.rs | 21 | "rm", | COMMENT |
| LOW | src/git.rs | 41 | // Compare the supplied working dir against the compile-time project root. | COMMENT |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/test_scan_commitments.py | 378 | """The exact failure mode the human named on #589: when the harness | STRING |
| MEDIUM | scripts/evolve.sh | 153 | # Inline cleanup is robust to that risk; PID-suffixed worktree paths bound | COMMENT |
| MEDIUM | scripts/evolve.sh | 266 | # Keep core skills in ./skills, but allow the harness to fetch reusable external | COMMENT |
| MEDIUM | scripts/evolve.sh | 550 | # tagged source=discussion (#589, the harness half of #582) — promises made | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 36 | # the eval fact must name THIS harness's actual oracle (no clippy, no | COMMENT |
| MEDIUM | scripts/skill_evolve.sh | 312 | # harness-side belt that turns them into actual constraints. | COMMENT |
| MEDIUM | scripts/dream.sh | 222 | # Write ONLY these two files (the harness reverts anything else — this is a hard limit): | COMMENT |
| MEDIUM | scripts/bench/humaneval_run.sh | 6 | # It COMPOSES the single-case harness `humaneval_one.sh` (do NOT reinvent the | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 19 | # over the small inline problem set the single-case harness encodes. | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 28 | # from the single-case harness. Do NOT hardcode the list independently. | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 30 | # NOTE: this is a Kind:evolve script — a bench harness for yoyo's own capability | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 37 | # anywhere. The single-case harness resolves its own REPO_ROOT/cwd, so we only | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 100 | # other = the harness itself errored (crash, missing key, build failure). | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 101 | # We count both 1 and other as "not passed", but track harness errors distinctly | COMMENT |
| MEDIUM⚡ | scripts/bench/humaneval_run.sh | 102 | # so a harness bug isn't silently scored as a wrong answer. | COMMENT |
| MEDIUM | scripts/bench/humaneval_run.sh | 137 | # arithmetic if python3 is absent (matches the single-case harness's posture). | COMMENT |
| MEDIUM | scripts/bench/humaneval_run.sh | 149 | # headline so a harness bug is never silently scored as a wrong answer. | COMMENT |
| MEDIUM | src/commands_info.rs | 1292 | /// Uses serde_json for robust parsing. | COMMENT |
| MEDIUM | src/main.rs | 854 | // The caller already trims, but we should be robust to \n/doctor\n etc. | COMMENT |
| MEDIUM | src/format/markdown.rs | 169 | // Definitely not a fence, header, or block element — flush as inline text | COMMENT |
| MEDIUM | src/format/markdown.rs | 210 | // Definitely not a closing fence — flush as code content immediately | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | journals/JOURNAL.md | 1733 | Three planned, three shipped. Task 1 closed Issue #258 — the context window usage bar was stuck at 0% because I was read | CODE |
| MEDIUM⚡ | journals/JOURNAL.md | 1870 | Assessment and plan, no implementation. Scoped two tasks — retrying the `--fallback` provider failover (Issue #205, reve | CODE |
| MEDIUM⚡ | journals/JOURNAL.md | 1874 | Tagged v0.1.4 — the release that bundles everything from Days 24–28: SubAgentTool, AskUserTool, TodoTool, context manage | CODE |
| MEDIUM⚡ | journals/JOURNAL.md | 1876 | ## Day 27 — 18:39 — config path fix ships, context window dodges again (session 5?) | COMMENT |
| MEDIUM⚡ | journals/JOURNAL.md | 1878 | Two tasks planned, one shipped. Task 2 fixed the config path gap — the welcome message promised `~/.yoyo.toml` but the l | CODE |
| MEDIUM⚡ | journals/JOURNAL.md | 1880 | ## Day 26 — 23:22 — flaky tests and stream errors, but the context window dodges again | COMMENT |
| MEDIUM⚡ | journals/JOURNAL.md | 1882 | Two out of three shipped. Task 1 fixed the flaky todo tests — the global statics (`TODO_LIST`, `TODO_NEXT_ID`) were caus | CODE |
| MEDIUM⚡ | journals/JOURNAL.md | 1886 | Two tasks planned, one shipped — but it was the right one to finally land. TodoTool has been "retry" since Day 24, rever | CODE |
| MEDIUM⚡ | journals/JOURNAL.md | 1890 | Day 26 opens with assessment and planning — no code, just blueprints. Scoped two tasks: fixing the hardcoded 200K contex | CODE |
| MEDIUM | journals/JOURNAL.md | 2015 | Three community issues knocked out in one session. Removed the `benchmarks/` directory entirely (Issue #155) — it was sc | CODE |
| MEDIUM | journals/JOURNAL.md | 2037 | ## Day 21 — 16:24 — markdown rendering, architecture docs, and benchmark scaffolding | COMMENT |
| MEDIUM | journals/JOURNAL.md | 2278 | Added `/run <cmd>` and `!<cmd>` for executing shell commands directly from the REPL without going through the AI — no AP | CODE |
| MEDIUM | journals/llm-wiki.md | 17 | Added MCP documentation to the README so external agents can actually discover the server, created `mcp.json` as the sta | CODE |
| MEDIUM | journals/llm-wiki.md | 23 | Extended the MCP server with three new tools: `create_page`, `update_page`, and `agent_context` — so external agents can | CODE |
| MEDIUM⚡ | scripts/test_scan_commitments.py | 172 | # Defensive: LLM hallucinates an issue number we didn't pass in. | COMMENT |
| MEDIUM | scripts/scan_commitments.py | 328 | # hallucinations are a signal the prompt or model is misbehaving. | COMMENT |
| MEDIUM | skills/skill-creator/SKILL.md | 104 | ### 6. Generate the SKILL.md scaffold | COMMENT |
| MEDIUM | src/commands_session.rs | 156 | /// This runs BEFORE a prompt attempt (not after) to prevent overflow during agentic execution. | COMMENT |
| MEDIUM | src/commands_spawn.rs | 1023 | // failure is a dim note, never a blocker (#341, orchestration scale). | COMMENT |
| MEDIUM | src/commands_spawn.rs | 3059 | // --- spawn manifest (#341: codified/replayable orchestration) --- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/test_scan_commitments.py | 43 | def test_skips_issues_with_no_bot_comment(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 48 | def test_skips_issues_with_no_comments(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 53 | def test_finds_last_bot_comment(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 87 | def test_truncates_long_bodies(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 95 | def test_truncates_long_git_log(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 102 | def test_extracts_first_text_block(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 107 | def test_returns_none_for_malformed_json(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 111 | def test_returns_none_for_no_text_block(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 115 | def test_returns_none_for_empty_content(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 127 | def test_empty_issues_skips_api_call(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 133 | def test_issues_without_bot_comment_skip_api(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 140 | def test_renders_outstanding_block(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 158 | def test_no_outstanding_means_no_blocks(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 165 | def test_api_failure_returns_empty(self): | CODE |
| LOW⚡ | scripts/test_scan_commitments.py | 171 | def test_unknown_issue_number_in_response_is_skipped(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 69 | def test_includes_up_to_two_prior_comments(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 220 | def test_discussion_source_renders_discussion_header(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 238 | def test_missing_source_defaults_to_issue(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 255 | def test_issue_and_discussion_same_number_dont_collide(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 291 | def test_unknown_source_treated_as_issue(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 354 | def test_bot_comment_present_is_triaged(self): | CODE |
| LOW | scripts/test_scan_commitments.py | 377 | def test_bot_comment_dropped_by_unpaginated_fetch_is_false_negative(self): | CODE |
| LOW | scripts/format_discussions.py | 193 | def _paginate_replies_from_cursor(comment_id, start_cursor): | STRING |
| LOW | scripts/lint_evolve_heredocs.py | 24 | def find_param_expansion_blocks(src): | CODE |
| LOW | scripts/extract_trajectory.py | 278 | def collect_failed_ci_fingerprints(repo: str) -> list[tuple[str, list[str]]]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/gasp_shim.sh | 358 | except Exception as e: # one broken stream must not stop the others | CODE |
| LOW | scripts/gasp_shim.sh | 394 | except Exception as e: | CODE |
| LOW | scripts/yoyo_context.sh | 73 | except Exception as e: | CODE |
| MEDIUM | scripts/format_discussions.py | 243 | print(f"Error: REPO must be in 'owner/name' format, got: '{repo}'", file=sys.stderr) | CODE |
| MEDIUM | scripts/format_discussions.py | 249 | print(f"Error: invalid repo format: '{repo}'", file=sys.stderr) | CODE |
| MEDIUM | scripts/format_discussions.py | 312 | print("Error: repository not found in GraphQL response", file=sys.stderr) | STRING |
| LOW | scripts/evolve.sh | 592 | except Exception as e: | CODE |
| LOW | scripts/evolve.sh | 604 | except Exception: | CODE |
| LOW | scripts/evolve.sh | 1874 | except Exception: | CODE |
| LOW | scripts/create_address_book.sh | 125 | except Exception as e: | CODE |
| MEDIUM | scripts/create_address_book.sh | 126 | print(f'Error checking for existing Address Book: {e}', file=sys.stderr) | CODE |
| LOW | scripts/bench/humaneval_one.sh | 241 | except Exception as exc: # syntax error, import error, etc. | CODE |
| LOW | scripts/bench/humaneval_one.sh | 308 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/commands_update.rs | 18 | // Step 1: Check for latest version | COMMENT |
| LOW | src/commands_update.rs | 56 | // Step 2: Detect platform and find the right asset | COMMENT |
| LOW | src/commands_update.rs | 86 | // Step 3: Confirm with user | COMMENT |
| LOW | src/commands_update.rs | 101 | // Step 4: Download | COMMENT |
| LOW | src/commands_update.rs | 128 | // Step 5: Extract and replace | COMMENT |
| LOW | src/setup.rs | 224 | // Step 1: Choose provider | COMMENT |
| LOW | src/setup.rs | 262 | // Step 2: API key (skip for ollama, special flow for bedrock) | COMMENT |
| LOW | src/setup.rs | 437 | // Step 3: Model preference | COMMENT |
| LOW | src/setup.rs | 475 | // Step 4: Offer to save config (three choices) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/commands_update.rs | 18 | // Step 1: Check for latest version | COMMENT |
| LOW | src/commands_update.rs | 56 | // Step 2: Detect platform and find the right asset | COMMENT |
| LOW | src/commands_update.rs | 86 | // Step 3: Confirm with user | COMMENT |
| LOW | src/commands_update.rs | 101 | // Step 4: Download | COMMENT |
| LOW | src/commands_update.rs | 128 | // Step 5: Extract and replace | COMMENT |
| LOW | src/setup.rs | 224 | // Step 1: Choose provider | COMMENT |
| LOW | src/setup.rs | 262 | // Step 2: API key (skip for ollama, special flow for bedrock) | COMMENT |
| LOW | src/setup.rs | 437 | // Step 3: Model preference | COMMENT |
| LOW | src/setup.rs | 475 | // Step 4: Offer to save config (three choices) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/yoyo_context.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/reset_day.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/evolve.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/social.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/evolve-local.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/create_address_book.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/run_mutants.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/format_discussions.py | 491 | CODE | |
| LOW | scripts/scan_commitments.py | 197 | CODE | |
| LOW | scripts/scan_commitments.py | 255 | CODE | |
| LOW | scripts/lint_evolve_heredocs.py | 24 | CODE | |
| LOW | scripts/build_site.py | 52 | CODE | |
| LOW | scripts/refresh_sponsors.py | 331 | CODE | |
| LOW | scripts/format_issues.py | 133 | CODE | |
| LOW | scripts/extract_trajectory.py | 118 | CODE | |
| LOW | scripts/extract_trajectory.py | 278 | CODE | |
| LOW | scripts/extract_trajectory.py | 361 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration.rs | 1836 | .env("ANTHROPIC_API_KEY", "sk-test-fake-key") | CODE |
| LOW | tests/integration.rs | 1896 | .env("ANTHROPIC_API_KEY", "sk-test-fake-key") | CODE |
| LOW | src/commands_git_review.rs | 1083 | assert!(colored.contains("John Doe")); | CODE |
| LOW | src/commands_skill.rs | 1578 | "test@test.com", | CODE |
| LOW | src/commands_info.rs | 2446 | run(&["config", "user.email", "test@test.com"]); | CODE |
| LOW | src/commands_info.rs | 2788 | .args(["config", "user.email", "test@test.com"]) | CODE |
| LOW | src/prompt_retry.rs | 1419 | std::env::set_var(key, "fake-key"); | CODE |
| LOW | src/commands_git.rs | 2646 | .args(["config", "user.email", "test@test.com"]) | CODE |
| LOW | src/commands_spawn.rs | 2799 | .args(["config", "user.email", "test@test.com"]) | CODE |
| LOW | src/commands_file.rs | 1785 | .args(["config", "user.email", "test@test.com"]) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/skill_evolve_report.py | 22 | CODE | |
| LOW | scripts/skill_evolve_report.py | 23 | CODE | |
| LOW | scripts/extract_trajectory.py | 24 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/evolve.sh | 806 | # Check if assessment was produced | COMMENT |
| LOW | scripts/evolve.sh | 1009 | # Check if planning agent produced tasks | COMMENT |