🤗 ml-intern: an open-source ML engineer that reads papers, trains models, and ships ML models
This report presents the forensic synthetic code analysis of huggingface/ml-intern, a Python project with 10,644 GitHub stars. SynthScan v2.0 examined 65,192 lines of code across 193 source files, recording 1198 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 23.2 places this repository in the Moderate 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 1198 distinct pattern matches across 14 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 |
|---|---|---|---|---|
| LOW | frontend/src/components/UsageMeter.tsx | 50 | function billingUnavailableMessage(error: string | null | undefined): string | null { | CODE |
| LOW | frontend/src/hooks/useAgentChat.ts | 55 | function pendingApprovalItemsFromInfo(info: unknown): PendingApprovalItem[] | undefined { | CODE |
| LOW | frontend/src/lib/sse-chat-transport.ts | 153 | function approvalContinuationPrelude(parts: UIMessage['parts']): UIMessageChunk[] { | CODE |
| LOW | frontend/src/lib/sse-chat-transport.ts | 238 | function createRecoveredFinishedStream(): ReadableStream<UIMessageChunk> { | CODE |
| LOW⚡ | tests/unit/test_cli_rendering.py | 21 | def test_router_anthropic_research_model_is_unchanged(): | CODE |
| LOW⚡ | tests/unit/test_cli_rendering.py | 28 | def test_non_anthropic_research_model_is_unchanged(): | CODE |
| LOW⚡ | tests/unit/test_cli_rendering.py | 32 | def test_huggingface_prefix_research_model_strips_prefix(): | CODE |
| LOW⚡ | tests/unit/test_cli_rendering.py | 39 | def test_hf_router_openai_research_model_is_unchanged(): | CODE |
| LOW⚡ | tests/unit/test_cli_rendering.py | 46 | def test_help_output_keeps_descriptions_aligned(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 69 | def test_help_output_recomputes_widths_from_rows(): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 90 | def test_subagent_display_does_not_spawn_background_redraw(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 130 | def test_cli_forwards_model_flag_to_interactive_main(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 146 | def test_cli_forwards_sandbox_flag_to_interactive_main(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 161 | def test_cli_forwards_sandbox_flag_to_headless_main(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 201 | async def test_interactive_main_applies_model_override_before_banner(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 231 | async def test_local_model_local_runtime_skips_hf_token_prompt(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 264 | async def test_local_model_sandbox_runtime_prompts_for_hf_token(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 304 | async def test_interactive_main_passes_sandbox_runtime_to_tool_router(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 353 | async def test_interactive_main_passes_user_plan_to_submission_loop(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 443 | async def test_headless_main_passes_user_plan_to_submission_loop(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_rendering.py | 513 | async def test_initial_sandbox_preload_waits_before_prompt(): | CODE |
| LOW | tests/unit/test_doom_loop_polling.py | 41 | def test_polling_with_progressing_results_does_not_fire(): | CODE |
| LOW | tests/unit/test_doom_loop_polling.py | 56 | def test_truly_stuck_polling_with_identical_results_still_fires(): | CODE |
| LOW | tests/unit/test_doom_loop_polling.py | 73 | def test_identical_calls_with_no_results_yet_still_fires(): | CODE |
| LOW | tests/unit/test_doom_loop_polling.py | 87 | def test_different_args_does_not_fire(): | CODE |
| LOW | tests/unit/test_kpis_scheduler.py | 29 | def test_token_resolution_order(monkeypatch): | CODE |
| LOW | tests/unit/test_kpis_scheduler.py | 53 | def test_load_build_kpis_exposes_run_for_hour(): | CODE |
| LOW | tests/unit/test_kpis_scheduler.py | 60 | def test_backfill_calls_run_hour_for_each_hour(monkeypatch): | CODE |
| LOW | tests/unit/test_kpis_scheduler.py | 79 | def test_start_is_no_op_when_disabled(monkeypatch): | CODE |
| LOW | tests/unit/test_kpis_scheduler.py | 88 | def test_start_skips_cleanly_without_apscheduler(monkeypatch): | CODE |
| LOW | tests/unit/test_kpis_scheduler.py | 113 | def test_shutdown_is_no_op_when_not_started(): | CODE |
| LOW | tests/unit/test_session_uploader.py | 19 | def test_dataset_card_readme_has_metadata_and_public_warning(): | CODE |
| LOW | tests/unit/test_session_uploader.py | 40 | def test_upload_dataset_card_only_for_claude_code_format(): | CODE |
| LOW | tests/unit/test_session_uploader.py | 64 | def test_personal_token_env_takes_precedence_for_hf_token(monkeypatch): | CODE |
| LOW | tests/unit/test_session_uploader.py | 71 | def test_update_upload_status_preserves_other_uploader_fields(tmp_path): | CODE |
| LOW | tests/unit/test_session_uploader.py | 102 | def test_claude_code_jsonl_uses_message_timestamps(): | CODE |
| LOW | tests/unit/test_session_uploader.py | 136 | def test_row_payload_scrubs_messages_events_and_tools(tmp_path): | CODE |
| LOW | tests/unit/test_session_uploader.py | 161 | def test_row_payload_includes_usage_scalars_and_parseable_metrics(tmp_path): | CODE |
| LOW | tests/unit/test_session_uploader.py | 222 | def test_claude_code_payload_scrubs_messages_before_conversion(tmp_path): | CODE |
| LOW | tests/unit/test_session_uploader.py | 268 | def test_claude_code_payload_ignores_usage_metrics(tmp_path): | CODE |
| LOW | tests/unit/test_cli_new_clear.py | 53 | def test_start_new_conversation_rotates_session_state(monkeypatch): | CODE |
| LOW | tests/unit/test_cli_new_clear.py | 101 | async def test_new_submission_resets_context_and_reports_clear_flag(): | CODE |
| LOW | tests/unit/test_cli_new_clear.py | 122 | async def test_new_and_clear_slash_commands_share_operation_with_distinct_clear_flags(): | CODE |
| LOW | tests/unit/test_web_search_tool.py | 19 | def test_web_search_extracts_duckduckgo_results_and_filters_domains(monkeypatch): | CODE |
| LOW | tests/unit/test_web_search_tool.py | 65 | def test_web_search_decodes_duckduckgo_redirects(): | CODE |
| LOW | tests/unit/test_web_search_tool.py | 83 | def test_web_search_generic_fallback_dedupes_and_rejects_bad_base_url(monkeypatch): | CODE |
| LOW | tests/unit/test_web_search_tool.py | 114 | async def test_web_search_handler_returns_pretty_json(monkeypatch): | CODE |
| LOW | tests/unit/test_web_search_tool.py | 163 | def test_web_search_is_registered_for_llm(): | CODE |
| LOW | tests/unit/test_session_persistence.py | 16 | async def test_noop_store_keeps_local_cli_and_tests_db_free(): | CODE |
| LOW | tests/unit/test_session_persistence.py | 33 | def test_unsafe_message_payload_is_replaced_with_marker(): | CODE |
| LOW⚡ | tests/unit/test_session_persistence.py | 100 | async def test_mark_pro_seen_returns_none_when_unknown_user_starts_pro(): | CODE |
| LOW⚡ | tests/unit/test_session_persistence.py | 107 | async def test_mark_pro_seen_emits_conversion_after_seeing_user_as_free(): | CODE |
| LOW⚡ | tests/unit/test_session_persistence.py | 117 | async def test_mark_pro_seen_only_fires_conversion_once(): | CODE |
| LOW | tests/unit/test_session_persistence.py | 128 | async def test_noop_store_mark_pro_seen_returns_none(): | CODE |
| LOW | tests/unit/test_session_persistence.py | 176 | def _store_with_fake_usage_db(*, sessions, events) -> MongoSessionStore: | CODE |
| LOW | tests/unit/test_session_persistence.py | 184 | async def test_load_usage_events_scopes_mongo_queries_to_current_user_and_window(): | CODE |
| LOW | tests/unit/test_session_persistence.py | 219 | async def test_load_usage_events_dev_mode_uses_requested_session_without_user_filter(): | CODE |
| LOW | tests/unit/test_sandbox_script_resolution.py | 23 | async def test_resolve_sandbox_script_accepts_bare_python_filename(): | CODE |
| LOW | tests/unit/test_sandbox_script_resolution.py | 34 | async def test_resolve_sandbox_script_accepts_relative_python_path(): | CODE |
| LOW | tests/unit/test_sandbox_script_resolution.py | 54 | async def test_resolve_sandbox_script_ignores_non_path_scripts(script): | CODE |
| 616 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/src/theme.ts | 3 | // ── Shared tokens ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/theme.ts | 34 | // ── Dark palette ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/theme.ts | 71 | // ── Light palette ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/theme.ts | 108 | // ── Shared CSS baseline (scrollbar, code, brand-logo) ──────────── | COMMENT |
| MEDIUM | frontend/src/theme.ts | 175 | // ── Theme builders ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1100 | // ── Batch approval state ────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1112 | // ── Panel lock state (for auto-follow vs user-selected) ─────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1193 | // ── Send all decisions as a single batch ────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1262 | // ── Show tool panel (shared logic) ──────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1328 | // ── Panel click handler ─────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1346 | // ── Auto-follow currently active tool when not locked ───────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1373 | // ── Parse hf_jobs metadata from output ──────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/Chat/ToolCallGroup.tsx | 1384 | // ── Render ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/CodePanel/CodePanel.tsx | 22 | // ── Helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/CodePanel/CodePanel.tsx | 30 | // ── Markdown styles (adapts via CSS vars) ──────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/CodePanel/CodePanel.tsx | 89 | // ── View toggle button ────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/CodePanel/CodePanel.tsx | 128 | // ── Component ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/CodePanel/CodePanel.tsx | 236 | // ── Syntax-highlighted code block (DRY) ──────────────────────── | COMMENT |
| MEDIUM | frontend/src/components/CodePanel/CodePanel.tsx | 255 | // ── Content renderer ─────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 111 | // ── Per-session state map ─────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 115 | // ── Flat state (mirrors active session — UI reads from here) ──────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 154 | // ── Per-session actions ───────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 168 | // ── Global actions (not per-session) ──────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 310 | // ── Per-session state management ────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 395 | // ── Global flags ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 408 | // ── Panel (single-artifact) ─────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 453 | // ── Plan ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 460 | // ── Edited scripts ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | frontend/src/store/agentStore.ts | 472 | // ── Job URLs ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | frontend/src/store/agentStore.ts | 482 | // ── Job Statuses ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | frontend/src/store/agentStore.ts | 492 | // ── Trackio Dashboards ────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 512 | // ── Tool Errors ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 529 | // ── Tool Rejections ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/store/agentStore.ts | 541 | // ── Tool Budget Blocks ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_persistence.py | 40 | # ── mark_pro_seen ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_persistence.py | 134 | # ── load_usage_events ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 175 | # ── Reaper happy path ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 210 | # ── Spared sessions ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 245 | # ── Submit / reap race ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 283 | # ── Turn-finish timestamp ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 324 | # ── Global reservation race (Part B) ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 370 | # ── Per-user concurrent cap interacts with reclaimed slots (Part E) ────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 406 | # ── Persistence safety (resumability invariant) ────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 481 | # ── Reap / restore race ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_session_reaper.py | 532 | # ── Shutdown safety (cancellation must propagate) ──────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_llm_error_classification.py | 27 | # ── context overflow ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_llm_error_classification.py | 49 | # ── rate limit ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_llm_error_classification.py | 74 | # ── retry schedule selection ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_compaction_loop_break.py | 44 | # ── helpers ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_compaction_loop_break.py | 68 | # ── _truncate_oversized ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_compaction_loop_break.py | 135 | # ── compact() raises CompactionFailedError ───────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_compaction_loop_break.py | 295 | # ── _compact_and_notify behavior on CompactionFailedError ────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_doom_loop.py | 40 | # ── _normalize_args / _hash_args ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_doom_loop.py | 96 | # ── extract_recent_tool_signatures ────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_doom_loop.py | 127 | # ── detect_identical_consecutive ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_doom_loop.py | 167 | # ── detect_repeating_sequence ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_doom_loop.py | 198 | # ── check_for_doom_loop ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/session_manager.py | 181 | # ── Capacity limits ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/session_manager.py | 192 | # ── Idle-session reaper ───────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/session_manager.py | 1279 | # ── Capacity checks ────────────────────────────────────────── | COMMENT |
| 79 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | backend/session_manager.py | 913 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 105 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 392 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 619 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 836 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 967 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1051 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1149 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1380 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1392 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1418 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1431 | except Exception: | CODE |
| LOW | backend/session_manager.py | 1444 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1486 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1522 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1560 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1603 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1714 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1741 | except Exception as e: | CODE |
| LOW | backend/session_manager.py | 1913 | except Exception as e: | CODE |
| LOW | backend/main.py | 43 | except Exception as e: | CODE |
| LOW | backend/main.py | 58 | except Exception as e: | CODE |
| LOW | backend/main.py | 67 | except Exception as e: | CODE |
| LOW | backend/main.py | 81 | except Exception as e: | CODE |
| LOW | backend/kpis_scheduler.py | 84 | except Exception as e: | CODE |
| LOW⚡ | backend/routes/agent.py | 407 | except Exception: | CODE |
| LOW⚡ | backend/routes/agent.py | 412 | except Exception as e: | CODE |
| LOW⚡ | backend/routes/agent.py | 419 | except Exception: | CODE |
| LOW | backend/routes/agent.py | 99 | except Exception as e: | CODE |
| LOW | backend/routes/agent.py | 317 | except Exception as e: | CODE |
| LOW | backend/routes/agent.py | 449 | except Exception: | CODE |
| LOW | backend/routes/agent.py | 527 | except Exception as e: | CODE |
| LOW | backend/routes/agent.py | 684 | except Exception: | CODE |
| LOW | backend/routes/agent.py | 914 | except Exception: | CODE |
| LOW⚡ | agent/main.py | 103 | except Exception: | CODE |
| LOW | agent/main.py | 147 | except Exception: | CODE |
| LOW | agent/main.py | 198 | except Exception: | CODE |
| LOW | agent/main.py | 206 | except Exception as e: | CODE |
| LOW | agent/main.py | 853 | except Exception as e: | CODE |
| LOW | agent/main.py | 1141 | except Exception as e: | CODE |
| LOW | agent/main.py | 1171 | except Exception as e: | CODE |
| LOW | agent/tools/sandbox_client.py | 123 | except Exception: | CODE |
| LOW | agent/tools/sandbox_client.py | 351 | except Exception: | CODE |
| LOW | agent/tools/sandbox_client.py | 390 | except Exception as e: | CODE |
| LOW | agent/tools/sandbox_client.py | 425 | except Exception as e: | CODE |
| LOW | agent/tools/sandbox_client.py | 439 | except Exception as e: | CODE |
| LOW | agent/tools/sandbox_client.py | 466 | except Exception as e: | CODE |
| LOW | agent/tools/sandbox_client.py | 590 | except Exception: | STRING |
| LOW | agent/tools/sandbox_client.py | 652 | except Exception as e: | STRING |
| LOW | agent/tools/sandbox_client.py | 757 | except Exception as e: | STRING |
| LOW | agent/tools/sandbox_client.py | 800 | except Exception as e: | STRING |
| LOW | agent/tools/sandbox_client.py | 860 | except Exception as e: | STRING |
| LOW | agent/tools/hf_repo_files_tool.py | 72 | except Exception as e: | CODE |
| LOW | agent/tools/hf_repo_files_tool.py | 359 | except Exception as e: | CODE |
| LOW | agent/tools/local_tools.py | 36 | except Exception: | CODE |
| LOW | agent/tools/local_tools.py | 85 | except Exception: | CODE |
| LOW | agent/tools/local_tools.py | 135 | except Exception as e: | CODE |
| LOW | agent/tools/local_tools.py | 150 | except Exception as e: | CODE |
| LOW | agent/tools/local_tools.py | 194 | except Exception as e: | CODE |
| LOW | agent/tools/local_tools.py | 223 | except Exception as e: | CODE |
| 141 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_kpis_scheduler.py | 10 | CODE | |
| LOW | tests/unit/test_session_reaper.py | 8 | CODE | |
| LOW | tests/unit/test_compaction_loop_break.py | 28 | CODE | |
| LOW | tests/unit/test_session_manager_persistence.py | 3 | CODE | |
| LOW | tests/integration/test_live_thinking_models.py | 8 | CODE | |
| LOW | tests/integration/test_live_sandbox_auth.py | 9 | CODE | |
| LOW | backend/kpis_scheduler.py | 24 | CODE | |
| LOW | agent/__init__.py | 17 | CODE | |
| LOW | agent/tools/trackio_seed.py | 21 | CODE | |
| LOW | agent/tools/sandbox_client.py | 37 | CODE | |
| LOW | agent/tools/local_tools.py | 9 | CODE | |
| LOW | agent/tools/__init__.py | 5 | CODE | |
| LOW | agent/tools/__init__.py | 5 | CODE | |
| LOW | agent/tools/__init__.py | 9 | CODE | |
| LOW | agent/tools/__init__.py | 9 | CODE | |
| LOW | agent/tools/__init__.py | 13 | CODE | |
| LOW | agent/tools/__init__.py | 13 | CODE | |
| LOW | agent/tools/__init__.py | 17 | CODE | |
| LOW | agent/tools/__init__.py | 17 | CODE | |
| LOW | agent/tools/__init__.py | 21 | CODE | |
| LOW | agent/tools/__init__.py | 21 | CODE | |
| LOW | agent/tools/__init__.py | 21 | CODE | |
| LOW | agent/tools/__init__.py | 22 | CODE | |
| LOW | agent/tools/__init__.py | 23 | CODE | |
| LOW | agent/tools/__init__.py | 23 | CODE | |
| LOW | agent/tools/sandbox_tool.py | 12 | CODE | |
| LOW | agent/tools/web_search_tool.py | 8 | CODE | |
| LOW | agent/tools/edit_utils.py | 8 | CODE | |
| LOW | agent/core/effort_probe.py | 21 | CODE | |
| LOW | agent/core/session_resume.py | 3 | CODE | |
| LOW | agent/core/session_persistence.py | 8 | CODE | |
| LOW | agent/core/__init__.py | 6 | CODE | |
| LOW | agent/core/__init__.py | 6 | CODE | |
| LOW | agent/core/__init__.py | 6 | CODE | |
| LOW | agent/core/telemetry.py | 17 | CODE | |
| LOW | agent/core/redact.py | 10 | CODE | |
| LOW | agent/core/model_switcher.py | 16 | CODE | |
| LOW | agent/core/hf_access.py | 9 | CODE | |
| LOW | agent/core/hf_tokens.py | 3 | CODE | |
| LOW | agent/context_manager/__init__.py | 5 | CODE | |
| LOW | agent/sft/tagger.py | 28 | CODE | |
| LOW | agent/messaging/__init__.py | 1 | CODE | |
| LOW | agent/messaging/__init__.py | 2 | CODE | |
| LOW | agent/messaging/__init__.py | 2 | CODE | |
| LOW | agent/messaging/__init__.py | 2 | CODE | |
| LOW | agent/messaging/__init__.py | 2 | CODE | |
| LOW | scripts/build_sft.py | 34 | CODE | |
| LOW | scripts/build_kpis.py | 91 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/session_manager.py | 500 | CODE | |
| LOW | backend/session_manager.py | 1565 | CODE | |
| LOW | backend/session_manager.py | 1659 | CODE | |
| LOW | backend/usage.py | 186 | CODE | |
| LOW | backend/routes/agent.py | 284 | CODE | |
| LOW | agent/main.py | 364 | CODE | |
| LOW | agent/main.py | 925 | CODE | |
| LOW | agent/main.py | 1179 | CODE | |
| LOW | agent/main.py | 1423 | CODE | |
| LOW | agent/tools/sandbox_client.py | 806 | CODE | |
| LOW | agent/tools/github_list_repos.py | 15 | CODE | |
| LOW | agent/tools/docs_tools.py | 434 | CODE | |
| LOW | agent/tools/docs_tools.py | 673 | CODE | |
| LOW | agent/tools/sandbox_tool.py | 589 | CODE | |
| LOW | agent/tools/github_read_file.py | 20 | CODE | |
| LOW | agent/tools/github_read_file.py | 67 | CODE | |
| LOW | agent/tools/hf_repo_git_tool.py | 294 | CODE | |
| LOW | agent/tools/papers_tool.py | 62 | CODE | |
| LOW | agent/tools/papers_tool.py | 128 | CODE | |
| LOW | agent/tools/papers_tool.py | 698 | CODE | |
| LOW | agent/tools/jobs_tool.py | 322 | CODE | |
| LOW | agent/tools/jobs_tool.py | 417 | CODE | |
| LOW | agent/tools/jobs_tool.py | 528 | CODE | |
| LOW | agent/tools/edit_utils.py | 159 | CODE | |
| LOW | agent/tools/research_tool.py | 278 | CODE | |
| LOW | agent/core/effort_probe.py | 153 | CODE | |
| LOW | agent/core/session_resume.py | 38 | CODE | |
| LOW | agent/core/session_resume.py | 169 | CODE | |
| LOW | agent/core/tools.py | 64 | CODE | |
| LOW | agent/core/agent_loop.py | 832 | CODE | |
| LOW | agent/core/agent_loop.py | 937 | CODE | |
| LOW | agent/core/agent_loop.py | 1115 | CODE | |
| LOW | agent/core/agent_loop.py | 2624 | CODE | |
| LOW | agent/core/agent_loop.py | 1326 | CODE | |
| LOW | agent/core/session.py | 279 | CODE | |
| LOW | agent/core/session.py | 573 | CODE | |
| LOW | agent/core/doom_loop.py | 59 | CODE | |
| LOW | agent/core/cost_estimation.py | 171 | CODE | |
| LOW | agent/core/session_uploader.py | 106 | CODE | |
| LOW | agent/core/session_uploader.py | 140 | CODE | |
| LOW | agent/core/session_uploader.py | 459 | CODE | |
| LOW | agent/core/usage_metrics.py | 243 | CODE | |
| LOW | agent/utils/braille.py | 102 | CODE | |
| LOW | agent/utils/terminal_display.py | 325 | CODE | |
| LOW | agent/utils/terminal_display.py | 346 | CODE | |
| LOW | agent/utils/particle_logo.py | 63 | CODE | |
| LOW | agent/utils/crt_boot.py | 27 | CODE | |
| LOW | agent/sft/tagger.py | 181 | CODE | |
| LOW | agent/messaging/gateway.py | 126 | CODE | |
| LOW | scripts/build_sft.py | 63 | CODE | |
| LOW | scripts/build_kpis.py | 167 | CODE | |
| LOW | scripts/build_kpis.py | 228 | CODE | |
| LOW | scripts/prioritize_backlog.py | 469 | CODE | |
| LOW | scripts/prioritize_backlog.py | 937 | CODE | |
| LOW | scripts/prioritize_backlog.py | 1030 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_session_manager_persistence.py | 112 | async def update_session_fields(self, session_id: str, **fields: Any) -> None: | CODE |
| LOW | tests/unit/test_session_resume.py | 73 | def update_model(self, model_name: str) -> None: | CODE |
| LOW | backend/session_manager.py | 65 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/session_manager.py | 1877 | async def update_session_title(self, session_id: str, title: str | None) -> None: | CODE |
| LOW | backend/main.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/kpis_scheduler.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/usage.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/dependencies.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/auth.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/routes/agent.py | 70 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/__init__.py | 19 | __all__ = ["submission_loop"] | CODE |
| LOW | agent/main.py | 62 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/tools/__init__.py | 25 | __all__ = [ | CODE |
| LOW⚡ | agent/tools/sandbox_tool.py | 296 | async def _update_persisted_sandbox_fields(session: Any, **fields: Any) -> None: | CODE |
| LOW | agent/tools/sandbox_tool.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/tools/jobs_tool.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/tools/research_tool.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/effort_probe.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/session_resume.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/session_persistence.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/session_persistence.py | 86 | async def update_session_fields(self, *_: Any, **__: Any) -> None: | CODE |
| LOW | agent/core/session_persistence.py | 347 | async def update_session_fields(self, session_id: str, **fields: Any) -> None: | CODE |
| LOW | agent/core/tools.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/agent_loop.py | 64 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | agent/core/session.py | 238 | def set_notification_destinations(self, destinations: list[str]) -> None: | CODE |
| LOW | agent/core/session.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/session.py | 374 | def update_model(self, model_name: str) -> None: | CODE |
| LOW | agent/core/hub_artifacts.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/__init__.py | 8 | __all__ = [ | CODE |
| LOW | agent/core/telemetry.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/doom_loop.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/core/yolo_budget.py | 51 | def _set_session_spend(session: Any, amount_usd: float) -> None: | CODE |
| LOW | agent/core/hf_router_catalog.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/context_manager/__init__.py | 7 | __all__ = ["ContextManager"] | CODE |
| LOW | agent/context_manager/manager.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/utils/braille.py | 33 | def set_pixel(self, x: int, y: int) -> None: | CODE |
| LOW | agent/utils/terminal_display.py | 217 | def set_tokens(self, agent_id: str, tokens: int) -> None: | CODE |
| LOW | agent/utils/terminal_display.py | 221 | def set_tool_count(self, agent_id: str, count: int) -> None: | CODE |
| LOW | agent/messaging/gateway.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/messaging/__init__.py | 9 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/test_doom_loop_polling.py | 5 | long-running job with `bash sleep 300 && wc -l output` four times in a | STRING |
| HIGH | tests/unit/test_doom_loop_polling.py | 38 | _POLL_ARGS = '{"command": "sleep 300 && ls /app/images/ | wc -l"}' | CODE |
| HIGH | tests/unit/test_hub_artifacts.py | 394 | "pip install -q datasets huggingface_hub && python -c " | STRING |
| HIGH | agent/tools/sandbox_client.py | 965 | " kill -0 <PID> 2>/dev/null && echo 'running' || echo 'done'\n" | STRING |
| HIGH | agent/tools/local_tools.py | 132 | f" kill -0 <PID> 2>/dev/null && echo 'running' || echo 'done'\n" | CODE |
| HIGH | agent/tools/local_tools.py | 270 | " kill -0 <PID> 2>/dev/null && echo 'running' || echo 'done'\n" | CODE |
| HIGH | agent/core/hub_artifacts.py | 753 | '_ml_intern_artifacts_dir="$(mktemp -d 2>/dev/null)" ' | CODE |
| HIGH | agent/core/session_uploader.py | 146 | "uuid":"...","parentUuid":null,"sessionId":"...","timestamp":"..."} | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/start.sh | 12 | # Check if this was a port-in-use failure (another instance already running) | COMMENT |
| LOW | agent/main.py | 582 | # Check if this is Python mode (script) or Docker mode (command) | COMMENT |
| LOW | agent/tools/github_list_repos.py | 137 | # Check if we got fewer results than requested (last page) | COMMENT |
| LOW | agent/tools/github_read_file.py | 147 | # Check if it's a file | COMMENT |
| LOW | agent/tools/jobs_tool.py | 445 | # Push line to queue thread-safely | COMMENT |
| LOW | agent/tools/github_find_examples.py | 186 | # Check if file is in examples/ directory (highest priority) | COMMENT |
| LOW | agent/tools/github_find_examples.py | 195 | # Check if pattern appears as a directory component in the path | COMMENT |
| LOW⚡ | agent/core/tools.py | 252 | # Check if this is a built-in tool with a handler | COMMENT |
| LOW⚡ | agent/core/tools.py | 257 | # Check if handler accepts session argument | COMMENT |
| LOW⚡ | agent/core/tools.py | 260 | # Check if handler also accepts tool_call_id parameter | COMMENT |
| LOW | agent/core/agent_loop.py | 278 | # Check if this is a CPU-only job | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/tools/sandbox_client.py | 543 | CODE | |
| LOW | agent/core/session_persistence.py | 166 | CODE | |
| LOW | agent/core/session_persistence.py | 227 | CODE | |
| LOW | agent/core/agent_loop.py | 2624 | CODE | |
| LOW | agent/core/session.py | 103 | CODE | |
| LOW | agent/core/redact.py | 51 | CODE | |
| LOW | agent/context_manager/manager.py | 196 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/tools/github_find_examples.py | 311 | # Step 1: Filter files by example patterns (score >= 60) | COMMENT |
| LOW | agent/tools/github_find_examples.py | 326 | # Step 2: If keyword provided, score and filter by keyword | COMMENT |
| LOW | agent/prompts/system_prompt_v2.yaml | 53 | ### Step 1: Create Execution Plan | COMMENT |
| LOW | agent/prompts/system_prompt_v2.yaml | 77 | ### Step 2: Discover & Validate Resources | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/tools/github_find_examples.py | 311 | # Step 1: Filter files by example patterns (score >= 60) | COMMENT |
| LOW | agent/tools/github_find_examples.py | 326 | # Step 2: If keyword provided, score and filter by keyword | COMMENT |
| LOW | agent/prompts/system_prompt_v2.yaml | 53 | ### Step 1: Create Execution Plan | COMMENT |
| LOW | agent/prompts/system_prompt_v2.yaml | 77 | ### Step 2: Discover & Validate Resources | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_thinking_history.py | 110 | CODE | |
| MEDIUM | tests/unit/test_thinking_history.py | 219 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | agent/core/agent_loop.py | 2263 | # Create a map of tool_call_id -> approval decision | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/session_manager.py | 1161 | # recreates files/packages instead of assuming /app/train.py et al. still | COMMENT |
| LOW | agent/context_manager/manager.py | 581 | idx = len(self.items) - self.untouched_messages | COMMENT |