Archived — ML Intern is no longer maintained. Continue with HuggingChat.
This report summarizes scanner evidence for huggingface/ml-intern, a Python project with 10,807 GitHub stars. SynthScan examined 65,225 lines of code across 193 source files, recording 1235 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 25.8 (Elevated 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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 763 finding(s).
Are imports declared and package/API names verified? 56 finding(s).
Are wrappers, guards, and repeated structures necessary? 1102 finding(s).
Which changes need focused human review? 1235 finding(s).
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.
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.
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.
The scanner identified 1235 distinct pattern matches across 15 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.
| 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_retired_web_app.py | 16 | def test_retirement_status_points_to_huggingchat(): | CODE |
| LOW | tests/unit/test_retired_web_app.py | 27 | def test_retired_server_serves_static_frontend(tmp_path): | CODE |
| LOW | tests/unit/test_retired_web_app.py | 49 | def test_retired_server_does_not_expose_application_routes(path): | 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 |
| 619 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 |
|---|---|---|---|---|
| HIGH | backend/session_manager.py | 153 | except AttributeError: | CODE |
| HIGH | backend/session_manager.py | 496 | except AttributeError: | CODE |
| HIGH | backend/session_manager.py | 1431 | except Exception: | CODE |
| HIGH | backend/session_manager.py | 235 | except asyncio.CancelledError: | CODE |
| HIGH | backend/session_manager.py | 1724 | except asyncio.CancelledError: | CODE |
| HIGH | backend/session_manager.py | 1860 | except asyncio.CancelledError: | CODE |
| HIGH | backend/kpis_scheduler.py | 136 | except RuntimeError: | CODE |
| HIGH | backend/routes/auth.py | 159 | except httpx.HTTPError: | CODE |
| HIGH | agent/main.py | 239 | except OSError: | CODE |
| HIGH | agent/main.py | 1391 | except KeyboardInterrupt: | CODE |
| HIGH | agent/main.py | 304 | except asyncio.CancelledError: | CODE |
| HIGH | agent/main.py | 1397 | except (NotImplementedError, RuntimeError): | CODE |
| HIGH | agent/tools/sandbox_client.py | 590 | except Exception: | CODE |
| HIGH | agent/tools/local_tools.py | 85 | except Exception: | CODE |
| HIGH | agent/tools/local_tools.py | 63 | except OSError: | CODE |
| HIGH | agent/tools/github_list_repos.py | 106 | except Exception: | CODE |
| HIGH | agent/tools/sandbox_tool.py | 557 | except Exception: | CODE |
| HIGH | agent/tools/github_read_file.py | 136 | except Exception: | CODE |
| HIGH | agent/tools/dataset_tools.py | 94 | except Exception: | CODE |
| HIGH | agent/tools/research_tool.py | 351 | except Exception: | CODE |
| HIGH | agent/core/session_persistence.py | 48 | except (InvalidDocument, OverflowError): | CODE |
| HIGH | agent/core/agent_loop.py | 2463 | except asyncio.CancelledError: | CODE |
| HIGH | agent/core/agent_loop.py | 1783 | except asyncio.CancelledError: | CODE |
| HIGH | agent/core/yolo_budget.py | 363 | except Exception: | CODE |
| HIGH | agent/core/session_uploader.py | 621 | except Exception: | CODE |
| HIGH | agent/core/session_uploader.py | 576 | except Exception: | CODE |
| HIGH | agent/core/session_uploader.py | 538 | except Exception: | CODE |
| HIGH | agent/core/hf_router_catalog.py | 125 | except Exception: | CODE |
| HIGH | agent/messaging/gateway.py | 59 | except asyncio.CancelledError: | CODE |
| HIGH | scripts/build_sft.py | 141 | except Exception: | CODE |
| HIGH | scripts/build_kpis.py | 621 | except Exception: | CODE |
| HIGH | scripts/prioritize_backlog.py | 1254 | except json.JSONDecodeError: | CODE |
| HIGH | scripts/prioritize_backlog.py | 1261 | except json.JSONDecodeError: | CODE |
| HIGH | scripts/prioritize_backlog.py | 1269 | except json.JSONDecodeError: | CODE |
| 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 | 13 | # 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 |