The Harness of Harnesses: a trusted, persistent, self-evolving multi-agent ecosystem for all-domain collaboration.
This report presents the forensic synthetic code analysis of EverMind-AI/Raven, a Python project with 3,674 GitHub stars. SynthScan v2.0 examined 384,131 lines of code across 1484 source files, recording 10864 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 43.2 places this repository in the Strong 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 10864 distinct pattern matches across 21 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 | ui-tui/src/gatewayTypes.ts | 30 | // ── Commands / completion ──────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 57 | // ── Config ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 123 | // ── Session lifecycle ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 244 | // ── Prompt / submission ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 274 | // ── Shell / clipboard / input ──────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 305 | // ── Image attach ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 315 | // ── Voice ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 332 | // ── Tools (TS keeps configure since it resets local history) ───────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 343 | // ── Model picker ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 385 | // ── MCP ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 432 | // ── Subagent events ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 461 | // ── Delegation control RPCs ────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/gatewayTypes.ts | 488 | // ── Spawn-tree snapshots ───────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/theme.ts | 72 | // ── Color math ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/theme.ts | 105 | // ── Brand ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/theme.ts | 125 | // ── Brand yellow ramp (gradient logo / 3D shadow) ──────────────────── | COMMENT |
| MEDIUM | ui-tui/src/theme.ts | 206 | // ── Tier 3: truecolor (source of truth) ────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/theme.ts | 467 | // ── Light/dark detection ───────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/theme.ts | 685 | // ── Skin → Theme ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/demo/gallery.tsx | 36 | // ── Mock data ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/demo/gallery.tsx | 120 | // ── Section wrapper ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/demo/gallery.tsx | 131 | // ── Pages ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/demo/gallery.tsx | 260 | // ── Shell ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/app/delegationStore.ts | 36 | // ── Overlay accordion open-state ────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/app/slash/commands/ops.ts | 364 | // ── Disk-backed listing ───────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/app/slash/commands/ops.ts | 394 | // ── Disk-backed load by path ───────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/app/slash/commands/ops.ts | 421 | // ── In-memory nav (same-session) ───────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/branding.tsx | 183 | // ── Collapsible helpers ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/branding.tsx | 212 | // ── SessionPanel ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 42 | // ── Types + lookup tables ──────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 98 | // ── Pure helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 135 | // ── Sub-components ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 687 | // ── Main overlay ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 714 | // ── Derived state ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 737 | // ── Effects ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 787 | // ── Actions ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 844 | // ── Input ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 950 | // ── Header assembly ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/agentsOverlay.tsx | 982 | // ── Rendering ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 915 | // ── Key entry stage ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 999 | // ── Add model name stage ───────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 1044 | // ── Endpoint list stage ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 1114 | // ── Add endpoint stage ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 1179 | // ── OAuth sign-in stage ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 1244 | // ── Disconnect confirmation stage ───────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 1287 | // ── Provider selection stages ──────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/modelPicker.tsx | 1358 | // ── Model selection stage ──────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 64 | // ── Primitives ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 582 | // ── Thinking ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 642 | // ── ToolTrail ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 751 | // ── Build groups + meta ──────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 838 | // ── Derived ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 874 | // ── Backstop: floating alerts when every panel is hidden ───────── | COMMENT |
| MEDIUM | ui-tui/src/components/thinking.tsx | 903 | // ── Tree render fragments ────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/__tests__/sessionManagement.test.ts | 15 | // ── helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/__tests__/sessionManagement.test.ts | 89 | // ── /sessions command parsing ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/__tests__/sessionManagement.test.ts | 252 | // ── /sessions delete fallback surfaces errors ────────────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/__tests__/sessionManagement.test.ts | 309 | // ── /clear is an alias of /new (both mint a fresh session) ──────────────────── | COMMENT |
| MEDIUM | ui-tui/src/__tests__/sessionManagement.test.ts | 360 | // ── sid reconciliation: turn path uses minted sid ───────────────────────────── | COMMENT |
| MEDIUM | ui-tui/src/__tests__/sessionManagement.test.ts | 425 | // ── /export command ───────────────────────────────────────────────────────── | COMMENT |
| 1966 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui-tui/packages/hermes-ink/src/ink/squash-text-nodes.ts | 24 | export function squashTextNodesToSegments( | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/output.ts | 622 | function styledCharsWithGraphemeClustering(chars: StyledChar[], stylePool: StylePool): ClusteredChar[] { | CODE |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 1422 | function blitEscapingAbsoluteDescendants( | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/colorize.ts | 27 | function boostChalkLevelForXtermJs(): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/colorize.ts | 75 | export function shouldClampForAppleTerminal( | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/colorize.ts | 82 | function clampChalkLevelForAppleTerminal(): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/parse-keypress.ts | 718 | function normalizeSgrMouseFragment(fragment: string): string { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/parse-keypress.ts | 736 | function parseTextWithSgrMouseFragments( | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/node-cache.ts | 54 | export function consumeAbsoluteRemovedFlag(): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/terminal.ts | 34 | export function isProgressReportingAvailable(): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/terminal.ts | 76 | export function isSynchronizedOutputSupported(): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/terminal.ts | 177 | export function needsAltScreenResizeScrollbackClear(env: NodeJS.ProcessEnv = process.env): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/terminal.ts | 224 | export function isExtendedKeysCapableByXtversion(name: string): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/terminal.ts | 240 | export function hasCursorUpViewportYankBug(): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/screen.ts | 1203 | export function extractHyperlinkFromStyles(styles: AnsiCode[]): Hyperlink | null { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/ink/termio/osc.ts | 92 | export function shouldEmitClipboardSequence(env: NodeJS.ProcessEnv = process.env): boolean { | CODE |
| LOW | ui-tui/packages/hermes-ink/src/bootstrap/state.ts | 3 | export function updateLastInteractionTime(): void {} | CODE |
| LOW | ui-tui/src/app.tsx | 20 | function useTerminalBackgroundProbe() { | CODE |
| LOW | ui-tui/src/theme.ts | 619 | export function resolveCurrentDefaultTheme(): Theme { | CODE |
| LOW | ui-tui/src/app/createGatewayEventHandler.ts | 49 | export function createGatewayEventHandler(ctx: GatewayEventHandlerContext): (ev: GatewayEvent) => void { | CODE |
| LOW | ui-tui/src/hooks/useCompletion.ts | 63 | export function completionRequestForInput( | CODE |
| LOW | ui-tui/src/lib/clipboard.ts | 258 | export function createCopyOnSelectReporter(): ( | CODE |
| LOW | ui-tui/src/lib/precisionWheel.ts | 21 | export function computePrecisionWheelStep( | CODE |
| LOW | ui-tui/src/lib/terminalSetup.ts | 280 | export async function configureTerminalKeybindings( | CODE |
| LOW | ui-tui/src/lib/terminalSetup.ts | 394 | export async function configureDetectedTerminalKeybindings(options?: { | CODE |
| LOW | ui-tui/src/lib/terminalSetup.ts | 412 | export async function shouldPromptForTerminalSetup(options?: { | CODE |
| LOW⚡ | tests/test_agent_loop_tool_search.py | 71 | def test_enabled_registers_meta_tools(workspace) -> None: | CODE |
| LOW⚡ | tests/test_agent_loop_tool_search.py | 78 | def test_strategy_registered_first(workspace) -> None: | CODE |
| LOW⚡ | tests/test_agent_loop_tool_search.py | 88 | def test_disabled_registers_nothing(workspace) -> None: | CODE |
| LOW⚡ | tests/test_agent_loop_tool_search.py | 95 | def test_none_config_registers_nothing(workspace) -> None: | CODE |
| LOW⚡ | tests/test_agent_loop_tool_search.py | 102 | async def test_enabled_loop_keeps_interaction_primitives_visible(workspace) -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 370 | def test_credential_status_false_for_flat_key_and_keyless_endpoint() -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 378 | def test_credential_status_true_when_the_endpoint_itself_has_a_key() -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 386 | def test_credential_status_ok_for_an_endpoints_only_section() -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 394 | def test_credential_status_not_ok_when_every_endpoint_key_is_empty() -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 402 | def test_a_provider_whose_key_lives_in_a_list_sends_a_key(tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 539 | def test_key_refusal_names_a_reason_for_vendors_a_key_cannot_configure(vendor: str) -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 545 | def test_key_refusal_chatgpt_points_at_ravens_own_oauth_path() -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 553 | def test_key_refusal_is_none_for_vendors_a_key_configures(vendor: str) -> None: | CODE |
| LOW⚡ | tests/test_provider_auth_method.py | 558 | def test_key_refusal_normalizes_hyphen_and_case() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 202 | def test_every_gate_gives_the_same_verdict(name: str, tmp_path: Path) -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 214 | def test_a_key_in_the_plural_field_is_a_configured_provider(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 228 | def test_a_key_in_an_endpoints_entry_is_a_configured_provider(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 241 | def test_an_endpoints_list_with_every_key_empty_is_not_configured(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 249 | def test_flat_key_does_not_paper_over_a_keyless_endpoint(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 266 | def test_endpoints_without_their_own_base_inherit_the_flat_one_at_the_gate() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 287 | def test_a_spec_shipped_default_address_satisfies_the_address_requirement() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 301 | def test_the_key_hint_names_endpoint_add_when_endpoints_exist() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 317 | def test_the_gate_never_accepts_a_default_address_the_reader_will_not_serve() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 334 | def test_the_hint_ignores_a_duck_typed_endpoints_attribute_like_the_gate() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 350 | def test_a_default_the_reader_never_serves_does_not_satisfy_the_gate() -> None: | CODE |
| LOW | tests/test_provider_auth_method.py | 420 | def test_only_the_auth_module_decides_configuredness_from_a_key() -> None: | CODE |
| LOW⚡ | tests/test_rpc_schema_match.py | 340 | def test_schema_match_cli_dispatch(methods_by_name: dict[str, dict[str, Any]], schema: dict[str, Any]) -> None: | CODE |
| LOW⚡ | tests/test_rpc_schema_match.py | 346 | def test_schema_match_session_create(methods_by_name: dict[str, dict[str, Any]], schema: dict[str, Any]) -> None: | CODE |
| LOW⚡ | tests/test_rpc_schema_match.py | 352 | def test_schema_match_turn_event_discriminated_union(schema: dict[str, Any]) -> None: | CODE |
| LOW⚡ | tests/test_rpc_schema_match.py | 390 | def test_method_params_match_schema( | CODE |
| LOW⚡ | tests/test_rpc_schema_match.py | 400 | def test_method_result_matches_schema( | CODE |
| LOW | tests/test_rpc_schema_match.py | 432 | def test_error_codes_match_spec(schema: dict[str, Any]) -> None: | CODE |
| LOW⚡ | tests/test_segments.py | 79 | async def test_identity_matches_legacy(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/test_segments.py | 84 | async def test_bootstrap_none_when_no_files(self, tmp_path: Path) -> None: | CODE |
| 5789 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hatch_build.py | 20 | CODE | |
| LOW | tests/test_agent_loop_tool_search.py | 9 | CODE | |
| LOW | tests/test_provider_auth_method.py | 26 | CODE | |
| LOW | tests/test_rpc_schema_match.py | 28 | CODE | |
| LOW | tests/test_segments.py | 7 | CODE | |
| LOW | tests/test_agent_loop_token_budget.py | 17 | CODE | |
| LOW | tests/test_tracing_api.py | 8 | CODE | |
| LOW | tests/test_everos_backend.py | 10 | CODE | |
| LOW | tests/test_bedrock_stub.py | 13 | CODE | |
| LOW | tests/test_event_wake.py | 13 | CODE | |
| LOW | tests/test_shell_approval.py | 1 | CODE | |
| LOW | tests/test_cli_theme.py | 9 | CODE | |
| LOW | tests/test_provider_resolution_invariants.py | 20 | CODE | |
| LOW | tests/test_tui_rpc_reload.py | 7 | CODE | |
| LOW | tests/test_context_assembler_attention_behaviors.py | 13 | CODE | |
| LOW | tests/test_evolver_scoring.py | 8 | CODE | |
| LOW | tests/test_cli_tui_fork.py | 15 | CODE | |
| LOW | tests/test_skill_forge_loader_parity.py | 11 | CODE | |
| LOW | tests/test_everos_plugin_discovery.py | 22 | CODE | |
| LOW | tests/test_cli_channel_commands.py | 8 | CODE | |
| LOW | tests/test_cli_sentinel_commands.py | 6 | CODE | |
| LOW | tests/test_error_classification.py | 8 | CODE | |
| LOW | tests/test_agent_loop_response_modifier.py | 15 | CODE | |
| LOW | tests/test_cli_tui_commands.py | 8 | CODE | |
| LOW | tests/test_provider_rates.py | 8 | CODE | |
| LOW | tests/test_security_trust.py | 3 | CODE | |
| LOW | tests/test_cli_deep_research_commands.py | 8 | CODE | |
| LOW | tests/test_proactive_stack_migration.py | 3 | CODE | |
| LOW | tests/test_proactivity_prefs.py | 7 | CODE | |
| LOW | tests/test_sandbox_unit.py | 6 | CODE | |
| LOW | tests/test_routine_learner.py | 7 | CODE | |
| LOW | tests/test_tool_registry_timeout.py | 12 | CODE | |
| LOW | tests/conftest.py | 7 | CODE | |
| LOW | tests/test_config_update_everos.py | 10 | CODE | |
| LOW | tests/test_tui_rpc_session.py | 15 | CODE | |
| LOW | tests/test_tui_rpc_reasoning_render.py | 13 | CODE | |
| LOW | tests/test_everos_server.py | 3 | CODE | |
| LOW | tests/test_cli_import_commands.py | 3 | CODE | |
| LOW | tests/test_config_raven_sections.py | 3 | CODE | |
| LOW | tests/test_skill_forge_local_pool.py | 3 | CODE | |
| LOW | tests/test_tui_rpc_config.py | 13 | CODE | |
| LOW | tests/test_minimax_oauth.py | 1 | CODE | |
| LOW | tests/test_memory_backend_protocol.py | 3 | CODE | |
| LOW | tests/test_agent_loop_stream.py | 9 | CODE | |
| LOW | tests/test_importer_claude_code_scanner.py | 3 | CODE | |
| LOW | tests/test_cli_stacks.py | 16 | CODE | |
| LOW | tests/test_cli_stacks.py | 163 | CODE | |
| LOW | tests/test_config_loader.py | 7 | CODE | |
| LOW | tests/test_foresight_persistence.py | 11 | CODE | |
| LOW | tests/test_routine_store.py | 3 | CODE | |
| LOW | tests/test_skill_forge_gate.py | 3 | CODE | |
| LOW | tests/test_tool_registry_execute.py | 10 | CODE | |
| LOW | tests/test_tui_rpc_system.py | 13 | CODE | |
| LOW | tests/test_memory_behaviors.py | 3 | CODE | |
| LOW | tests/test_tui_turn_logging.py | 9 | CODE | |
| LOW | tests/test_cron_service_validation.py | 10 | CODE | |
| LOW | tests/test_skill_hub_source.py | 10 | CODE | |
| LOW | tests/test_sentinel_observations_producer.py | 11 | CODE | |
| LOW | tests/test_cli_skill_commands.py | 7 | CODE | |
| LOW | tests/test_read_file_image.py | 7 | CODE | |
| 1316 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_error_classification.py | 82 | except Exception as e: | CODE |
| LOW⚡ | tests/test_error_classification.py | 84 | except Exception as outer: | CODE |
| LOW | tests/test_provider_catalog.py | 495 | except Exception: | CODE |
| LOW | tests/test_cli_gateway_spine.py | 237 | except Exception: | CODE |
| LOW | tests/test_sandbox_debug_server.py | 865 | except Exception: | CODE |
| LOW | tests/test_sandbox_debug_server.py | 952 | except Exception: | CODE |
| LOW | tests/test_sandbox_debug_server.py | 1026 | except Exception: | CODE |
| LOW | tests/test_sandbox_debug_server.py | 1102 | except Exception: | CODE |
| LOW | tests/test_sandbox_debug_server.py | 1175 | except Exception: | CODE |
| LOW | tests/test_sandbox_debug_server.py | 1290 | except Exception: | CODE |
| LOW | tests/test_decision_consumer.py | 383 | except Exception: | CODE |
| LOW | tests/tui/autotest/cli.py | 131 | except Exception: | CODE |
| LOW | tests/integration/test_everos_channel_e2e.py | 61 | except Exception: | CODE |
| MEDIUM | tests/integration/test_everos_channel_e2e.py | 58 | def _runtime_ready() -> bool: | CODE |
| LOW | tests/integration/test_sandbox_cli_real_vm.py | 79 | except Exception as exc: | CODE |
| LOW⚡ | tests/integration/test_sandbox_cli_real_vm.py | 131 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_sandbox_cli_real_vm.py | 135 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_sandbox_cli_real_vm.py | 142 | except Exception: | CODE |
| LOW | tests/integration/test_knn_routing_real_llm.py | 42 | except Exception: | CODE |
| MEDIUM | tests/integration/test_knn_routing_real_llm.py | 39 | def _embed_reachable() -> bool: | CODE |
| LOW⚡ | …ntegration/test_token_wise_hermes_vs_raven_real_llm.py | 362 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_token_wise_ablation_real_llm.py | 299 | except Exception as e: | CODE |
| LOW | tests/integration/test_provider_real_llm.py | 44 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_token_wise_workload_real_llm.py | 360 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_token_wise_workload_real_llm.py | 448 | except Exception as e: | CODE |
| LOW | tests/integration/test_sandbox_real_vm.py | 54 | except Exception as exc: | CODE |
| LOW | docs/Proactivity-Implementation.md | 189 | except Exception: | CODE |
| LOW | raven/__init__.py | 40 | except Exception: | CODE |
| LOW | raven/tracing/trace.py | 118 | except Exception: # noqa: BLE001 — tracing must never break the host | CODE |
| LOW | raven/tracing/trace.py | 185 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/trace.py | 286 | except Exception: # noqa: BLE001 — open must never break the host | CODE |
| LOW⚡ | raven/tracing/trace.py | 293 | except Exception as exc: | CODE |
| LOW | raven/tracing/trace.py | 319 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/trace.py | 362 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/trace.py | 370 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/trace.py | 377 | except Exception: # noqa: BLE001 — extraction must not break the host | CODE |
| LOW | raven/tracing/config.py | 54 | except Exception: | CODE |
| LOW | raven/tracing/spans.py | 93 | except Exception: # noqa: BLE001 — tracing must never break the host | CODE |
| LOW | raven/tracing/spans.py | 100 | except Exception: # noqa: BLE001 | CODE |
| LOW | raven/tracing/usage.py | 46 | except Exception: # noqa: BLE001 — pricing is best-effort; never break tracing | CODE |
| LOW⚡ | raven/tracing/semconv.py | 47 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/semconv.py | 52 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/semconv.py | 57 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | raven/tracing/semconv.py | 65 | except Exception: # noqa: BLE001 | CODE |
| LOW | raven/tracing/semconv.py | 124 | except Exception: # noqa: BLE001 | CODE |
| LOW | raven/token_wise/registry.py | 81 | except Exception as e: | CODE |
| LOW | raven/token_wise/usage_tracker.py | 149 | except Exception as e: | CODE |
| LOW | raven/token_wise/PLAN.md | 68 | except Exception as e: | CODE |
| LOW | raven/token_wise/PLAN.md | 107 | except Exception: | CODE |
| MEDIUM | raven/token_wise/PLAN.md | 101 | def estimate_cost(model, input_tok, output_tok, cache_read, cache_write) -> floa | CODE |
| LOW | raven/importer/hermes_user_md.py | 157 | except Exception as exc: | CODE |
| LOW | raven/importer/orchestrator.py | 140 | except Exception as e: | CODE |
| LOW | raven/spine/delivery.py | 192 | except Exception as exc: | CODE |
| LOW | raven/spine/scheduler.py | 278 | except Exception as exc: | CODE |
| LOW | raven/config/loader.py | 273 | except Exception as exc: | CODE |
| LOW | raven/config/update_providers.py | 157 | except Exception: | CODE |
| LOW | raven/config/update_providers.py | 356 | except Exception: | CODE |
| LOW | raven/config/update_providers.py | 804 | except Exception: | CODE |
| LOW | raven/config/update_providers.py | 1163 | except Exception as exc: | CODE |
| LOW | raven/config/update_providers.py | 1286 | except Exception: | CODE |
| 568 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_tui_rpc_session.py | 1246 | def set_session_binding(self, key: str, binding: object) -> None: | CODE |
| LOW⚡ | tests/test_skill_forge_local_pool.py | 43 | def set_metas(self, metas: list[SkillMeta]) -> None: | CODE |
| LOW⚡ | tests/test_tui_rpc_config.py | 162 | def set_session_binding(self, session_key: str, binding: object) -> None: | CODE |
| LOW⚡ | tests/test_tui_rpc_config.py | 165 | def set_default_binding(self, binding: object) -> None: | CODE |
| LOW⚡ | tests/test_tui_rpc_config.py | 170 | def set_provider(self, provider: object, model: str) -> None: | CODE |
| LOW | tests/test_spine_delivery.py | 76 | async def _settle(predicate, *, tries: int = 2000) -> None: | CODE |
| LOW | tests/test_agent_loop_model_switch.py | 51 | def set_provider(self, provider: object, model: str) -> None: | CODE |
| LOW | tests/test_consolidator_split.py | 60 | def set_response(self, tool_name: str, args: dict[str, Any]) -> None: | CODE |
| LOW | tests/test_subagent_manager.py | 80 | async def _settle(predicate, *, tries: int = 2000) -> None: | CODE |
| LOW⚡ | tests/test_cli_agent_commands.py | 124 | def set_submit(self, _submit) -> None: | CODE |
| LOW | tests/test_cli_agent_commands.py | 421 | def set_submit(self, _submit) -> None: | CODE |
| LOW | tests/test_cli_agent_commands.py | 633 | def set_submit(self, _submit) -> None: | CODE |
| LOW | tests/test_agent_loop_run_emit.py | 106 | def set_stream_callback(self, cb) -> None: | CODE |
| LOW | tests/test_agent_loop_run_emit.py | 944 | def set_context(self, channel: str, chat_id: str, session_key: str) -> None: | CODE |
| LOW | raven/skill_hub/audit.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | raven/skill_hub/audit.py | 91 | __all__ = ["record_install", "write_install_meta"] | CODE |
| LOW | raven/skill_hub/client.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | raven/skill_hub/client.py | 306 | __all__ = ["SkillHubClient", "SkillHubError"] | CODE |
| LOW | raven/skill_hub/policy.py | 169 | __all__ = [ | CODE |
| LOW | raven/skill_hub/__init__.py | 12 | __all__ = ["SkillHubClient"] | CODE |
| LOW | raven/tracing/__init__.py | 18 | __all__ = ["enabled", "trace"] | CODE |
| LOW | raven/tracing/semconv.py | 271 | __all__ = [ | CODE |
| LOW | raven/token_wise/__init__.py | 19 | __all__ = [ | CODE |
| LOW | raven/token_wise/pricing.py | 27 | __all__ = ["estimate_cost_usd", "reset_warning_cache"] | CODE |
| LOW | raven/token_wise/base.py | 81 | __all__ = ["TokenStrategy", "UsageSnapshot"] | CODE |
| LOW | raven/importer/__init__.py | 18 | __all__ = [ | CODE |
| LOW | raven/importer/types.py | 92 | __all__ = [ | CODE |
| LOW | raven/importer/orchestrator.py | 267 | __all__ = ["ImportFailure", "ImportSummary", "ProgressEvent", "run_import"] | CODE |
| LOW | raven/importer/state.py | 59 | def set_total(self, total: int) -> None: | CODE |
| LOW | raven/importer/state.py | 132 | __all__ = ["ImportState"] | CODE |
| LOW | raven/importer/scanners/__init__.py | 72 | __all__ = ["ClaudeCodeScanner", "HermesScanner", "build_scanners", "scan_all"] | CODE |
| LOW | raven/importer/scanners/hermes.py | 611 | __all__ = [ | CODE |
| LOW | raven/importer/scanners/claude_code.py | 504 | __all__ = ["ClaudeCodeScanner"] | CODE |
| LOW | raven/importer/skills/__init__.py | 76 | __all__ = ["DiscoveredSkill", "SkillOrigin", "SkillSource", "package_hash"] | CODE |
| LOW | raven/importer/skills/hermes.py | 221 | __all__ = ["HermesSkillSource"] | CODE |
| LOW | raven/importer/skills/installer.py | 188 | __all__ = ["SkillImportSummary", "install_skills"] | CODE |
| LOW | raven/spine/__init__.py | 31 | __all__ = [ | CODE |
| LOW | raven/config/update.py | 418 | __all__ = [ | CODE |
| LOW | raven/config/update_tools.py | 89 | __all__ = ["ConfigReadError", "set_deep_research", "get_deep_research", "reset_deep_research"] | CODE |
| LOW | raven/config/__init__.py | 41 | __all__ = [ | CODE |
| LOW | raven/config/loader.py | 76 | def set_config_path(path: Path) -> None: | CODE |
| LOW | raven/config/update_providers.py | 1533 | __all__ = [ | CODE |
| LOW | raven/config/update_everos.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | raven/config/update_everos.py | 350 | def set_everos_section(section: str, fields: dict[str, Any]) -> None: | CODE |
| LOW | raven/config/update_everos.py | 392 | def set_everos_api(*, host: str, port: int) -> None: | CODE |
| LOW | raven/config/update_channels.py | 444 | __all__ = [ | CODE |
| LOW | raven/auth/capability_token.py | 119 | __all__ = ["CapabilityToken", "issue_token", "verify_token"] | CODE |
| LOW | raven/auth/__init__.py | 26 | __all__ = [ | CODE |
| LOW | raven/auth/managed_settings.py | 36 | __all__ = ["ManagedSettings"] | CODE |
| LOW | raven/auth/allowlist.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | raven/auth/allowlist.py | 79 | __all__ = ["is_allowed", "reset_warning_state"] | CODE |
| LOW | raven/providers/__init__.py | 11 | __all__ = ["LLMProvider", "LLMResponse", "LiteLLMProvider", "OpenAICodexProvider", "AzureOpenAIProvider"] | CODE |
| LOW | raven/providers/litellm_provider.py | 168 | def _setup_env(self, api_key: str, api_base: str | None, model: str) -> None: | CODE |
| LOW⚡ | raven/evolver/tree/store.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | raven/evolver/tree/store.py | 345 | __all__ = [ | CODE |
| LOW⚡ | raven/evolver/tree/git_ops.py | 54 | def set_ephemeral_root(path: Optional[Path]) -> None: | CODE |
| LOW | raven/evolver/tree/git_ops.py | 437 | __all__ = [ | CODE |
| LOW | raven/evolver/tree/__init__.py | 24 | __all__ = [ | CODE |
| LOW | raven/evolver/tree/node.py | 693 | __all__ = [ | CODE |
| LOW | raven/evolver/analysis/proxy_features.py | 32 | __all__ = [ | CODE |
| 330 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | tests/test_read_file_image.py | 465 | from raven.utils.helpers import image_block | CODE |
| CRITICAL | tests/test_read_file_image.py | 483 | from raven.utils.helpers import is_image_part, is_inline_image | CODE |
| CRITICAL | tests/test_read_file_image.py | 551 | from raven.utils.helpers import ImagePart, TextPart, image_block, text_block | CODE |
| CRITICAL | tests/test_read_file_image.py | 566 | from raven.utils.helpers import estimate_content_part_tokens, is_inline_image | CODE |
| CRITICAL | tests/test_workspace_migration_attention_behaviors.py | 8 | from raven.utils.helpers import sync_workspace_templates | CODE |
| CRITICAL⚡ | tests/test_cli_agent_commands.py | 574 | from raven.utils.helpers import sync_workspace_templates | CODE |
| CRITICAL | tests/test_cli_agent_commands.py | 603 | from raven.utils.helpers import sync_workspace_templates | CODE |
| CRITICAL | raven/config/paths.py | 8 | from raven.utils.helpers import ensure_dir | CODE |
| CRITICAL | raven/context_engine/history_trimmer.py | 31 | from raven.utils.helpers import estimate_prompt_tokens_chain | CODE |
| CRITICAL | raven/context_engine/segments/render.py | 22 | from raven.utils.helpers import detect_image_mime, image_block | CODE |
| CRITICAL | raven/utils/__init__.py | 3 | from raven.utils.helpers import ensure_dir | CODE |
| CRITICAL | raven/agent/tools/media.py | 27 | from raven.utils.helpers import ContentPart, estimate_image_tokens, image_block, is_image_part, text_block | CODE |
| CRITICAL | raven/agent/tools/media_gen.py | 51 | from raven.utils.helpers import image_block | CODE |
| CRITICAL | raven/agent/tools/filesystem.py | 9 | from raven.utils.helpers import detect_image_mime | CODE |
| CRITICAL | raven/agent/tools/base.py | 7 | from raven.utils.helpers import ContentPart | CODE |
| CRITICAL | raven/agent/context/builder.py | 12 | from raven.utils.helpers import build_assistant_message | CODE |
| CRITICAL | raven/agent/subagent/manager.py | 23 | from raven.utils.helpers import build_assistant_message | CODE |
| CRITICAL | raven/agent/loop/main.py | 69 | from raven.utils.helpers import estimate_prompt_tokens, is_image_part, is_inline_image | CODE |
| CRITICAL | raven/cli/onboard_commands.py | 439 | from raven.utils.helpers import sync_workspace_templates | CODE |
| CRITICAL | raven/cli/agent_commands.py | 34 | from raven.utils.helpers import sync_workspace_templates | CODE |
| CRITICAL | raven/cli/gateway_commands.py | 29 | from raven.utils.helpers import sync_workspace_templates | CODE |
| CRITICAL | raven/memory_engine/consolidate/consolidator.py | 18 | from raven.utils.helpers import ensure_dir, estimate_message_tokens, estimate_prompt_tokens_chain | CODE |
| CRITICAL | raven/channels/adapters/discord/channel.py | 24 | from raven.utils.helpers import split_message | CODE |
| CRITICAL⚡ | raven/channels/adapters/feishu/channel.py | 173 | response = self._client.im.v1.message_reaction.create(request) | CODE |
| CRITICAL | raven/channels/adapters/feishu/channel.py | 244 | response = self._client.im.v1.message.create(request) | CODE |
| CRITICAL | raven/channels/adapters/feishu/channel.py | 271 | response = self._client.im.v1.image.create(request) | CODE |
| CRITICAL | raven/channels/adapters/feishu/channel.py | 296 | response = self._client.im.v1.file.create(request) | CODE |
| CRITICAL | raven/channels/adapters/feishu/channel.py | 315 | response = self._client.im.v1.message_resource.get(request) | CODE |
| CRITICAL | raven/channels/adapters/feishu/channel.py | 395 | response = self._client.speech_to_text.v1.speech.file_recognize(request) | CODE |
| CRITICAL | raven/channels/adapters/weixin/channel.py | 37 | from raven.utils.helpers import split_message | CODE |
| CRITICAL | raven/channels/adapters/telegram/channel.py | 27 | from raven.utils.helpers import split_message | CODE |
| CRITICAL | raven/channels/adapters/matrix/channel.py | 35 | from raven.utils.helpers import safe_filename | CODE |
| CRITICAL | raven/channels/adapters/matrix/content.py | 18 | from raven.utils.helpers import safe_filename | CODE |
| CRITICAL | raven/session/export.py | 16 | from raven.utils.helpers import ensure_dir, safe_filename | CODE |
| CRITICAL | raven/session/manager.py | 14 | from raven.utils.helpers import ensure_dir, safe_filename | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_provider_auth_method.py | 420 | CODE | |
| LOW | tests/test_provider_auth_method.py | 498 | CODE | |
| LOW | tests/test_rpc_schema_match.py | 158 | CODE | |
| LOW | tests/test_provider_resolution_invariants.py | 726 | CODE | |
| LOW | tests/test_subscription_emitter.py | 197 | CODE | |
| LOW | tests/test_sandbox_debug_server.py | 967 | CODE | |
| LOW | tests/test_sandbox_debug_server.py | 1114 | CODE | |
| LOW | tests/test_agent_loop_truncation_paths.py | 229 | CODE | |
| LOW | raven/tracing/semconv.py | 652 | CODE | |
| LOW | raven/spine/delivery.py | 153 | CODE | |
| LOW | raven/spine/scheduler.py | 193 | CODE | |
| LOW | raven/config/raven.py | 1402 | CODE | |
| LOW | raven/config/loader.py | 446 | CODE | |
| LOW | raven/config/update_providers.py | 578 | CODE | |
| LOW | raven/config/update_providers.py | 1291 | CODE | |
| LOW | raven/providers/azure_openai_provider.py | 208 | CODE | |
| LOW | raven/providers/openai_codex_provider.py | 244 | CODE | |
| LOW | raven/providers/openai_codex_provider.py | 294 | CODE | |
| LOW | raven/providers/openai_codex_provider.py | 332 | CODE | |
| LOW | raven/providers/openai_codex_provider.py | 360 | CODE | |
| LOW | raven/providers/litellm_provider.py | 370 | CODE | |
| LOW | raven/providers/litellm_provider.py | 644 | CODE | |
| LOW | raven/providers/lazy.py | 41 | CODE | |
| LOW | raven/providers/base.py | 389 | CODE | |
| LOW | raven/evolver/tree/git_ops.py | 280 | CODE | |
| LOW | raven/evolver/analysis/proxy_features.py | 142 | CODE | |
| LOW | raven/evolver/launch/models.py | 128 | CODE | |
| LOW | raven/evolver/compressor/trajectory.py | 82 | CODE | |
| LOW | raven/evolver/activation/audit.py | 27 | CODE | |
| LOW | raven/evolver/activation/ledger.py | 97 | CODE | |
| LOW | raven/evolver/activation/spec.py | 180 | CODE | |
| LOW | raven/evolver/activation/chamber.py | 48 | CODE | |
| LOW | raven/evolver/scheduler/tree_loader.py | 293 | CODE | |
| LOW | raven/evolver/scheduler/cold_start_bandit.py | 125 | CODE | |
| LOW | raven/evolver/judge/parser.py | 56 | CODE | |
| LOW | raven/evolver/judge/schema.py | 176 | CODE | |
| LOW | raven/evolver/orchestrator/loop.py | 394 | CODE | |
| LOW | raven/context_engine/history_trimmer.py | 103 | CODE | |
| LOW | raven/context_engine/history_trimmer.py | 152 | CODE | |
| LOW | raven/context_engine/curator.py | 835 | CODE | |
| LOW | raven/context_engine/curator.py | 172 | CODE | |
| LOW | raven/context_engine/curator.py | 268 | CODE | |
| LOW | raven/context_engine/segments/skills.py | 337 | CODE | |
| LOW | raven/context_engine/segments/render.py | 250 | CODE | |
| LOW | raven/context_engine/segments/curator.py | 251 | CODE | |
| LOW | raven/plugin/discover.py | 148 | CODE | |
| LOW | raven/utils/helpers.py | 111 | CODE | |
| LOW | raven/utils/helpers.py | 259 | CODE | |
| LOW | raven/utils/helpers.py | 309 | CODE | |
| LOW | raven/utils/atomic_io.py | 28 | CODE | |
| LOW | raven/agent/tools/web.py | 50 | CODE | |
| LOW | raven/agent/tools/filesystem.py | 105 | CODE | |
| LOW | raven/agent/tools/filesystem.py | 435 | CODE | |
| LOW | raven/agent/tools/mcp.py | 126 | CODE | |
| LOW | raven/agent/tools/shell_policy.py | 111 | CODE | |
| LOW | raven/agent/subagent/manager.py | 177 | CODE | |
| LOW | raven/agent/loop/main.py | 1679 | CODE | |
| LOW | raven/agent/loop/main.py | 2070 | CODE | |
| LOW | raven/agent/loop/main.py | 2628 | CODE | |
| LOW | raven/agent/loop/main.py | 2967 | CODE | |
| 145 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 1 | #!/bin/sh | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/dom.ts | 61 | // auto-pins scrollTop to the bottom when content grows. | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/dom.ts | 81 | notifyScrollChange?: () => void | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/dom.ts | 381 | // Text fits into container, no need to wrap | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 641 | COMMENT | |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 721 | // Capture previous scroll bounds BEFORE overwriting — the at-bottom | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 821 | const cMax = node.scrollClampMax | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 901 | hint = { top: regionTop, bottom: regionBottom, delta } | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 1001 | boxBackgroundColor, | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 1021 | // path preserved. | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/render-node-to-output.ts | 1301 | // Overflow contamination: content overflows right/down, so clean siblings | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/searchHighlight.ts | 41 | const rowOff = row * w | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 241 | // "current" (yellow). null clears. Positions are known upfront — | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 261 | // alt-screen-aware SIGCONT/resize/unmount handling. | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 281 | // screen readers / screen magnifiers track it — so parking at the text | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 341 | COMMENT | |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 681 | altScreen: this.altScreenActive, | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 701 | follow && | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 721 | if (this.selection.isDragging) { | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 761 | COMMENT | |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 881 | } | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/ink.tsx | 2181 | // Non-TTY environments don't handle erasing ansi escapes well, so it's better to | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/parse-keypress.ts | 41 | const CSI_U_RE = /^\x1b\[(\d+)(?:;(\d+))?u/ | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/parse-keypress.ts | 61 | // Kitty keyboard flags: CSI ? flags u — response to CSI ? u query | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/log-update.ts | 161 | } | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/log-update.ts | 201 | // | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/log-update.ts | 401 | COMMENT | |
| LOW | ui-tui/packages/hermes-ink/src/ink/renderer.ts | 81 | const width = Math.floor(node.yogaNode.getComputedWidth()) | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/terminal.ts | 181 | // Terminals known to correctly implement the Kitty keyboard protocol | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/components/App.tsx | 81 | // Dispatch a click at (col, row) — hit-tests the DOM tree and bubbles | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/components/App.tsx | 101 | // screen buffer to find word/line boundaries and mutates selection, | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/components/App.tsx | 161 | // Terminal query/response dispatch. Responses arrive on stdin (parsed | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/components/App.tsx | 321 | // diag write failure must not break TUI startup | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/components/App.tsx | 821 | // fresh single click. The nearLast window (500ms, 1 cell) bounds the | COMMENT |
| LOW | …i/packages/hermes-ink/src/ink/components/ScrollBox.tsx | 241 | el.scrollClampMin = min | COMMENT |
| LOW | …ckages/hermes-ink/src/ink/hooks/use-declared-cursor.ts | 41 | const setCursorDeclaration = useContext(CursorDeclarationContext) | COMMENT |
| LOW | …-tui/packages/hermes-ink/src/ink/events/input-event.ts | 81 | } | COMMENT |
| LOW | …-tui/packages/hermes-ink/src/ink/events/input-event.ts | 101 | input = '' | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/termio/tokenize.ts | 201 | COMMENT | |
| LOW | ui-tui/packages/hermes-ink/src/ink/termio/osc.ts | 161 | // SSH_CONNECTION is in tmux's default update-environment set and gets | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/termio/osc.ts | 281 | // before pbcopy even started — fast cmd+tab → paste would beat it | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/ink/termio/osc.ts | 301 | // complete no-op). The spawn stays fire-and-forget; what is awaited is | COMMENT |
| LOW | ui-tui/packages/hermes-ink/src/utils/env.ts | 41 | COMMENT | |
| LOW | ui-tui/src/gatewayClientStub.ts | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | ui-tui/src/gatewayClientStub.ts | 181 | // import `type { GatewayClient } from './gatewayClientStub.js'` — after the sed | COMMENT |
| LOW | ui-tui/src/gatewayClientCompat.ts | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | ui-tui/src/gatewayClientCompat.ts | 21 | // `GatewayClientStub.start()` so 169 .tsx consumers boot identically. | COMMENT |
| LOW | ui-tui/src/entry.tsx | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | ui-tui/src/theme.ts | 61 | // the gradient banner art. | COMMENT |
| LOW | ui-tui/src/theme.ts | 121 | COMMENT | |
| LOW | ui-tui/src/theme.ts | 521 | // `0`/`false`/`no`/`off` → dark. Either explicit value wins | COMMENT |
| LOW | ui-tui/src/demo/gallery.tsx | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | ui-tui/src/app/useSubmission.ts | 241 | COMMENT | |
| LOW | ui-tui/src/app/chatStream.ts | 1 | // SPDX-License-Identifier: MIT | COMMENT |
| LOW | ui-tui/src/app/useConfigSync.ts | 141 | // Only when the config says something. Every other field here would fall back | COMMENT |
| LOW | ui-tui/src/app/useMainApp.ts | 321 | [] | COMMENT |
| LOW | ui-tui/src/app/slash/commands/session.ts | 21 | import { formatVoiceRecordKey, parseVoiceRecordKey } from '../../../lib/platform.js' | COMMENT |
| LOW | ui-tui/src/app/slash/commands/session.ts | 421 | ctx.guarded<VoiceToggleResponse>(r => { | COMMENT |
| LOW | ui-tui/src/components/markdown.tsx | 81 | // opener is matched only when `$$` / `\[` appears at the very start of the | COMMENT |
| LOW | ui-tui/src/components/markdown.tsx | 281 | COMMENT | |
| 110 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | hatch_build.py | 10 | absent — which would break the ordinary developer flow (`git clone && uv sync` | STRING |
| HIGH | hatch_build.py | 14 | Release builds run ``npm ci && npm run build`` first (see | STRING |
| HIGH | hatch_build.py | 37 | "`npm --prefix ui-tui ci && npm --prefix ui-tui run build` before " | CODE |
| HIGH | tests/test_rpc_schema_match.py | 132 | # ``oneOf: [JsonValue, null]`` is the schema's way of declaring an | COMMENT |
| HIGH | tests/test_rpc_schema_match.py | 18 | "anyOf [T, null]" wrapper vs schema's bare "T" + required-list). Instead we | STRING |
| HIGH | tests/test_rpc_schema_match.py | 146 | """Pydantic emits ``anyOf: [{type:X}, {type:null}]`` for ``X | None``. | STRING |
| HIGH | tests/test_rpc_schema_match.py | 228 | "required" means the field has no default (Pydantic-required AND non-null). | STRING |
| HIGH | tests/test_shell_approval.py | 49 | "echo ready && rm -rf tmp", | CODE |
| HIGH | tests/test_shell_approval.py | 87 | "echo ready && rm file.txt", | CODE |
| HIGH⚡ | tests/test_shell_approval.py | 111 | assert policy.evaluate("unlink old.txt && rm -rf tmp") is CommandDecision.HARD_DENY | CODE |
| HIGH | tests/test_tui_rpc_session.py | 612 | """session.delete on a missing session returns {deleted: null} so the UI | STRING |
| HIGH | tests/test_tui_rpc_session.py | 628 | """session.delete with no session_id returns {deleted: null}.""" | STRING |
| HIGH⚡ | tests/test_cli_doctor_commands.py | 482 | """A valid-JSON non-object top level (e.g. null) carries no settings, so | STRING |
| HIGH⚡ | tests/test_deep_research_tool.py | 119 | body = b'data: {"choices":[{"index":0,"delta":{"content":"hi"},"finish_reason":null}]}\n\ndata: [DONE]\n\n' | CODE |
| HIGH | tests/test_deep_research_tool.py | 154 | return f'data: {{"choices":[{{"index":0,"delta":{{"reasoning_steps":[{{"type":"{kind}"}}]}},"finish_reason":null | CODE |
| HIGH⚡ | raven/tracing/trace.py | 276 | else _ctx.push( | CODE |
| HIGH | raven/cli/tui_commands.py | 1176 | f" 开发者请运行:cd {_UI_TUI_DIR} && npm install && npm run build\n" | CODE |
| HIGH | raven/trajectory/regression.py | 16 | divergence: # omit (or null) to expect zero divergence | STRING |
| HIGH | raven/tui_rpc/server.py | 232 | # JSON-RPC §-32700 parse_error response (id unknown → null). | COMMENT |
| HIGH | raven/tui_rpc/models.py | 699 | # null]`` collapses to the same canonical "any" form. | COMMENT |
| HIGH | raven/tui_rpc/methods/session.py | 410 | {deleted: null} otherwise (unknown id, missing param, or removal failure) | STRING |
| HIGH | raven/tui_rpc/methods/session.py | 439 | Returns the SessionMostRecentResponse shape: {session_id?: string | null, ...}. | STRING |
| HIGH | raven/memory_engine/skill_forge/rewriter.py | 44 | Return JSON: {{"need_retrieval": true/false, "rewritten_query": "..." or null}} | CODE |
| HIGH | scripts/coverage_gate.py | 194 | # Reset on a non-b/ target (e.g. +++ /dev/null) so a deleted file's | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_trajectory_store.py | 0 | span in the current format; pass ``attempt_id`` for a legacy-format span. | STRING |
| HIGH | tests/test_cli_trajectory_commands.py | 0 | span in the current format; pass ``attempt_id`` for a legacy-format span. | STRING |
| HIGH | tests/test_trajectory_bundle.py | 0 | span in the current format; pass ``attempt_id`` for a legacy-format span. | STRING |
| HIGH | …ntegration/test_token_wise_hermes_vs_raven_real_llm.py | 0 | run one user turn through run_turn for its side-effects: the experiment measures usage via the tracker, not the reply, s | STRING |
| HIGH | tests/integration/test_token_wise_ablation_real_llm.py | 0 | run one user turn through run_turn for its side-effects: the experiment measures usage via the tracker, not the reply, s | STRING |
| HIGH | tests/integration/test_token_wise_workload_real_llm.py | 0 | run one user turn through run_turn for its side-effects: the experiment measures usage via the tracker, not the reply, s | STRING |
| HIGH | raven/config/update_tools.py | 0 | atomic write: temp-file then os.replace. preserves indent=2, utf-8. | STRING |
| HIGH | raven/config/update_providers.py | 0 | atomic write: temp-file then os.replace. preserves indent=2, utf-8. | STRING |
| HIGH | raven/config/update_channels.py | 0 | atomic write: temp-file then os.replace. preserves indent=2, utf-8. | STRING |
| HIGH | raven/context_engine/history_trimmer.py | 0 | the provider of the turn's binding; the build-time one outside a turn. | STRING |
| HIGH | raven/context_engine/curator.py | 0 | the provider of the turn's binding; the build-time one outside a turn. | STRING |
| HIGH | raven/memory_engine/consolidate/consolidator.py | 0 | the provider of the turn's binding; the build-time one outside a turn. | STRING |
| HIGH | raven/context_engine/history_trimmer.py | 0 | the model of the turn's binding; the build-time one outside a turn. | STRING |
| HIGH | raven/context_engine/curator.py | 0 | the model of the turn's binding; the build-time one outside a turn. | STRING |
| HIGH | raven/memory_engine/consolidate/consolidator.py | 0 | the model of the turn's binding; the build-time one outside a turn. | STRING |
| HIGH | raven/context_engine/history_trimmer.py | 0 | the running turn's window; the one built with, outside a turn. a property because this object outlives any number of tur | STRING |
| HIGH | raven/context_engine/curator.py | 0 | the running turn's window; the one built with, outside a turn. a property because this object outlives any number of tur | STRING |
| HIGH | raven/context_engine/segments/curator.py | 0 | the running turn's window; the one built with, outside a turn. a property because this object outlives any number of tur | STRING |
| HIGH | benchmarks/pinchbench/tasks/task_18_market_research.md | 0 | grade the stock research task based on file creation and content. args: transcript: parsed jsonl transcript as list of d | STRING |
| HIGH | benchmarks/pinchbench/tasks/task_01_calendar.md | 0 | grade the stock research task based on file creation and content. args: transcript: parsed jsonl transcript as list of d | STRING |
| HIGH | benchmarks/pinchbench/tasks/task_02_stock.md | 0 | grade the stock research task based on file creation and content. args: transcript: parsed jsonl transcript as list of d | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui-tui/src/app/chatStream.ts | 5 | // chatStream — typed chat path scaffold (Phase 6, per design.md §D7). | COMMENT |
| MEDIUM | ui-tui/src/app/useMainApp.ts | 407 | // Phase 6 typed chat path scaffold (per design.md §D7). The | COMMENT |
| MEDIUM⚡ | tests/test_agent_loop_tool_search.py | 104 | # file/interaction/orchestration primitives (read_file / message / ask_user / | COMMENT |
| MEDIUM | tests/test_tui_rpc_config.py | 206 | # including the context window, which the loop re-resolves at adoption | COMMENT |
| MEDIUM⚡ | tests/test_tool_search.py | 216 | # File/search/exec primitives plus the interaction/orchestration primitives | COMMENT |
| MEDIUM⚡ | tests/test_channels_email.py | 287 | # ── channel: orchestration ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_channels_mochat.py | 651 | # ── subscribe orchestration (transport.request mocked) ──────────────── | COMMENT |
| MEDIUM⚡ | tests/test_channels_discord.py | 168 | # ── send orchestration (network mocked) ─────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_channels_dingtalk.py | 659 | # channel outbound orchestration | COMMENT |
| MEDIUM | tests/test_agent_loop_empty_recovery.py | 201 | # synthetic scaffolding must not be persisted into session history | COMMENT |
| MEDIUM | docs/Proactivity-Implementation.md | 515 | ## 11. Heartbeat and event-driven wake | COMMENT |
| MEDIUM⚡ | raven/config/raven.py | 746 | # (embedding model, BM25 parameters, RRF k, etc.) live in the | COMMENT |
| MEDIUM⚡ | raven/config/raven.py | 747 | # scaffold dataclasses inside ``skill_forge/`` and stay at their | COMMENT |
| MEDIUM | raven/config/loader.py | 32 | # The context window every pre-0.1.11 bootstrap wrote to disk verbatim: back | COMMENT |
| MEDIUM | raven/config/schema.py | 691 | # Minimum spacing between event-driven wake fires. Caps the Phase-1 | COMMENT |
| MEDIUM | raven/providers/auth.py | 324 | #: would build the scaffolding this module exists to avoid. | COMMENT |
| MEDIUM | raven/providers/capabilities.py | 313 | # (AtlasCloud among them): every completion emits ~800 chain-of-thought | COMMENT |
| MEDIUM | raven/providers/common_models.py | 160 | # context window. Candidates now agree with what pricing and context-window | COMMENT |
| MEDIUM⚡ | raven/evolver/applier/path_guard.py | 54 | # The batch scorer orchestrates trials and records runner-level infra; | COMMENT |
| MEDIUM | raven/evolver/orchestrator/DESIGN.md | 84 | ## 2. Design idea: inversion of control | COMMENT |
| MEDIUM | raven/agent/tools/tool_search.py | 40 | # ``ask_user`` and ``spawn`` are interaction/orchestration primitives the agent | COMMENT |
| MEDIUM | raven/agent/loop/main.py | 202 | # that one marks empty-response recovery scaffolding, and collapsing the two | COMMENT |
| MEDIUM | raven/agent/loop/main.py | 2447 | # dud. Try to recover before giving up. Synthetic scaffolding is | COMMENT |
| MEDIUM | raven/agent/loop/main.py | 2537 | # Drop transient empty-recovery scaffolding before persistence / | COMMENT |
| MEDIUM | raven/agent/loop/main.py | 2973 | continue # #1a synthetic recovery nudge — never persist scaffolding | CODE |
| MEDIUM | raven/proactive_engine/sentinel/executor/runner.py | 257 | # event-driven (CLI write), not time-driven, so it has no | COMMENT |
| MEDIUM | raven/memory_engine/base.py | 49 | context_length: int # Model's context window | CODE |
| MEDIUM | benchmarks/pinchbench/tasks/task_08_memory.md | 159 | # Check for no hallucination (wrong dates) | COMMENT |
| MEDIUM | benchmarks/appworld/evolve/run.py | 115 | # Fail fast at build time: agentic analysis only runs on Claude models | COMMENT |
| MEDIUM | benchmarks/appworld/evolve/entry.py | 21 | analysis_mode: mapreduce # or agentic | STRING |
| MEDIUM | …s/proactivity_eval/runners/_common/longrun_adapters.py | 418 | # section; otherwise scaffold a minimal file. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 244 | # benchmarks/: eval harness; naming, ambiguous names, unused vars, | COMMENT |
| MEDIUM | tests/test_sandbox_unit.py | 302 | # it is opt-in via extra_deny_patterns (the proactivity-eval harness sets it | COMMENT |
| LOW | tests/test_memory_backend_contract.py | 52 | # No actual filtering — ids are opaque, we just return []. | COMMENT |
| MEDIUM⚡ | tests/test_tui_rpc_stubs.py | 52 | # ``raven.tui_rpc.methods.commands`` (harness-command-catalog-dynamic); | COMMENT |
| MEDIUM | tests/test_tui_rpc_slash_routing.py | 152 | # harness-command-catalog-dynamic — newly blacklisted (smoke caught | COMMENT |
| MEDIUM | tests/test_cli_gateway_commands.py | 72 | # E2E harness (or a focused refactor that splits gateway init from run) | COMMENT |
| MEDIUM⚡ | tests/tui/autotest/tests/test_autotest_cli.py | 62 | # 0 (perfect) and 1 (readiness timeout); not 2 (harness error). | COMMENT |
| MEDIUM⚡ | tests/tui/autotest/tests/test_autotest_cli.py | 70 | # which surfaces as "subprocess exit != 0" → harness exit 1 per spec §S2 | COMMENT |
| MEDIUM | …ts/trajectories/sample_diverges_toward_fix/expect.yaml | 5 | # buggy harness code, so the fixed harness must diverge at that exact call -- | COMMENT |
| MEDIUM | …s/trajectories/sample_reproduces_recording/expect.yaml | 3 | # Shape 1 of a regression assertion: the live harness must reproduce this | COMMENT |
| MEDIUM | raven/evolver/judge/schema.py | 33 | L2 = "L2" # harness config error — evolver patches docs/configs | CODE |
| MEDIUM | raven/evolver/judge/schema.py | 34 | L3 = "L3" # harness capability gap — evolver patches skills/memory/hooks | CODE |
| MEDIUM | raven/evolver/orchestrator/loop.py | 124 | # harness's commit + its train pass@1, so its test curve is reconstructable | COMMENT |
| MEDIUM | raven/evolver/orchestrator/archive.py | 126 | # the four levers over the harness's edit surfaces). Module-level so a bench | COMMENT |
| MEDIUM | raven/agent/tools/shell.py | 78 | # unchanged. The proactivity-eval harness sets these to block host GUI | COMMENT |
| MEDIUM | raven/cli/_proactive_stack.py | 273 | # 1. Caller passed planner_provider explicitly (eval harness path) | COMMENT |
| MEDIUM | …ven/proactive_engine/sentinel/trigger_policy/policy.py | 634 | # sharp. Without this, ticks landing on end_hour:00 would unleash | COMMENT |
| MEDIUM | raven/trajectory/replay.py | 216 | # regression assertions about what the harness actually did. | COMMENT |
| MEDIUM | raven/trajectory/replay.py | 932 | # surely as one that asked for the wrong thing — the fixed harness stopped | COMMENT |
| MEDIUM | raven/tui_rpc/methods/__init__.py | 134 | # harness-command-catalog-dynamic: real ``commands.catalog`` handler; | COMMENT |
| MEDIUM⚡ | raven/tui_rpc/methods/cli_dispatch.py | 74 | # harness-command-catalog-dynamic L2 also imports this set from | COMMENT |
| MEDIUM⚡ | raven/tui_rpc/methods/cli_dispatch.py | 81 | # + harness-command-catalog-dynamic extension (``tui`` + ``onboard``) per | COMMENT |
| MEDIUM⚡ | raven/tui_rpc/methods/cli_dispatch.py | 82 | # ``docs/openspec/changes/harness-command-catalog-dynamic/design.md §D4``. | COMMENT |
| MEDIUM | raven/tui_rpc/methods/cli_dispatch.py | 96 | # ---- harness-command-catalog-dynamic extensions (5 → 8) ---- | COMMENT |
| MEDIUM | raven/tui_rpc/methods/_stubs.py | 165 | # ``docs/openspec/changes/harness-command-catalog-dynamic/``. | COMMENT |
| MEDIUM | benchmarks/appworld/evolve/sandbox.py | 22 | # The harness surface the driver may edit; anything else it touches is reverted. | COMMENT |
| MEDIUM | …s/proactivity_eval/runners/_common/longrun_adapters.py | 306 | # Host-safety, eval-scoped (NOT a product default): this harness runs the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_routine_store.py | 16 | CODE | |
| LOW | tests/test_cli_sandbox_commands.py | 20 | CODE | |
| LOW | tests/test_routine_aggregator.py | 17 | CODE | |
| LOW | raven/tracing/spans.py | 33 | CODE | |
| LOW | raven/providers/litellm_provider.py | 116 | CODE | |
| LOW | raven/evolver/orchestrator/loop.py | 171 | CODE | |
| LOW | raven/evolver/orchestrator/production.py | 441 | CODE | |
| LOW | raven/evolver/orchestrator/production.py | 655 | CODE | |
| LOW | raven/evolver/orchestrator/providers/claude_cli.py | 64 | CODE | |
| LOW | raven/context_engine/segments/skills.py | 60 | CODE | |
| LOW | raven/agent/tools/shell.py | 53 | CODE | |
| LOW | raven/agent/subagent/manager.py | 37 | CODE | |
| LOW | raven/agent/loop/main.py | 262 | CODE | |
| LOW | raven/agent/loop/main.py | 2070 | CODE | |
| LOW | raven/agent/loop/main.py | 2628 | CODE | |
| LOW | raven/cli/cron_commands.py | 655 | CODE | |
| LOW | raven/cli/onboard_commands.py | 2770 | CODE | |
| LOW | raven/cli/onboard_commands.py | 2846 | CODE | |
| LOW | raven/cli/onboard_commands.py | 3010 | CODE | |
| LOW | raven/cli/agent_commands.py | 111 | CODE | |
| LOW | raven/sandbox/boxlite_executor.py | 42 | CODE | |
| LOW | raven/proactive_engine/sentinel/executor/runner.py | 126 | CODE | |
| LOW | …proactive_engine/sentinel/predictor/task_discoverer.py | 63 | CODE | |
| LOW | …oactive_engine/sentinel/predictor/context_assembler.py | 125 | CODE | |
| LOW | raven/tui_rpc/question_broker.py | 70 | CODE | |
| LOW | raven/tui_rpc/methods/__init__.py | 58 | CODE | |
| LOW | raven/tui_rpc/methods/__init__.py | 99 | CODE | |
| LOW | benchmarks/appworld/evolve/run.py | 58 | CODE | |
| LOW | benchmarks/appworld/evolve/adapter.py | 293 | CODE | |
| LOW | benchmarks/appworld/evolve/editor.py | 373 | CODE | |
| LOW | benchmarks/appworld/evolve/editor.py | 540 | CODE | |
| LOW | benchmarks/proactivity_eval/runners/_common/openclaw.py | 25 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | benchmarks/README.md | 82 | "apiKey": "YOUR_API_KEY", | CODE |
| HIGH | benchmarks/clawbench/README.md | 52 | "apiKey": "YOUR_API_KEY", | CODE |
| HIGH | benchmarks/proactivity_eval/runners.config.yaml | 33 | vllm_api_key: <your-api-key> | CODE |
| HIGH | benchmarks/proactivity_eval/data/longrun/README.md | 305 | vllm_api_key: <your-api-key> | CODE |
| HIGH | benchmarks/proactivity_eval/data/longrun/README_zh.md | 298 | vllm_api_key: <your-api-key> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | raven/config/update_everos.py | 267 | # Step 1: migrate legacy config.toml → everos.toml (preserves content). | COMMENT |
| LOW⚡ | raven/evolver/tree/store.py | 295 | # Step 0: load parent (raises FileNotFoundError if missing) | COMMENT |
| LOW⚡ | raven/evolver/tree/store.py | 303 | # Step 1: construct the child commit (does NOT touch working tree) | COMMENT |
| LOW⚡ | raven/evolver/tree/store.py | 313 | # Step 2: assemble the HarnessNode metadata | COMMENT |
| LOW | raven/evolver/tree/store.py | 333 | # Step 3: persist JSON (atomic via HarnessNode.save → temp+rename) | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 242 | # Step 1: load parent tree into temp index | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 244 | # Step 2: apply the diff to the temp index (no working-tree touch) | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 254 | # Step 3: write a tree object from the temp index | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 257 | # Step 4: commit-tree to create the actual commit. Use environment | COMMENT |
| LOW⚡ | raven/agent/personalizer/personalizer.py | 27 | # Step 1: request triage — decide whether clarification is needed | COMMENT |
| LOW | raven/agent/personalizer/personalizer.py | 92 | # Step 4: post-action learning — passively extract signals from a completed interaction | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | raven/config/update_everos.py | 267 | # Step 1: migrate legacy config.toml → everos.toml (preserves content). | COMMENT |
| LOW⚡ | raven/evolver/tree/store.py | 295 | # Step 0: load parent (raises FileNotFoundError if missing) | COMMENT |
| LOW⚡ | raven/evolver/tree/store.py | 303 | # Step 1: construct the child commit (does NOT touch working tree) | COMMENT |
| LOW⚡ | raven/evolver/tree/store.py | 313 | # Step 2: assemble the HarnessNode metadata | COMMENT |
| LOW | raven/evolver/tree/store.py | 333 | # Step 3: persist JSON (atomic via HarnessNode.save → temp+rename) | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 242 | # Step 1: load parent tree into temp index | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 244 | # Step 2: apply the diff to the temp index (no working-tree touch) | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 254 | # Step 3: write a tree object from the temp index | COMMENT |
| LOW⚡ | raven/evolver/tree/git_ops.py | 257 | # Step 4: commit-tree to create the actual commit. Use environment | COMMENT |
| LOW⚡ | raven/agent/personalizer/personalizer.py | 27 | # Step 1: request triage — decide whether clarification is needed | COMMENT |
| LOW | raven/agent/personalizer/personalizer.py | 92 | # Step 4: post-action learning — passively extract signals from a completed interaction | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_sentinel_persistence.py | 328 | # Create a feishu-bound job via svc_gw (doesn't matter which adds; file is shared). | COMMENT |
| MEDIUM | raven/spine/scheduler.py | 197 | # Create the task synchronously (no await before this) so the turn is | COMMENT |
| MEDIUM | raven/agent/personalizer/personalizer.py | 400 | # Create a new section at the end of the file | COMMENT |
| MEDIUM | raven/cli/onboard_everos.py | 1398 | # Creating a root is the other question, and here a recorded address is the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_sandbox_unit.py | 770 | CODE | |
| MEDIUM | tests/test_sandbox_unit.py | 809 | CODE | |
| MEDIUM | tests/test_sandbox_unit.py | 840 | CODE | |
| MEDIUM | tests/test_sandbox_unit.py | 844 | CODE | |
| MEDIUM | tests/test_sandbox_unit.py | 1330 | CODE | |
| MEDIUM | tests/test_tui_rpc_message_tool_route.py | 145 | CODE | |
| MEDIUM | tests/test_agent_loop_run_emit.py | 626 | CODE | |
| MEDIUM | tests/test_agent_loop_run_emit.py | 862 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmarks/pinchbench/direct/run.sh | 4 | # Usage: | COMMENT |
| LOW | benchmarks/pinchbench/bot_runner/run.sh | 7 | # Usage: | COMMENT |
| LOW | benchmarks/clawbench/run.sh | 4 | # Usage: | COMMENT |
| LOW | demos/skill_retrieval/run_agent_demo.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui-tui/src/__tests__/copyNotice.test.tsx | 32 | text: `transcript line ${i} lorem ipsum` | CODE |
| LOW | ui-tui/src/__tests__/statusBarOverlay.test.tsx | 39 | text: `transcript line ${i} lorem ipsum` | CODE |
| LOW⚡ | tests/test_evolver_launch.py | 287 | with pytest.raises(ValueError, match="placeholder"): | CODE |
| LOW | raven/tracing/viewer/ui/app.js | 253 | node.setAttribute('placeholder', t(node.getAttribute('data-i18n-ph'))); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_search_tools.py | 21 | (tmp_path / "src" / "util.py").write_text("def helper():\n return 42\n") | CODE |
| LOW | benchmarks/pinchbench/direct/raven_executor.py | 374 | async def execute_task( | CODE |
| LOW | benchmarks/pinchbench/bot_runner/bot_executor.py | 149 | async def execute_task( | CODE |