"Vibe-Trading: Your Personal Trading Agent"
This report summarizes scanner evidence for HKUDS/Vibe-Trading, a Python project with 35,153 GitHub stars. SynthScan examined 644,130 lines of code across 2648 source files, recording 22545 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 53.8 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 11391 finding(s).
Are imports declared and package/API names verified? 6080 finding(s).
Are wrappers, guards, and repeated structures necessary? 15421 finding(s).
Which changes need focused human review? 22545 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 22545 distinct pattern matches across 23 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 |
|---|---|---|---|---|
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 95 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 97 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 173 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 175 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 199 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 237 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/test_ci_env_var_gate.py | 239 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/test_ci_env_var_gate.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/test_ci_env_var_gate.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/test_ci_env_var_gate.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/test_ci_env_var_gate.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/test_ci_env_var_gate.py | 220 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tools/test_ci_env_var_gate.py | 222 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tools/ci_env_var_gate.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 194 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 196 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 231 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/ci_env_var_gate.py | 233 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | frontend/src/tests/setup.ts | 7 | // ── Global mocks for jsdom ─────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/hooks/__tests__/useSSE.test.ts | 4 | // ── Mock EventSource ────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/hooks/__tests__/useSSE.test.ts | 59 | // ── Tests ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/i18n/__tests__/i18n.test.ts | 4 | // ── helpers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/i18n/__tests__/i18n.test.ts | 36 | // ── locale parity ────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/i18n/__tests__/i18n.test.ts | 86 | // ── interpolation variable parity ────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/i18n/__tests__/i18n.test.ts | 128 | // ── utility functions ────────────────────────────────────────── | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 67 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 166 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 317 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | wiki/scripts/build_alpha_library.py | 319 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | wiki/scripts/build_alpha_library.py | 440 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 442 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 473 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | wiki/scripts/build_alpha_library.py | 475 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/api_server.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/api_server.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/api_server.py | 322 | # ============================================================================ | COMMENT |
| MEDIUM | agent/api_server.py | 324 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 1261 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 1263 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 1823 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 1825 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 2695 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | agent/mcp_server.py | 2697 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 145 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 506 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 508 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 546 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 548 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent/mcp_server.py | 788 | # --------------------------------------------------------------------------- | COMMENT |
| 3177 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/test_ci_env_var_gate.py | 88 | def test_subscript_read_in_expression(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 181 | def test_pop_outside_settings_routes(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 190 | def test_pop_in_settings_routes_no_warning(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 245 | def test_noqa_suppresses_getenv(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 250 | def test_noqa_suppresses_environ_get(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 255 | def test_noqa_suppresses_subscript_read(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 260 | def test_noqa_does_not_affect_other_lines(self) -> None: | CODE |
| LOW⚡ | tools/test_ci_env_var_gate.py | 266 | def test_partial_noqa_not_matched(self) -> None: | CODE |
| LOW | tools/test_ci_env_var_gate.py | 62 | def test_os_getenv_with_default(self) -> None: | CODE |
| LOW | tools/test_ci_env_var_gate.py | 75 | def test_environ_get_with_default(self) -> None: | CODE |
| LOW | tools/test_ci_env_var_gate.py | 135 | def test_subscript_aug_assign(self) -> None: | CODE |
| LOW | tools/test_ci_env_var_gate.py | 150 | def test_config_visitor_clean(self) -> None: | CODE |
| LOW | …/src/components/chat/ScheduledResearchProposalCard.tsx | 19 | export const ScheduledResearchProposalCard = memo(function ScheduledResearchProposalCard({ | CODE |
| LOW | frontend/src/components/chat/RunnerStatus.tsx | 80 | function fallbackAuthorizeInstruction(): string { | CODE |
| LOW | frontend/src/components/chat/RunnerStatus.tsx | 333 | export function isVisibleRuntimeConnector(broker: LiveBrokerStatus): boolean { | CODE |
| LOW | …d/src/components/charts/AttributionCumulativeChart.tsx | 14 | export function AttributionCumulativeChart({ data, height = 300 }: Props) { | CODE |
| LOW | …nd/src/components/charts/StrategyResearchDashboard.tsx | 68 | export function getStrategyReportIdentity(run: RunData): ReportIdentity { | CODE |
| LOW | …nd/src/components/charts/StrategyResearchDashboard.tsx | 121 | export function StrategyResearchDashboard({ run }: { run: RunData }) { | CODE |
| LOW | …nd/src/components/charts/AttributionWaterfallChart.tsx | 41 | export function AttributionWaterfallChart({ brinson, height = 300 }: Props) { | CODE |
| LOW | …c/components/portfolio/PortfolioCompatibilityBadge.tsx | 11 | export function PortfolioCompatibilityBadge({ | CODE |
| LOW | frontend/src/lib/attachments.ts | 11 | export function prependUploadedAttachments( | CODE |
| LOW | frontend/src/lib/attachments.ts | 24 | export function extractUploadedAttachments(content: string): { | CODE |
| LOW | frontend/src/lib/swarmStatus.ts | 109 | export function buildSwarmStatusFromStarted(data: AnyRecord): SwarmRunStatus | null { | CODE |
| LOW | frontend/src/lib/swarmStatus.ts | 301 | export function buildSwarmStatusFromToolResultPreview(preview: string): SwarmRunStatus | null { | CODE |
| LOW | frontend/src/pages/Runtime.tsx | 410 | function formatEnvironmentIdentity(identity: string | null | undefined, t: TFunction): string { | CODE |
| LOW | frontend/src/pages/RunDetail.tsx | 303 | async function handleLoadAllChartSymbols() { | CODE |
| LOW | frontend/src/pages/RunDetail.tsx | 328 | function handleCancelLoadAllCharts() { | CODE |
| LOW | frontend/src/pages/agentToolTimeline.ts | 31 | export function buildToolTimelineMessages( | CODE |
| LOW | wiki/scripts/check_social_cards.py | 44 | def require_alpha_library_card() -> None: | CODE |
| LOW | desktop/electron/src/backend-manager.ts | 476 | function isCompleteShutdownEvidence(evidence: BackendShutdownEvidence): boolean { | CODE |
| LOW | desktop/electron/src/main.ts | 194 | function writeParentDeathSmokeRecord(url: string): void { | CODE |
| LOW | desktop/electron/src/update-verification.ts | 51 | export async function verifyWindowsUpdateCandidate( | CODE |
| LOW | desktop/electron/src/update-verification.ts | 151 | export async function assertVerifiedUpdateArtifactUnchanged( | CODE |
| LOW | desktop/electron/src/update-verification.ts | 168 | export function inspectAuthenticodeSignature(artifactPath: string): AuthenticodeInspection { | CODE |
| LOW | desktop/electron/src/update-verification.ts | 279 | function resolveSignaturePowerShell(): string { | CODE |
| LOW⚡ | agent/mcp_server.py | 1266 | def _strategy_discovery_execute(tool_name: str, params: dict[str, Any]) -> str: | CODE |
| LOW | agent/mcp_server.py | 114 | def _resolve_include_shell_tools(cli_opt_in: bool) -> bool: | CODE |
| LOW | agent/mcp_server.py | 731 | def update_research_goal_status( | CODE |
| LOW | agent/mcp_server.py | 1386 | def refresh_strategy_evidence(manifest_path: str | None = None, runs: list | None = None) -> str: | CODE |
| LOW | agent/mcp_server.py | 1458 | def trading_select_connection(connection: str) -> str: | CODE |
| LOW | agent/mcp_server.py | 2573 | def _string_result_output_schema() -> dict[str, Any] | None: | CODE |
| LOW | agent/evals/harness/assertions.py | 713 | def _tool_result_join_verdict(bundle: ArtifactBundle) -> Verdict: | CODE |
| LOW | agent/tests/test_mt5_loader_week_month_reject.py | 10 | def test_week_and_month_tokens_map_like_connector() -> None: | CODE |
| LOW | agent/tests/test_mt5_loader_week_month_reject.py | 17 | def test_unsupported_interval_returns_empty_without_daily_rewrite() -> None: | CODE |
| LOW⚡ | agent/tests/test_plan_rejected.py | 382 | def test_a_trial_plan_inside_the_capital_fit_is_not_a_finding(): | CODE |
| LOW⚡ | agent/tests/test_plan_rejected.py | 391 | def test_lot_truncation_in_hold_mode_is_still_one_zero_size(): | CODE |
| LOW⚡ | agent/tests/test_plan_rejected.py | 399 | def test_insufficient_capital_is_counted_as_unfilled(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 106 | def test_each_cause_records_exact_reason(reason): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 116 | def test_all_seven_reasons_are_pairwise_distinct(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 128 | def test_hook_not_called_when_order_is_planned(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 157 | def test_default_engine_has_zero_side_effects_for_every_cause(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 168 | def test_futures_whole_contract_truncation_surfaces_zero_size(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 178 | def test_recording_hook_does_not_change_execution_state(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 193 | def _run_fill_and_reject_scenario(engine): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 240 | def test_wanted_but_unfillable_plans_are_counted_by_default(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 278 | def test_a_clean_run_reports_zero_unfilled_plans(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 286 | def test_lot_truncated_sleeve_is_named_in_the_metrics(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 297 | def test_an_overriding_subclass_still_gets_the_default_counting(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 315 | def test_total_and_by_symbol_share_one_counter(): | CODE |
| LOW | agent/tests/test_plan_rejected.py | 368 | def test_a_cash_starved_open_in_hold_mode_is_reported_once(): | CODE |
| 10089 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/test_ci_env_var_gate.py | 11 | CODE | |
| LOW | tools/ci_env_var_gate.py | 31 | CODE | |
| LOW | wiki/scripts/build_alpha_library.py | 42 | CODE | |
| LOW | wiki/scripts/check_social_cards.py | 3 | CODE | |
| LOW | wiki/scripts/check_i18n.py | 27 | CODE | |
| LOW | wiki/scripts/sync_site_chrome.py | 29 | CODE | |
| LOW | agent/api_server.py | 9 | CODE | |
| LOW | agent/api_server.py | 16 | CODE | |
| LOW | agent/api_server.py | 16 | CODE | |
| LOW | agent/api_server.py | 16 | CODE | |
| LOW | agent/api_server.py | 17 | CODE | |
| LOW | agent/api_server.py | 22 | CODE | |
| LOW | agent/api_server.py | 22 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 35 | CODE | |
| LOW | agent/api_server.py | 73 | CODE | |
| LOW | agent/api_server.py | 73 | CODE | |
| LOW | agent/api_server.py | 73 | CODE | |
| LOW | agent/api_server.py | 73 | CODE | |
| LOW | agent/api_server.py | 73 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| LOW | agent/api_server.py | 81 | CODE | |
| 5947 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | wiki/scripts/build_alpha_library.py | 127 | Load and lightly validate a manifest written by export-manifest. Args: path: Filesystem path to ``manifest. | STRING |
| HIGH | agent/tests/test_swarm_worker_stream_retry.py | 71 | Raise the next queued error or return the final response. Args: messages: Conversation messages (ig | STRING |
| HIGH | agent/tests/test_agent_loop_stream_retry.py | 47 | Raise the next queued error or return the final response. Args: messages: Conversation messages (ig | STRING |
| HIGH | agent/tests/module_os_helpers.py | 32 | Point ``module.os`` at a stand-in carrying ``overrides``. Args: monkeypatch: The test's ``monkeypatch`` fix | STRING |
| HIGH | agent/cli/_legacy.py | 235 | Read user input with arrow key support if prompt_toolkit is available. Falls back to Rich Prompt.ask() when prompt_ | STRING |
| HIGH | agent/cli/utils/format.py | 109 | Abbreviate a number with magnitude suffix. Use this for status-bar numbers where horizontal space is scarce. Curren | STRING |
| HIGH | agent/backtest/runner.py | 1747 | Fetch and sanitize bars through the canonical loader registry. This is the shared entry point for backtest executio | STRING |
| HIGH | agent/backtest/risk_xray.py | 95 | Compute the risk x-ray for a weighted basket. Args: closes: Close-price panel, one column per symbol, sorte | STRING |
| HIGH | agent/backtest/options_payoff.py | 285 | Calculate an expiry payoff curve and analytic risk summary. Premiums are pinned at entry. An explicit per-share pre | STRING |
| HIGH | agent/backtest/options_payoff.py | 363 | Build a symmetric non-negative display grid around an entry spot. Args: center: Positive central spot. | STRING |
| HIGH | agent/backtest/options_payoff.py | 402 | Calculate pre-expiry mark-to-market P&L over spot and volatility. The entry cost is pinned once using the entry spo | STRING |
| HIGH | agent/backtest/factor_costs.py | 167 | Cap each name's trade at a fraction of its average daily traded value. Args: target_weights: Desired weight | STRING |
| HIGH | agent/backtest/factor_costs.py | 237 | Cost of borrowing the short leg for one period. Only negative weights are charged: a long position borrows nothing. | STRING |
| HIGH | agent/backtest/factor_costs.py | 311 | Price one rebalance: capacity, then impact, then borrow. Args: target_weights: Desired weights, shorts nega | STRING |
| HIGH | agent/backtest/optimizers/turnover_aware.py | 101 | Validate caps even when a singleton needs no weight optimization. The base singleton path preserves the supplie | STRING |
| HIGH | agent/backtest/engines/china_futures.py | 134 | Extract product code from futures symbol. The returned code is the one the product tables are keyed by, whatever | STRING |
| HIGH | agent/backtest/engines/options_portfolio.py | 206 | Options backtest entry point. Day-by-day simulation: 1. Read underlying price for the current day 2. Mark a | STRING |
| HIGH | agent/backtest/engines/composite.py | 149 | Run the pipeline, refusing a code set that spans currencies. The check lives here rather than in ``__init__`` b | STRING |
| HIGH | agent/backtest/engines/base.py | 170 | Return the first bar index that counts as performance. A long-lookback indicator needs history before the period th | STRING |
| HIGH | agent/backtest/loaders/alphavantage_loader.py | 173 | Fetch and slice one symbol's daily bars into an OHLCV DataFrame. Args: code: US-equity ticker. | STRING |
| HIGH | agent/backtest/loaders/eastmoney_loader.py | 36 | Convert a ``YYYY-MM-DD`` date into Eastmoney's ``YYYYMMDD`` form. Args: value: Date string in any pandas-pa | STRING |
| HIGH | agent/backtest/loaders/eastmoney_loader.py | 80 | Fetch OHLCV for each symbol; a single failure never aborts the batch. Args: codes: Symbols such as | STRING |
| HIGH | agent/backtest/loaders/registry.py | 579 | Return the first *available* loader instance for *market*. Walks the fallback chain and returns the first loader wh | STRING |
| HIGH | agent/backtest/loaders/registry.py | 617 | Return a loader *class* for *source*, falling back if unavailable. Args: source: Requested data source name | STRING |
| HIGH | agent/backtest/loaders/gildata_loader.py | 128 | Invoke one MCP tool and return its ``rows``. Args: tool: Tool name, e.g. ``"StockDailyQuote"``. arg | STRING |
| HIGH | agent/backtest/loaders/gildata_loader.py | 280 | Fetch daily OHLCV bars from Gildata, one symbol at a time. Non-A-share symbols are dropped (the fallback chain | STRING |
| HIGH | agent/backtest/loaders/gildata_loader.py | 341 | Fetch and parse one symbol's daily bars; ``None`` on no data. Args: symbol: Normalized Gildata symb | STRING |
| HIGH | agent/backtest/loaders/_http.py | 150 | GET ``url`` after waiting out the per-host minimum interval. Args: url: Fully-qualified request URL. | STRING |
| HIGH | agent/backtest/loaders/futu.py | 149 | Fetch OHLCV history from Futu OpenAPI. Args: codes: Project symbols such as ``700.HK`` or ``000001. | STRING |
| HIGH | agent/backtest/loaders/_fundamental_schema.py | 216 | Resolve a supported fundamental field to its schema entry. Args: field: Unified fundamental field name. | STRING |
| HIGH | agent/backtest/loaders/fmp_loader.py | 102 | Fetch daily OHLCV bars from FMP, one symbol at a time. A single failing symbol is logged and skipped so it neve | STRING |
| HIGH | agent/backtest/loaders/fmp_loader.py | 156 | Fetch and parse one symbol's daily bars; ``None`` on no data. Args: code: Project symbol to fetch. | STRING |
| HIGH | agent/backtest/loaders/sec_edgar_client.py | 79 | GET ``url`` as JSON through the shared SEC-bucket throttle. Args: url: Fully-qualified SEC endpoint URL. | STRING |
| HIGH | agent/backtest/loaders/sec_edgar_client.py | 100 | Normalize a CIK to the SEC's zero-padded 10-digit string form. Args: cik: A CIK as an int or a string that | STRING |
| HIGH | agent/backtest/loaders/sec_edgar_client.py | 167 | Resolve a ticker symbol to its zero-padded 10-digit CIK. Args: ticker: A U.S. equity ticker (case-insensiti | STRING |
| HIGH | agent/backtest/loaders/sec_edgar_client.py | 199 | Fetch the filing-index ("submissions") JSON for a CIK. Args: cik: A CIK as int or string; padded to 10 digi | STRING |
| HIGH | agent/backtest/loaders/sec_edgar_client.py | 215 | Fetch the XBRL ``companyfacts`` JSON for a CIK. Args: cik: A CIK as int or string; padded to 10 digits inte | STRING |
| HIGH | agent/backtest/loaders/rsshub_events.py | 78 | Convert a backtest code (e.g. ``"600519.SH"``) to a route's expected form. RSSHub routes disagree on instrument for | STRING |
| HIGH | agent/backtest/loaders/rsshub_events.py | 143 | Build :class:`FeedSpec` objects from backtest-config dicts. Each entry must carry ``name``, ``route_template`` and | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 112 | Return ``(crumb, cookies)``, fetching them on first use or on refresh. Args: force_refresh: Discard | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 167 | Fetch OHLCV bars from the v8 chart endpoint as ascending rows. Either supply a ``range_`` (e.g. ``"1y"``, ``"max"`` | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 303 | Fetch v10 quoteSummary modules, handling the cookie+crumb handshake. On a 401 (expired/invalid crumb) the crumb and | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 361 | Fetch the v7 option chain for a symbol, handling the cookie+crumb handshake. Like ``v10/quoteSummary``, the ``v7/fi | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 423 | Look up matching instruments via the v1 search endpoint. Args: query: Free-text query (ticker fragment or c | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 446 | Look up matching news via the v1 search endpoint. Args: query: Free-text query (ticker fragment or company | STRING |
| HIGH | agent/backtest/loaders/longbridge.py | 264 | Fetch OHLCV history from LongPort OpenAPI. Args: codes: Project symbols such as ``AAPL``, ``AAPL.US | STRING |
| HIGH | agent/backtest/loaders/stooq_loader.py | 177 | Fetch daily OHLCV bars for ``codes`` over ``[start_date, end_date]``. Args: codes: Project-side sym | STRING |
| HIGH | agent/backtest/loaders/fundamentals_loader.py | 55 | Extract a sparse ``period_end``/``filed``/``value`` series. Args: facts: SEC companyfacts payload. | STRING |
| HIGH | agent/backtest/loaders/fundamentals_loader.py | 207 | Load SEC fundamental fields as dense date-by-symbol panels. Args: symbols: Tickers to load. fields: | STRING |
| HIGH | agent/backtest/loaders/fundamentals_loader.py | 416 | Map each symbol to its SEC CIK. Args: symbols: Requested symbols. Returns: A symbol -> CIK map | STRING |
| HIGH | agent/backtest/loaders/qveris_loader.py | 218 | Call ``POST /tools/execute`` and hydrate truncated results. Args: tool_id: QVeris tool identifier r | STRING |
| HIGH | agent/backtest/loaders/qveris_loader.py | 324 | Fetch daily OHLCV history through selected QVeris capabilities. Args: codes: Symbols to fetch. | STRING |
| HIGH | agent/backtest/loaders/tickerall_loader.py | 233 | Fetch OHLCV frames keyed by the original input codes. A transient per-symbol failure (network blip, one bad sym | STRING |
| HIGH | agent/backtest/loaders/eastmoney_client.py | 113 | Issue a throttled Eastmoney GET and decode the body as JSON. Args: url: Fully-qualified Eastmoney endpoint | STRING |
| HIGH | agent/backtest/loaders/eastmoney_client.py | 308 | Fetch ascending OHLCV bars for one ``secid`` from push2his. Args: secid: Eastmoney secid (e.g. ``"1.600519" | STRING |
| HIGH | agent/backtest/loaders/tushare.py | 52 | Call a Tushare endpoint, waiting out a per-minute quota rejection. Only quota rejections are retried. Retrying an o | STRING |
| HIGH | agent/backtest/loaders/tiingo_loader.py | 269 | Fetch OHLCV history keyed by the original project symbols. Each symbol is fetched independently so one failing | STRING |
| HIGH | agent/backtest/loaders/sina_loader.py | 55 | Extract the JSON array embedded in Sina's JSONP wrapper. Args: raw: Raw response body, e.g. ``var x=([{"d": | STRING |
| HIGH | agent/backtest/loaders/sina_loader.py | 146 | Fetch US daily OHLCV for each code; skip and log per-symbol failures. Args: codes: Symbols in ``TIC | STRING |
| HIGH | agent/backtest/loaders/base.py | 99 | Hold a frame to its market's currency contract and record the declared quote. Args: frame: Normalized OHLCV | STRING |
| 409 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent/tests/test_sse_ticket_and_headers.py | 0 | return a testclient that simulates a non-loopback caller. | STRING |
| HIGH | agent/tests/test_security_auth_api.py | 0 | return a testclient that simulates a non-loopback caller. | STRING |
| HIGH | agent/tests/test_openbb_bridge/test_routes.py | 0 | return a testclient that simulates a non-loopback caller. | STRING |
| HIGH | agent/tests/test_sse_ticket_and_headers.py | 0 | return a testclient that simulates a loopback caller. | STRING |
| HIGH | agent/tests/test_security_auth_api.py | 0 | return a testclient that simulates a loopback caller. | STRING |
| HIGH | agent/tests/test_openbb_bridge/test_routes.py | 0 | return a testclient that simulates a loopback caller. | STRING |
| HIGH | agent/tests/test_runtime_flatten.py | 0 | point the live runtime root at an isolated tmp dir. | STRING |
| HIGH | agent/tests/test_sweep_latch.py | 0 | point the live runtime root at an isolated tmp dir. | STRING |
| HIGH | agent/tests/test_runtime_liveness.py | 0 | point the live runtime root at an isolated tmp dir. | STRING |
| HIGH | agent/tests/test_runtime_jobstore.py | 0 | point the live runtime root at an isolated tmp dir. | STRING |
| HIGH | agent/tests/test_halt.py | 0 | point the live runtime root at an isolated tmp dir. | STRING |
| HIGH | agent/tests/test_audit_redact.py | 0 | point the live runtime root at an isolated tmp dir. | STRING |
| HIGH | agent/tests/test_dingtalk_connection_test.py | 0 | route the probe's fresh ``httpx.asyncclient`` through a mocktransport. the probe owns its client, so the only seam is th | STRING |
| HIGH | agent/tests/test_slack_connection_test.py | 0 | route the probe's fresh ``httpx.asyncclient`` through a mocktransport. the probe owns its client, so the only seam is th | STRING |
| HIGH | agent/tests/test_qq_connection_test.py | 0 | route the probe's fresh ``httpx.asyncclient`` through a mocktransport. the probe owns its client, so the only seam is th | STRING |
| HIGH | agent/tests/test_discord_connection_test.py | 0 | route the probe's fresh ``httpx.asyncclient`` through a mocktransport. the probe owns its client, so the only seam is th | STRING |
| HIGH | agent/tests/test_feishu_connection_test.py | 0 | route the probe's fresh ``httpx.asyncclient`` through a mocktransport. the probe owns its client, so the only seam is th | STRING |
| HIGH | agent/tests/test_mandate_model.py | 0 | point the live root at a tmp dir so tests never touch the real store. | STRING |
| HIGH | agent/tests/test_consent_commit.py | 0 | point the live root at a tmp dir so tests never touch the real store. | STRING |
| HIGH | agent/tests/test_mandate_enforcement.py | 0 | point the live root at a tmp dir so tests never touch the real store. | STRING |
| HIGH | agent/tests/test_swarm_worker_stream_retry.py | 0 | initialize the flaky stub. args: errors: exceptions raised by successive ``stream_chat`` calls, consumed in order before | STRING |
| HIGH | agent/tests/test_stream_retry_escalation.py | 0 | initialize the flaky stub. args: errors: exceptions raised by successive ``stream_chat`` calls, consumed in order before | STRING |
| HIGH | agent/tests/test_agent_loop_stream_retry.py | 0 | initialize the flaky stub. args: errors: exceptions raised by successive ``stream_chat`` calls, consumed in order before | STRING |
| HIGH | agent/tests/test_mcp_goal_tool_optional_goal_id.py | 0 | import agent/mcp_server.py without executing main(). | STRING |
| HIGH | agent/tests/test_mcp_goal_session_contract.py | 0 | import agent/mcp_server.py without executing main(). | STRING |
| HIGH | agent/tests/test_mcp_json_string_args.py | 0 | import agent/mcp_server.py without executing main(). | STRING |
| HIGH | agent/tests/test_channel_reset_notice.py | 0 | give every test unbound locks (asyncio.lock binds to a loop on contention). | STRING |
| HIGH | agent/tests/test_channel_noop_refresh.py | 0 | give every test unbound locks (asyncio.lock binds to a loop on contention). | STRING |
| HIGH | agent/tests/test_channels_config_api.py | 0 | give every test unbound locks (asyncio.lock binds to a loop on contention). | STRING |
| HIGH | agent/cli/commands/institutional/screen.py | 0 | render or dispatch the ``/comps`` playbook. args: ctx: interactive context supplying ``pending_prompt``. *args: raw slas | STRING |
| HIGH | agent/cli/commands/institutional/earnings.py | 0 | render or dispatch the ``/comps`` playbook. args: ctx: interactive context supplying ``pending_prompt``. *args: raw slas | STRING |
| HIGH | agent/cli/commands/institutional/memo.py | 0 | render or dispatch the ``/comps`` playbook. args: ctx: interactive context supplying ``pending_prompt``. *args: raw slas | STRING |
| HIGH | agent/cli/commands/institutional/dcf.py | 0 | render or dispatch the ``/comps`` playbook. args: ctx: interactive context supplying ``pending_prompt``. *args: raw slas | STRING |
| HIGH | agent/cli/commands/institutional/attrib.py | 0 | render or dispatch the ``/comps`` playbook. args: ctx: interactive context supplying ``pending_prompt``. *args: raw slas | STRING |
| HIGH | agent/cli/commands/institutional/comps.py | 0 | render or dispatch the ``/comps`` playbook. args: ctx: interactive context supplying ``pending_prompt``. *args: raw slas | STRING |
| HIGH | agent/backtest/loaders/pykrx_loader.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/backtest/loaders/gildata_loader.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/backtest/loaders/fmp_loader.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/backtest/loaders/yahoo_client.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/backtest/loaders/stooq_loader.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/backtest/loaders/tickerall_loader.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/backtest/loaders/finnhub_loader.py | 0 | resolve the per-call minimum spacing, honoring the env override. | STRING |
| HIGH | agent/src/tools/prediction_market_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/etf_holdings_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/fund_flow_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/research_papers_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/sector_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/financial_statements_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/market_screener_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/image_vision_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/get_fundamentals_tool.py | 0 | build the failure envelope as a json string. args: message: human-readable error description. returns: a strict json ``{ | STRING |
| HIGH | agent/src/tools/stock_news_tool.py | 0 | render a failure envelope as a json string. args: message: human-readable error text. returns: ``{"ok": false, "error": | STRING |
| HIGH | agent/src/tools/iwencai_tool.py | 0 | render a failure envelope as a json string. args: message: human-readable error text. returns: ``{"ok": false, "error": | STRING |
| HIGH | agent/src/tools/dragon_tiger_tool.py | 0 | render a failure envelope as a json string. args: message: human-readable error text. returns: ``{"ok": false, "error": | STRING |
| HIGH | agent/src/tools/symbol_search_tool.py | 0 | coerce a requested report count into the supported ``1.._max_limit`` range. | STRING |
| HIGH | agent/src/tools/sec_filings_tool.py | 0 | coerce a requested report count into the supported ``1.._max_limit`` range. | STRING |
| HIGH | agent/src/tools/research_reports_tool.py | 0 | coerce a requested report count into the supported ``1.._max_limit`` range. | STRING |
| HIGH | agent/src/factors/zoo/alpha101/alpha_018.py | 0 | compute the alpha on the ohlcv+ panel and return a wide dataframe. | STRING |
| HIGH | agent/src/factors/zoo/alpha101/alpha_049.py | 0 | compute the alpha on the ohlcv+ panel and return a wide dataframe. | STRING |
| HIGH | agent/src/factors/zoo/alpha101/alpha_059.py | 0 | compute the alpha on the ohlcv+ panel and return a wide dataframe. | STRING |
| 331 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent/mcp_server.py | 384 | except RuntimeError: | CODE |
| HIGH | agent/mcp_server.py | 1784 | except Exception: | CODE |
| HIGH | agent/mcp_server.py | 1813 | except Exception: | CODE |
| HIGH | agent/tests/test_mcp_server_smoke.py | 128 | except (json.JSONDecodeError, ValueError): | CODE |
| HIGH | agent/tests/test_mcp_server_smoke.py | 235 | except Exception: | CODE |
| HIGH | agent/tests/test_config_writer.py | 153 | except threading.BrokenBarrierError: | CODE |
| HIGH | agent/tests/test_api_live_runtime.py | 324 | except asyncio.CancelledError: | CODE |
| HIGH | agent/tests/test_api_live_runtime.py | 526 | except asyncio.CancelledError: | CODE |
| HIGH | agent/tests/test_api_live_runtime.py | 631 | except asyncio.CancelledError: | CODE |
| HIGH | agent/tests/test_baostock_socket_deadline.py | 60 | except OSError: | CODE |
| HIGH | agent/tests/test_baostock_socket_deadline.py | 182 | except OSError: | CODE |
| HIGH | agent/tests/test_serve_bind.py | 62 | except SystemExit: | CODE |
| HIGH | agent/tests/test_strategy_discovery_models.py | 322 | except TypeError: | CODE |
| HIGH | agent/tests/test_composite_currency_guard.py | 144 | except Exception: | CODE |
| HIGH | agent/tests/mcp_http_test_helpers.py | 303 | except ValueError: | CODE |
| HIGH | agent/tests/test_feishu_stop.py | 76 | except Exception: # noqa: BLE001 - mirrors run_ws's warning branch | CODE |
| HIGH | agent/tests/quantlib/test_timeseries.py | 690 | except ImportError: | CODE |
| HIGH | agent/tests/quantlib/test_timeseries.py | 835 | except ImportError: | CODE |
| HIGH | agent/tests/memory/test_lifecycle_index_cleanup.py | 44 | except Exception: | CODE |
| HIGH | agent/tests/memory/test_search_index.py | 299 | except Exception: | CODE |
| HIGH | agent/tests/memory/test_tier2_integration.py | 40 | except Exception: | CODE |
| HIGH | agent/cli/onboard.py | 151 | except OSError: | CODE |
| HIGH | agent/cli/onboard.py | 176 | except (FileNotFoundError, OSError): | CODE |
| HIGH | agent/cli/onboard.py | 291 | except ValueError: | CODE |
| HIGH | agent/cli/onboard.py | 166 | except OSError: | CODE |
| HIGH | agent/cli/onboard.py | 172 | except (FileNotFoundError, OSError): | CODE |
| HIGH | agent/cli/onboard.py | 149 | except (FileNotFoundError, OSError): | CODE |
| HIGH | agent/cli/completer.py | 36 | except Exception: # noqa: BLE001 — never block typeahead on theme import | CODE |
| HIGH | agent/cli/stream.py | 140 | except Exception: # noqa: BLE001 — Rich shutdown can race | CODE |
| HIGH | agent/cli/stream.py | 158 | except Exception: # noqa: BLE001 | CODE |
| HIGH | agent/cli/stream.py | 193 | except Exception: # noqa: BLE001 | CODE |
| HIGH | agent/cli/input.py | 116 | except (OSError, ValueError): | CODE |
| HIGH | agent/cli/main.py | 139 | except OSError: | CODE |
| HIGH | agent/cli/main.py | 289 | except Exception: # noqa: BLE001 — legacy will load again later | CODE |
| HIGH | agent/cli/main.py | 429 | except Exception: # noqa: BLE001 | CODE |
| HIGH | agent/cli/main.py | 460 | except Exception: # noqa: BLE001 — persistence is best-effort | CODE |
| HIGH | agent/cli/main.py | 469 | except Exception: # noqa: BLE001 | CODE |
| HIGH | agent/cli/main.py | 532 | except Exception: # noqa: BLE001 | CODE |
| HIGH | agent/cli/main.py | 752 | except (BrokenPipeError, OSError): | CODE |
| HIGH | agent/cli/_legacy.py | 138 | except ImportError: | CODE |
| HIGH | agent/cli/_legacy.py | 430 | except Exception: | CODE |
| HIGH | agent/cli/_legacy.py | 993 | except Exception: # noqa: BLE001 — relay must never break the turn | CODE |
| HIGH | agent/cli/_legacy.py | 1077 | except Exception: # noqa: BLE001 — search index is optional | CODE |
| HIGH | agent/cli/_legacy.py | 6195 | except OSError: | CODE |
| HIGH | agent/cli/_legacy.py | 6489 | except KeyboardInterrupt: | CODE |
| HIGH | agent/cli/_legacy.py | 1334 | except (ValueError, OSError): | CODE |
| HIGH | agent/cli/_legacy.py | 1124 | except Exception: # noqa: BLE001 — capture must never kill the turn | CODE |
| HIGH | agent/cli/_legacy.py | 4760 | except (TypeError, ValueError): | CODE |
| HIGH | agent/cli/_legacy.py | 6471 | except (ValueError, OSError): | CODE |
| HIGH | agent/cli/_legacy.py | 6475 | except (AttributeError, ValueError, OSError): | CODE |
| HIGH | agent/cli/_legacy.py | 1141 | except Exception: # noqa: BLE001 — relay must never kill the turn | CODE |
| HIGH | agent/cli/_legacy.py | 2956 | except Exception: | CODE |
| HIGH | agent/cli/_legacy.py | 6456 | except OSError: | CODE |
| HIGH | agent/cli/_legacy.py | 6505 | except OSError: | CODE |
| HIGH | agent/cli/_legacy.py | 6509 | except (OSError, subprocess.TimeoutExpired): | CODE |
| HIGH | agent/cli/components/working_indicator.py | 42 | except Exception: # noqa: BLE001 — never block the spinner on helper issues | CODE |
| HIGH | agent/cli/commands/chat.py | 79 | except Exception: # noqa: BLE001 — clear can fail on dumb terminals | CODE |
| HIGH | agent/cli/commands/chat.py | 95 | except Exception: # noqa: BLE001 | CODE |
| HIGH | agent/cli/commands/institutional/runner.py | 201 | except Exception: # noqa: BLE001 — never let a slash handler kill the REPL | CODE |
| HIGH | agent/backtest/runner.py | 1213 | except ImportError: | CODE |
| 134 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/api_server.py | 136 | except Exception: # pragma: no cover — best-effort | CODE |
| LOW⚡ | agent/mcp_server.py | 1813 | except Exception: | CODE |
| LOW⚡ | agent/mcp_server.py | 2685 | except Exception: # noqa: BLE001 - never let one tool break server startup | CODE |
| LOW | agent/mcp_server.py | 1278 | except Exception: # noqa: BLE001 - honest error beats a raw traceback | CODE |
| LOW | agent/mcp_server.py | 1784 | except Exception: | CODE |
| LOW | agent/mcp_server.py | 2568 | except Exception: # noqa: BLE001 - one unavailable module, not four | CODE |
| LOW | agent/mcp_server.py | 3161 | except Exception: # pragma: no cover — best-effort | CODE |
| LOW⚡ | agent/tests/test_channel_config_meta.py | 813 | except Exception: # noqa: BLE001 - this is the branch under test | CODE |
| LOW | agent/tests/test_channel_config_meta.py | 49 | except Exception: # noqa: BLE001 - adapters with missing SDKs must degrade | CODE |
| LOW | agent/tests/test_mcp_server_smoke.py | 99 | except Exception: | CODE |
| LOW | agent/tests/test_mcp_server_smoke.py | 235 | except Exception: | CODE |
| LOW | agent/tests/test_volume_unit_consistency.py | 26 | except Exception: # noqa: BLE001 — unreachable source = not participating | CODE |
| MEDIUM | agent/tests/test_volume_unit_consistency.py | 23 | def _volume_from(loader_cls) -> float | None: | CODE |
| LOW⚡ | agent/tests/test_mcp_regression.py | 64 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW⚡ | agent/tests/test_mcp_regression.py | 112 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW⚡ | agent/tests/test_env_schema.py | 452 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | agent/tests/test_alpha_bench_sector_tag.py | 92 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | agent/tests/test_swarm_store_atomic_write.py | 152 | except Exception as exc: # noqa: BLE001 - captured for the assertion below | CODE |
| LOW | agent/tests/test_swarm_store_atomic_write.py | 180 | except Exception as exc: # noqa: BLE001 - captured for the assertion below | CODE |
| LOW | agent/tests/test_longbridge_credentials.py | 182 | except Exception as exc: # The contract requires this specific safe exception. | CODE |
| LOW | agent/tests/test_mcp_specs_cache.py | 294 | except Exception as exc: | CODE |
| LOW | agent/tests/test_composite_currency_guard.py | 144 | except Exception: | CODE |
| LOW⚡ | agent/tests/test_mcp_json_string_args.py | 189 | except Exception as exc: # noqa: BLE001 - fastmcp surfaces validation errors | CODE |
| LOW | agent/tests/test_feishu_stop.py | 76 | except Exception: # noqa: BLE001 - mirrors run_ws's warning branch | CODE |
| LOW | agent/tests/memory/test_lifecycle_index_cleanup.py | 44 | except Exception: | CODE |
| LOW⚡ | agent/tests/memory/test_search_index.py | 299 | except Exception: | CODE |
| LOW | agent/tests/memory/test_tier2_integration.py | 40 | except Exception: | CODE |
| LOW | agent/tests/factors/test_lookahead.py | 137 | except Exception: # noqa: BLE001 — be loud only at test time | CODE |
| MEDIUM | agent/tests/factors/test_lookahead.py | 134 | def _registered_alpha_ids() -> list[str]: | CODE |
| LOW | agent/cli/completer.py | 36 | except Exception: # noqa: BLE001 — never block typeahead on theme import | CODE |
| LOW | agent/cli/stream.py | 140 | except Exception: # noqa: BLE001 — Rich shutdown can race | CODE |
| LOW | agent/cli/stream.py | 158 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | agent/cli/stream.py | 193 | except Exception: # noqa: BLE001 | CODE |
| MEDIUM | agent/cli/main.py | 527 | def _worker() -> None: | CODE |
| LOW⚡ | agent/cli/main.py | 460 | except Exception: # noqa: BLE001 — persistence is best-effort | CODE |
| LOW⚡ | agent/cli/main.py | 469 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | agent/cli/main.py | 532 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | agent/cli/main.py | 640 | except Exception as exc: # noqa: BLE001 — never let a handler kill the loop | CODE |
| LOW | agent/cli/main.py | 150 | except Exception: # noqa: BLE001 — never block startup on stats | CODE |
| LOW | agent/cli/main.py | 166 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 183 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 289 | except Exception: # noqa: BLE001 — legacy will load again later | CODE |
| LOW | agent/cli/main.py | 391 | except Exception: # noqa: BLE001 — persistence error → empty history | CODE |
| LOW | agent/cli/main.py | 420 | except Exception: # noqa: BLE001 — never block the turn on persistence | CODE |
| LOW | agent/cli/main.py | 429 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 485 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 660 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 900 | except Exception as exc: # noqa: BLE001 — never let a halt failure kill the loop | CODE |
| LOW | agent/cli/main.py | 925 | except Exception as exc: # noqa: BLE001 — never let a resume failure kill the loop | CODE |
| LOW | agent/cli/main.py | 963 | except Exception as exc: # noqa: BLE001 — never let a connector command kill the loop | CODE |
| LOW | agent/cli/main.py | 977 | except Exception as exc: # noqa: BLE001 # QVERIS-INTEGRATION | CODE |
| LOW | agent/cli/main.py | 1128 | except Exception as exc: # noqa: BLE001 - keep proposal open for retry | CODE |
| LOW | agent/cli/main.py | 1242 | except Exception as exc: # noqa: BLE001 — surface a clean error to the user | CODE |
| LOW | agent/cli/main.py | 1320 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 1347 | except Exception as exc: # noqa: BLE001 — fall back gracefully if prompt_toolkit broken | CODE |
| LOW | agent/cli/main.py | 1354 | except Exception: # noqa: BLE001 | CODE |
| LOW | agent/cli/main.py | 1488 | except Exception: # pragma: no cover — best-effort | CODE |
| LOW | agent/cli/_legacy.py | 353 | except Exception: | CODE |
| LOW | agent/cli/_legacy.py | 420 | except Exception: | CODE |
| LOW | agent/cli/_legacy.py | 430 | except Exception: | CODE |
| 899 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/ci_env_var_gate.py | 89 | def _set_source(self, source: str) -> None: | CODE |
| LOW | agent/api_server.py | 115 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | agent/mcp_server.py | 88 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/evals/harness/__init__.py | 5 | __all__ = [ | CODE |
| LOW | agent/tests/test_local_plugin_autoresolve.py | 65 | def set_password(self, service_name: str, username: str, password: str) -> None: | STRING |
| LOW | agent/tests/test_auth_precedence.py | 37 | def _set_key(monkeypatch: pytest.MonkeyPatch, key: str = "secret") -> None: | CODE |
| LOW | agent/tests/test_longbridge_credentials.py | 30 | def _set_environment(monkeypatch: pytest.MonkeyPatch, values: dict[str, str]) -> None: | CODE |
| LOW⚡ | agent/tests/test_sdk_connectors.py | 227 | def _set_longbridge_environment(monkeypatch, values) -> None: | CODE |
| LOW | agent/tests/test_binance_usdm_readonly.py | 160 | def set_sandbox_mode(self, enabled: bool) -> None: | CODE |
| LOW | agent/tests/test_binance_usdm_readonly.py | 217 | def set_sandbox_mode(self, _enabled: bool) -> None: | CODE |
| LOW | agent/cli/onboard.py | 564 | __all__ = ["run_onboarding", "PROVIDERS", "Provider", "BACK", "CANCEL"] | CODE |
| LOW | agent/cli/theme.py | 235 | __all__ = [ | CODE |
| LOW | agent/cli/_version.py | 46 | __all__ = ["__version__"] | CODE |
| LOW | agent/cli/__init__.py | 103 | __all__ = ["main", *sorted( | CODE |
| LOW | agent/cli/completer.py | 115 | __all__ = ["SlashCompleter"] | CODE |
| LOW | agent/cli/stream.py | 144 | def set_extra(self, extra: str) -> None: | CODE |
| LOW | agent/cli/stream.py | 339 | __all__ = [ | CODE |
| LOW | agent/cli/input.py | 380 | __all__ = [ | CODE |
| LOW | agent/cli/main.py | 1650 | __all__ = ["main", "InteractiveContext"] | CODE |
| LOW | agent/cli/intro.py | 5 | __all__ = ["print_banner"] | CODE |
| LOW | agent/cli/ui/__init__.py | 7 | __all__ = [ | CODE |
| LOW | agent/cli/utils/__init__.py | 11 | __all__ = [ | CODE |
| LOW | agent/cli/utils/format.py | 157 | __all__ = ["format_duration", "format_tokens", "abbreviate_num"] | CODE |
| LOW | agent/cli/utils/thinking_verbs.py | 41 | __all__ = ["pick_thinking_verb", "THINKING_VERBS"] | CODE |
| LOW | agent/cli/components/chat_log.py | 77 | __all__ = ["render_history"] | CODE |
| LOW | agent/cli/components/tool_event.py | 218 | __all__ = ["render_tool_event", "render_tool_events"] | CODE |
| LOW | agent/cli/components/hint_bar.py | 67 | __all__ = ["render_hint_bar"] | CODE |
| LOW | agent/cli/components/working_indicator.py | 107 | def update_verb(self, verb: str) -> None: | CODE |
| LOW | agent/cli/components/working_indicator.py | 144 | __all__ = ["ThinkingSpinner"] | CODE |
| LOW | agent/cli/components/__init__.py | 12 | __all__ = [ | CODE |
| LOW | agent/cli/commands/research_playbook.py | 676 | __all__ = [ | CODE |
| LOW | agent/cli/commands/show.py | 86 | __all__ = ["run", "cmd_show", "cmd_skill", "cmd_pine"] | CODE |
| LOW | agent/cli/commands/memory.py | 67 | __all__ = ["run", "cmd_memory"] | CODE |
| LOW | agent/cli/commands/strategy_evidence.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/cli/commands/strategy_evidence.py | 170 | __all__ = [ | CODE |
| LOW | agent/cli/commands/session.py | 98 | __all__ = ["run", "cmd_history", "cmd_search", "cmd_export"] | CODE |
| LOW | agent/cli/commands/__init__.py | 13 | __all__ = [ | CODE |
| LOW | agent/cli/commands/chat.py | 247 | __all__ = [ | CODE |
| LOW | agent/cli/commands/goal.py | 395 | __all__ = [ | CODE |
| LOW | agent/cli/commands/help.py | 64 | __all__ = ["run"] | CODE |
| LOW | agent/cli/commands/institutional/screen.py | 29 | __all__ = ["run"] | CODE |
| LOW | agent/cli/commands/institutional/runner.py | 209 | __all__ = ["build_prompt", "run_playbook"] | CODE |
| LOW | agent/cli/commands/institutional/playbooks.py | 647 | __all__ = [ | CODE |
| LOW | agent/cli/commands/institutional/earnings.py | 29 | __all__ = ["run"] | CODE |
| LOW | agent/cli/commands/institutional/memo.py | 30 | __all__ = ["run"] | CODE |
| LOW | agent/cli/commands/institutional/dcf.py | 30 | __all__ = ["run"] | CODE |
| LOW | agent/cli/commands/institutional/attrib.py | 29 | __all__ = ["run"] | CODE |
| LOW | agent/cli/commands/institutional/comps.py | 30 | __all__ = ["run"] | CODE |
| LOW | agent/backtest/runner.py | 56 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/regime.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/factor_costs.py | 56 | __all__ = [ | CODE |
| LOW | agent/backtest/correlation.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/engines/china_futures.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/engines/vietnam_equity.py | 64 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/engines/korea_equity.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/engines/base.py | 64 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/loaders/nobitex.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/loaders/okx.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/loaders/akshare_loader.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | agent/backtest/loaders/alphavantage_loader.py | 33 | logger = logging.getLogger(__name__) | CODE |
| 233 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/ci_env_var_gate.py | 199 | CODE | |
| LOW | wiki/scripts/check_i18n.py | 68 | CODE | |
| LOW | agent/evals/harness/assertions.py | 526 | CODE | |
| LOW | agent/evals/harness/schema.py | 79 | CODE | |
| LOW | agent/tests/test_channel_config_meta.py | 720 | CODE | |
| LOW | agent/tests/test_gitignore_runtime_files.py | 25 | CODE | |
| LOW | agent/tests/test_agent_output_discipline.py | 805 | CODE | |
| LOW | agent/tests/test_api_live_runtime.py | 829 | CODE | |
| LOW | agent/tests/test_api_live_runtime.py | 841 | CODE | |
| LOW | agent/tests/test_market_data_tool.py | 278 | CODE | |
| LOW | agent/tests/test_baostock_socket_deadline.py | 237 | CODE | |
| LOW | agent/tests/test_baostock_socket_deadline.py | 250 | CODE | |
| LOW | agent/tests/test_channel_stdlib_logging.py | 47 | CODE | |
| LOW | agent/tests/test_session_events_replay_start.py | 45 | CODE | |
| LOW | agent/tests/test_no_set_mandate_tool.py | 46 | CODE | |
| LOW | agent/tests/test_no_set_mandate_tool.py | 67 | CODE | |
| LOW | agent/tests/test_dataclass_field_name_collisions.py | 81 | CODE | |
| LOW | agent/tests/test_dataclass_field_name_collisions.py | 112 | CODE | |
| LOW | agent/tests/test_loader_contract.py | 65 | CODE | |
| LOW | agent/tests/test_strategy_discovery_models.py | 283 | CODE | |
| LOW | agent/tests/test_consent_commit.py | 635 | CODE | |
| LOW | agent/tests/test_sdk_connectors.py | 352 | CODE | |
| LOW | agent/tests/test_mcp_server_http_transport.py | 50 | CODE | |
| LOW | agent/tests/test_strategy_discovery_harness.py | 408 | CODE | |
| LOW | agent/tests/test_provider_header_isolation.py | 206 | CODE | |
| LOW | agent/tests/test_provider_header_isolation.py | 227 | CODE | |
| LOW | agent/tests/test_local_loader_cache_identity.py | 134 | CODE | |
| LOW | agent/tests/test_skill_pct_change_guard.py | 35 | CODE | |
| LOW | agent/tests/quantlib/test_copula.py | 125 | CODE | |
| LOW | agent/tests/memory/benchmarks/tier2_runner.py | 214 | CODE | |
| LOW | agent/tests/factors/test_alpha_purity.py | 200 | CODE | |
| LOW | agent/tests/factors/test_alpha_purity.py | 172 | CODE | |
| LOW | agent/cli/stream.py | 185 | CODE | |
| LOW | agent/cli/input.py | 121 | CODE | |
| LOW | agent/cli/main.py | 553 | CODE | |
| LOW | agent/cli/main.py | 1295 | CODE | |
| LOW | agent/cli/_legacy.py | 1082 | CODE | |
| LOW | agent/cli/_legacy.py | 1937 | CODE | |
| LOW | agent/cli/_legacy.py | 1996 | CODE | |
| LOW | agent/cli/_legacy.py | 2309 | CODE | |
| LOW | agent/cli/_legacy.py | 2591 | CODE | |
| LOW | agent/cli/_legacy.py | 3954 | CODE | |
| LOW | agent/cli/_legacy.py | 4464 | CODE | |
| LOW | agent/cli/_legacy.py | 4725 | CODE | |
| LOW | agent/cli/_legacy.py | 6366 | CODE | |
| LOW | agent/cli/_legacy.py | 1116 | CODE | |
| LOW | agent/cli/_legacy.py | 2149 | CODE | |
| LOW | agent/cli/_legacy.py | 2220 | CODE | |
| LOW | agent/cli/ui/rail.py | 319 | CODE | |
| LOW | agent/backtest/loader_health.py | 189 | CODE | |
| LOW | agent/backtest/runner.py | 654 | CODE | |
| LOW | agent/backtest/runner.py | 694 | CODE | |
| LOW | agent/backtest/runner.py | 741 | CODE | |
| LOW | agent/backtest/runner.py | 1480 | CODE | |
| LOW | agent/backtest/runner.py | 1630 | CODE | |
| LOW | agent/backtest/runner.py | 1746 | CODE | |
| LOW | agent/backtest/run_card.py | 456 | CODE | |
| LOW | agent/backtest/correlation.py | 255 | CODE | |
| LOW | agent/backtest/engines/options_portfolio.py | 199 | CODE | |
| LOW | agent/backtest/engines/options_portfolio.py | 703 | CODE | |
| 240 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/mcp_server.py | 552 | CODE | |
| LOW | agent/mcp_server.py | 620 | CODE | |
| LOW | agent/mcp_server.py | 1034 | CODE | |
| LOW | agent/mcp_server.py | 1602 | CODE | |
| LOW | agent/mcp_server.py | 1636 | CODE | |
| LOW | agent/tests/test_memory_gc.py | 29 | CODE | |
| LOW | agent/tests/test_memory_lifecycle.py | 35 | CODE | |
| LOW | agent/tests/test_crypto_engine.py | 69 | CODE | |
| LOW | agent/tests/test_mcp_specs_cache.py | 33 | CODE | |
| LOW | agent/tests/test_perpetual_risk.py | 35 | CODE | |
| LOW | agent/tests/test_extraetf_reader.py | 61 | CODE | |
| LOW | agent/tests/test_extraetf_reader.py | 96 | CODE | |
| LOW | agent/tests/memory/test_lifecycle_index_cleanup.py | 59 | CODE | |
| LOW | agent/cli/_legacy.py | 1082 | CODE | |
| LOW | agent/cli/_legacy.py | 5037 | CODE | |
| LOW | agent/cli/_legacy.py | 5088 | CODE | |
| LOW | agent/backtest/factor_costs.py | 297 | CODE | |
| LOW | agent/backtest/loaders/tushare_fundamentals.py | 187 | CODE | |
| LOW | agent/backtest/loaders/tushare_fundamentals.py | 238 | CODE | |
| LOW | agent/src/market_data.py | 197 | CODE | |
| LOW | agent/src/quantlib/fundmath.py | 1597 | CODE | |
| LOW | agent/src/quantlib/fundmath.py | 2208 | CODE | |
| LOW | agent/src/tools/__init__.py | 76 | CODE | |
| LOW | agent/src/tools/pattern_tool.py | 93 | CODE | |
| LOW | agent/src/hypotheses/registry.py | 214 | CODE | |
| LOW | agent/src/strategy_discovery/facade.py | 417 | CODE | |
| LOW | agent/src/scheduled_research/playbooks.py | 142 | CODE | |
| LOW | agent/src/scheduled_research/executor.py | 197 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_018.py | 63 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_059.py | 95 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_008.py | 77 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_028.py | 64 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_069.py | 98 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_038.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_029.py | 89 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_078.py | 72 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_039.py | 68 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_019.py | 76 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_048.py | 110 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_058.py | 94 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_077.py | 73 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_026.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_084.py | 68 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_012.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_043.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_053.py | 64 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_002.py | 63 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_094.py | 64 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_036.py | 83 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_067.py | 98 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_047.py | 86 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_016.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_022.py | 63 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_080.py | 100 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_090.py | 97 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_063.py | 105 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_032.py | 76 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_006.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_057.py | 62 | CODE | |
| LOW | agent/src/factors/zoo/alpha101/alpha_017.py | 62 | CODE | |
| 138 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent/api_server.py | 370 | print("[warn] Run: cd frontend && npm run build") | CODE |
| HIGH | agent/tests/test_validation.py | 363 | """A non-finite metric must be serialized as null, not a bare | STRING |
| HIGH⚡ | agent/tests/test_loader_volume_units.py | 50 | """Markets without evidence stay undeclared (null), never guessed.""" | STRING |
| HIGH | agent/tests/test_fundamentals_pit.py | 335 | value null, which reads as "this issuer reports nothing" rather than "this | STRING |
| HIGH | agent/tests/test_options_hv_bars_per_year.py | 46 | assert not hv.equals(historical_volatility(close, default_iv=DEFAULT_IV, bars_per_year=252)) | CODE |
| HIGH | agent/tests/test_alpha_bench_sector_tag.py | 59 | assert panel["sector"].index.equals(close.index) | CODE |
| HIGH | agent/tests/test_technical_indicator_tool.py | 331 | # But SMA 20 should be null, SMA 50/200 null — only EMA 20 needs 20 bars, null too | COMMENT |
| HIGH | agent/tests/test_technical_indicator_tool.py | 315 | """Too few bars → indicators return null, but not error.""" | STRING |
| HIGH | agent/tests/test_social_media_intelligence_skill.py | 85 | assert residual.index.equals(sentiment.index) | CODE |
| HIGH | agent/tests/test_kimi_reasoning_content.py | 511 | content=null; Moonshot kimi-k2.6 rejects that, so we normalize to ''.""" | STRING |
| HIGH⚡ | agent/tests/test_base_engine.py | 690 | assert close_df.index.equals(dates) | CODE |
| HIGH⚡ | agent/tests/test_base_engine.py | 691 | assert pos_df.index.equals(dates) | CODE |
| HIGH | agent/tests/test_strategy_discovery_harness.py | 765 | f"{row.regime}: multi-position breakeven must be null, got " | CODE |
| HIGH | agent/tests/test_channels_config_api.py | 1520 | ``Boolean(undefined) = false`` and buildPatch always includes bool fields, | STRING |
| HIGH | agent/tests/quantlib/test_credit.py | 382 | assert out.index.equals(bond.index) | CODE |
| HIGH⚡ | agent/tests/factors/test_bench_strict.py | 71 | assert not a.equals(b) | CODE |
| HIGH | agent/cli/_legacy.py | 6307 | Windows footgun. Equivalent to running ``cd frontend && npm install | STRING |
| HIGH | agent/cli/commands/update.py | 25 | container the answer would be `git pull && docker compose up --build`, but | STRING |
| HIGH | agent/backtest/metrics.py | 283 | undefined, | CODE |
| HIGH | agent/backtest/rebalance_notes.py | 194 | ``_json_safe`` (non-finite -> null) and serialize with ``allow_nan=False`` | STRING |
| HIGH | agent/backtest/validation.py | 477 | strict parsers reject. Sanitize with :func:`_json_safe` (non-finite → null) | STRING |
| HIGH | agent/backtest/engines/base.py | 1578 | # Zero is always rejected (size = notional / price is undefined); | COMMENT |
| HIGH | agent/backtest/loaders/tushare_fundamentals.py | 157 | date (``f_ann_date`` when present and non-null, falling back to | STRING |
| HIGH | agent/backtest/loaders/ccxt_loader.py | 340 | if trade is None or mark is None or not trade.index.equals(mark.index): | CODE |
| HIGH | agent/backtest/loaders/yahoo_client.py | 255 | # A non-trading slot leaves OHLC null; skip rather than emit a NaN bar. | COMMENT |
| HIGH | agent/scripts/w4a_run_benches.py | 4 | cd agent && python scripts/w4a_run_benches.py | STRING |
| HIGH | agent/src/swarm/serialization.py | 44 | Returns ``None`` (an explicit null, not an absent key) when no task carries | STRING |
| HIGH | agent/src/quantlib/eventstudy.py | 233 | model (beta would be undefined). | STRING |
| HIGH | agent/src/quantlib/eventstudy.py | 485 | # Patell: the standardised CARs are unit-variance under the null, up to the | COMMENT |
| HIGH | agent/src/quantlib/multipletesting.py | 299 | The expected maximum Sharpe under the null, per-observation. Zero when | STRING |
| HIGH | agent/src/quantlib/attribution.py | 352 | wealth relative non-positive and the logarithm undefined, or if | STRING |
| HIGH | agent/src/quantlib/fundmath.py | 337 | f"factor undefined), got {rate!r}" | CODE |
| HIGH | agent/src/quantlib/fundmath.py | 707 | undefined, and returning ``inf`` or ``0`` would both be wrong. | STRING |
| HIGH | agent/src/quantlib/var_backtest.py | 263 | if not ret_index.equals(var_index): | CODE |
| HIGH | agent/src/quantlib/credit.py | 632 | if len(bond_yields) != len(risk_free_yields) or not bond_yields.index.equals( | CODE |
| HIGH | agent/src/quantlib/timeseries.py | 178 | if not y_ser.index.equals(x_ser.index): | CODE |
| HIGH | agent/src/quantlib/valuation/dcf.py | 426 | (weights undefined), if the resulting weights are negative or do | STRING |
| HIGH | agent/src/quantlib/valuation/dcf.py | 752 | ``terminal_year_ebitda <= 0`` (an EV/EBITDA multiple is undefined); | STRING |
| HIGH | agent/src/tools/prediction_market_tool.py | 98 | ``winning_outcome`` null, where a price-only rule would have called them | STRING |
| HIGH | agent/src/strategy_discovery/facade.py | 431 | (fail-closed null) → min_sharpe → decay gate (stale rows excluded | STRING |
| HIGH | agent/src/factors/bench_runner_strict.py | 188 | """One-sample t-stat against zero (returns 0.0 if undefined).""" | STRING |
| HIGH | agent/src/trading/connectors/robinhood/mcp.py | 134 | RobinhoodShapeError: If the list is missing or null, holds a null or | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | agent/tests/test_china_a_engine.py | 218 | """A-share engine forces leverage=1.""" | STRING |
| MEDIUM⚡ | agent/tests/test_crypto_engine.py | 438 | """Spot (leverage=1) should never get liquidated.""" | STRING |
| MEDIUM⚡ | agent/tests/test_korea_equity_engine.py | 265 | # apply_slippage + leverage | COMMENT |
| MEDIUM⚡ | agent/tests/test_korea_equity_engine.py | 291 | # Cash equity is forced to 1.0 leverage regardless of config input. | COMMENT |
| MEDIUM | agent/tests/test_equity_regression.py | 93 | """Different leverage values produce correct margin calculations.""" | STRING |
| MEDIUM⚡ | agent/tests/test_china_futures_engine.py | 333 | """__init__ derives leverage from the first code's margin rate.""" | STRING |
| MEDIUM⚡ | agent/tests/test_china_futures_engine.py | 375 | """IF margin=12% → leverage≈8.33.""" | STRING |
| MEDIUM⚡ | agent/tests/test_consent_commit.py | 85 | # Cash-only ceiling => no profile may request leverage. | COMMENT |
| MEDIUM⚡ | agent/tests/test_consent_commit.py | 299 | # H9: commit-time ceiling re-check is alias-robust (no silent NO-OP) | COMMENT |
| MEDIUM⚡ | agent/tests/test_consent_commit.py | 684 | # module's own default and the floor of the leverage axis, not an invalid type. | COMMENT |
| MEDIUM | agent/tests/test_consent_commit.py | 739 | (2.0, "none", False), # leverage under a cash-only ceiling | CODE |
| MEDIUM | agent/tests/test_consent_commit.py | 328 | """Persist the H19 fixture: numeric leverage and a two-item whitelist.""" | STRING |
| MEDIUM | agent/tests/test_consent_commit.py | 350 | """H19: a string "10" cannot widen numeric leverage 2 by type confusion.""" | STRING |
| MEDIUM⚡ | agent/tests/test_china_futures_pricing_assumptions.py | 113 | """__init__ prices leverage off codes[0] before any bar is seen.""" | STRING |
| MEDIUM⚡ | agent/tests/test_india_equity_engine.py | 171 | # apply_slippage + leverage | COMMENT |
| MEDIUM⚡ | agent/tests/test_india_equity_engine.py | 180 | # Cash delivery is forced to 1.0 leverage regardless of config input. | COMMENT |
| MEDIUM | agent/tests/test_mandate_enforcement.py | 199 | # Leverage (quantitative): tiny funding makes 1x leverage breach. | COMMENT |
| MEDIUM | agent/tests/quantlib/test_volatility.py | 90 | """A leverage-effect correlation must make low strikes the expensive ones. | STRING |
| LOW | agent/tests/quantlib/test_eventstudy.py | 144 | """#1466: the window's days share one estimation error, so their variances do not just add.""" | STRING |
| MEDIUM | agent/backtest/engines/global_futures.py | 185 | # Leverage: most futures have 5-15% margin → 7-20x leverage. | COMMENT |
| MEDIUM | agent/backtest/engines/global_futures.py | 187 | # User can override via config["leverage"]. | COMMENT |
| MEDIUM | agent/backtest/engines/china_futures.py | 174 | # Derive leverage from margin rate of first code, or use config override | COMMENT |
| MEDIUM | agent/backtest/engines/china_futures.py | 336 | """Derive leverage from this contract's own margin requirement.""" | STRING |
| MEDIUM | agent/backtest/engines/vietnam_equity.py | 378 | config = {**config, "leverage": 1.0} # cash equity: no leverage | CODE |
| MEDIUM | agent/backtest/engines/options_portfolio.py | 246 | # research runs that intentionally model unconstrained leverage. | COMMENT |
| MEDIUM | agent/backtest/engines/india_equity.py | 50 | config = {**config, "leverage": 1.0} # cash delivery: no leverage | CODE |
| MEDIUM | agent/backtest/engines/china_a.py | 32 | config = {**config, "leverage": 1.0} # A-shares: no leverage | CODE |
| MEDIUM | agent/backtest/engines/korea_equity.py | 158 | config = {**config, "leverage": 1.0} # cash equity: no leverage | CODE |
| MEDIUM | agent/backtest/engines/base.py | 873 | """Return leverage used to size and margin one symbol.""" | STRING |
| MEDIUM | agent/src/swarm/worker.py | 53 | """Resolve the heartbeat tick interval from env, robust to garbage values. | STRING |
| MEDIUM | agent/src/swarm/worker.py | 65 | """Resolve the delay before the single stream retry, robust to garbage. | STRING |
| MEDIUM | agent/src/swarm/worker.py | 78 | """Resolve the cap for the escalating stream-retry delay, robust to garbage. | STRING |
| MEDIUM | agent/src/quantlib/eventstudy.py | 503 | # makes it robust to the event itself having raised volatility. | COMMENT |
| MEDIUM | agent/src/tools/propose_mandate_tool.py | 243 | """Return the account type label ('cash' unless ceilings allow leverage).""" | STRING |
| MEDIUM | agent/src/strategy_discovery/facade.py | 59 | #: of which drive the evidence harness over reproducible run artifacts. | COMMENT |
| MEDIUM | agent/src/strategy_discovery/evidence_store.py | 72 | #: disposable — rows only ever come from a harness rebuild). | STRING |
| MEDIUM⚡ | agent/src/strategy_discovery/models.py | 33 | #: written (the harness computes over backtest artifacts), the remaining | COMMENT |
| MEDIUM | agent/src/strategy_discovery/models.py | 151 | #: ISO date string ("YYYY-MM-DD") of the last harness verification. | COMMENT |
| MEDIUM⚡ | agent/src/strategy_discovery/evidence_harness.py | 83 | #: Stage of every harness-produced row: the harness computes exclusively | COMMENT |
| MEDIUM | agent/src/live/enforcement.py | 569 | # 5–6. Exposure + leverage need symbol-level signed positions so a sell | COMMENT |
| MEDIUM | agent/src/live/enforcement.py | 591 | # 6. Gross leverage = post-trade gross exposure / account_funding_usd. | COMMENT |
| MEDIUM⚡ | agent/src/live/mandate/commit.py | 57 | #: The leverage axis is the one clamped limit whose FLOOR is spelled as a word: | COMMENT |
| MEDIUM⚡ | agent/src/live/mandate/commit.py | 59 | #: (``leverage_raw = profile.get("leverage", "none")`` below). It is therefore | COMMENT |
| MEDIUM⚡ | agent/src/live/mandate/commit.py | 69 | """Return leverage as a comparable float, or ``None`` when it is not one. | STRING |
| MEDIUM | agent/src/live/mandate/commit.py | 95 | #: daily trade cap, leverage, and instruments. | COMMENT |
| MEDIUM | agent/src/live/mandate/commit.py | 103 | # leverage (single spelling, mapped for completeness) | COMMENT |
| MEDIUM | agent/src/live/mandate/commit.py | 378 | # leverage, and a cash-only PROFILE still fits a numeric ceiling. | COMMENT |
| MEDIUM | agent/src/channels/dingtalk.py | 60 | # Parse using SDK's ChatbotMessage for robust handling | COMMENT |
| MEDIUM | agent/src/channels/signal.py | 717 | # Keep aliases of the bot account for robust mention matching. | COMMENT |
| LOW | agent/src/channels/weixin.py | 686 | # If quoted message is media, just pass the text | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | agent/src/channels/feishu.py | 1016 | response = self._client.im.v1.message_reaction.create(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1057 | response = self._client.im.v1.message_reaction.delete(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1401 | response = self._client.im.v1.image.create(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1435 | response = self._client.im.v1.file.create(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1463 | response = self._client.im.v1.message_resource.get(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1498 | response = self._client.im.v1.message_resource.get(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1602 | response = self._client.im.v1.message.get(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1659 | response = self._client.im.v1.message.reply(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1709 | response = self._client.im.v1.message.create(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1761 | response = self._client.cardkit.v1.card.create(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1811 | response = self._client.cardkit.v1.card_element.content(request) | CODE |
| CRITICAL | agent/src/channels/feishu.py | 1843 | response = self._client.cardkit.v1.card.settings(request) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 224 | ### Step 1: Three-Dimensional Trade-off | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 229 | ### Step 2: Final Portfolio Weight Determination | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 235 | ### Step 3: Portfolio Holdings Finalization | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 239 | ### Step 4: Historical Backtest Execution | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 245 | ### Step 5: Portfolio Performance Attribution | COMMENT |
| LOW⚡ | agent/src/swarm/presets/pairs_research_lab.yaml | 80 | ### Step 1: Unit-root preconditions | COMMENT |
| LOW⚡ | agent/src/swarm/presets/pairs_research_lab.yaml | 87 | ### Step 2: Cointegration tests | COMMENT |
| LOW | agent/src/swarm/presets/pairs_research_lab.yaml | 104 | ### Step 3: Mean-reversion parameters | COMMENT |
| LOW | agent/src/swarm/presets/pairs_research_lab.yaml | 118 | ### Step 4: Composite arb-value score (max 100) | COMMENT |
| LOW | agent/src/skills/thesis-tracker/SKILL.md | 23 | ## Step 1: Decide the Mode | COMMENT |
| LOW⚡ | agent/src/skills/performance-attribution/SKILL.md | 248 | ### Step 1: Aggregate Analysis | COMMENT |
| LOW⚡ | agent/src/skills/performance-attribution/SKILL.md | 256 | ### Step 2: Attribution Decomposition | COMMENT |
| LOW⚡ | agent/src/skills/performance-attribution/SKILL.md | 264 | ### Step 3: Style Analysis | COMMENT |
| LOW⚡ | agent/src/skills/performance-attribution/SKILL.md | 272 | ### Step 4: Conclusions and Recommendations | COMMENT |
| LOW | agent/src/skills/dividend-analysis/SKILL.md | 39 | ### Step 1: Normalize the Dividend | COMMENT |
| LOW | agent/src/skills/dividend-analysis/SKILL.md | 51 | ### Step 2: Check Coverage | COMMENT |
| LOW | agent/src/skills/dividend-analysis/SKILL.md | 67 | ### Step 3: Diagnose Dividend Growth Quality | COMMENT |
| LOW | agent/src/skills/dividend-analysis/SKILL.md | 84 | ### Step 4: Check Balance Sheet Flexibility | COMMENT |
| LOW | agent/src/skills/dividend-analysis/SKILL.md | 96 | ### Step 5: Separate Dividend Yield from Total Return | COMMENT |
| LOW | agent/src/skills/valuation-model/SKILL.md | 27 | #### Step 1: Forecast free cash flow (usually 5 years) | COMMENT |
| LOW | agent/src/skills/valuation-model/SKILL.md | 44 | #### Step 2: Calculate WACC | COMMENT |
| LOW | agent/src/skills/valuation-model/SKILL.md | 68 | #### Step 3: Terminal Value | COMMENT |
| LOW | agent/src/skills/valuation-model/SKILL.md | 78 | #### Step 4: Sensitivity Analysis | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 19 | ## Step 1: Super-Trend Confirmation | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 32 | ## Step 2: Physical Supply-Chain Decomposition | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 64 | ## Step 3: Bottleneck Identification — Finding "Choke Points" | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 79 | ## Step 4: Company Screening — From Bottleneck to Tickers | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 102 | ## Step 5: Cross-Validation — Don't Trust a Single Story | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 125 | ## Step 6: Output — Bottleneck Opportunity Board | COMMENT |
| LOW | agent/src/skills/bottleneck-hunter/SKILL.md | 167 | ## Step 7: Inventory Update — Maintain the Bottleneck Map | COMMENT |
| LOW | …gy-dev-manager/references/strategy_extraction_guide.md | 62 | ### Step 1: Identify the Strategy Type | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 75 | ### Step 2: Extract the Signal Generation Logic | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 85 | ### Step 3: Extract Entry Conditions | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 94 | ### Step 4: Extract Exit Conditions | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 103 | ### Step 5: Extract Position Sizing Rules | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 112 | ### Step 6: Extract Risk Management Parameters | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 122 | ### Step 7: Identify Required Data Inputs | COMMENT |
| LOW⚡ | …gy-dev-manager/references/strategy_extraction_guide.md | 131 | ### Step 8: Map to SignalEngine Template Parameters | COMMENT |
| LOW⚡ | …strategy-dev-manager/templates/factor_signal_engine.py | 44 | # Step 1: Compute raw factor values for each symbol | COMMENT |
| LOW⚡ | …strategy-dev-manager/templates/factor_signal_engine.py | 53 | # Step 2: Cross-sectional ranking | COMMENT |
| LOW | …strategy-dev-manager/templates/factor_signal_engine.py | 78 | # Step 3: Clip signals to [-1, 1] | COMMENT |
| LOW | agent/src/skills/macro-analysis/SKILL.md | 113 | ### Step 1: Data Collection and Current-State Description | COMMENT |
| LOW | agent/src/skills/macro-analysis/SKILL.md | 122 | ### Step 2: Cycle Positioning | COMMENT |
| LOW | agent/src/skills/macro-analysis/SKILL.md | 133 | ### Step 3: Policy Impact Assessment | COMMENT |
| LOW | agent/src/skills/macro-analysis/SKILL.md | 142 | ### Step 4: Asset Allocation Tilt | COMMENT |
| LOW | agent/src/skills/management-deep-dive/SKILL.md | 23 | ## Step 1: Identify Key People | COMMENT |
| LOW | agent/src/skills/management-deep-dive/SKILL.md | 39 | ## Step 2: CEO Circle of Competence | COMMENT |
| LOW | agent/src/skills/management-deep-dive/SKILL.md | 60 | ## Step 3: Integrity Assessment (most important) | COMMENT |
| LOW | agent/src/skills/management-deep-dive/SKILL.md | 93 | ## Step 4: Capital Allocation | COMMENT |
| LOW | agent/src/skills/management-deep-dive/SKILL.md | 118 | ## Step 5: Governance | COMMENT |
| LOW⚡ | agent/src/skills/management-deep-dive/SKILL.md | 142 | ## Step 6: Side Validation | COMMENT |
| LOW⚡ | agent/src/skills/management-deep-dive/SKILL.md | 150 | ## Step 7: Post-CEO Scenario | COMMENT |
| LOW⚡ | agent/src/skills/management-deep-dive/SKILL.md | 159 | ## Step 8: Output | COMMENT |
| LOW | agent/src/skills/management-deep-dive/SKILL.md | 181 | ## Step 9: Save | COMMENT |
| LOW⚡ | …/skills/cross-market-strategy/example_signal_engine.py | 38 | # Step 1: raw signals per market | COMMENT |
| LOW⚡ | …/skills/cross-market-strategy/example_signal_engine.py | 45 | # Step 2: volatility-adjusted weights | COMMENT |
| LOW | agent/src/channels/dingtalk.py | 753 | # Step 1: Exchange downloadCode for a temporary download URL | COMMENT |
| LOW | agent/src/channels/dingtalk.py | 768 | # Step 2: Download the file content | COMMENT |
| LOW | agent/src/channels/weixin.py | 1377 | # Step 1: Get upload URL from server (prefer upload_full_url, fallback to upload_param) | COMMENT |
| LOW | agent/src/channels/weixin.py | 1401 | # Step 2: AES-128-ECB encrypt and POST to CDN | COMMENT |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 61 | # adaptation lands. | COMMENT |
| LOW | docker-compose.yml | 21 | - vibe-runs:/app/agent/runs | COMMENT |
| LOW | requirements-lock.txt | 161 | --hash=sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0 | COMMENT |
| LOW | requirements-lock.txt | 1281 | --hash=sha256:fe2a4c95aeba2209434e7b31172da572846cae8ca0bf1e7013e61b99fbbf5e72 | COMMENT |
| LOW | requirements-lock.txt | 1661 | # langgraph | COMMENT |
| LOW | requirements-lock.txt | 2321 | --hash=sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda \ | COMMENT |
| LOW | requirements-lock.txt | 3181 | # pandas | COMMENT |
| LOW | requirements-lock.txt | 3461 | requests==2.34.2 \ | COMMENT |
| LOW | requirements-lock.txt | 3961 | # aiosignal | COMMENT |
| LOW | requirements-channels-lock.txt | 161 | # httpcore | COMMENT |
| LOW | tools/ci_grep_gates.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | frontend/src/components/layout/Layout.tsx | 381 | // Language switcher — dropdown listing every language registered in | COMMENT |
| LOW | frontend/src/pages/Agent.tsx | 1301 | COMMENT | |
| LOW | wiki/site.js | 1 | // Shared shell for every wiki page: theme, GitHub stars, header shadow, the | COMMENT |
| LOW | wiki/functions/_middleware.js | 1 | // In-path traffic classifier for vibetrading.wiki (Cloudflare Pages Function). | COMMENT |
| LOW | wiki/functions/api/stats.js | 1 | // GET /api/stats — aggregate numbers for the wiki footer. | COMMENT |
| LOW | desktop/electron/requirements-windows-lock.txt | 161 | --hash=sha256:f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0 | COMMENT |
| LOW | desktop/electron/requirements-windows-lock.txt | 1221 | # via | COMMENT |
| LOW | desktop/electron/requirements-windows-lock.txt | 1541 | # -r agent/requirements.txt | COMMENT |
| LOW | desktop/electron/requirements-windows-lock.txt | 3321 | --hash=sha256:fe31f28c94402043161876a258a9c6f757cb485905c7614ce8d6cd40e6b7bdc1 \ | COMMENT |
| LOW | desktop/electron/requirements-windows-lock.txt | 3781 | tushare==1.4.29 \ | COMMENT |
| LOW | desktop/electron/requirements-windows-lock.txt | 3801 | # openai | COMMENT |
| LOW | agent/requirements-channels.txt | 1 | # Channel SDK dependencies baked into the Docker image. | COMMENT |
| LOW | agent/mcp_server.py | 1921 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | agent/mcp_server.py | 2501 | # | COMMENT |
| LOW | agent/mcp_server.py | 2521 | # these tools parses/clamps its own ``**kwargs`` — and ToolRegistry.execute | COMMENT |
| LOW | agent/tests/conftest.py | 21 | # Sandbox the config runtime root BEFORE any test module is imported (#1116). | COMMENT |
| LOW | agent/tests/conftest.py | 41 | # consults ``VIBE_TRADING_HOME`` first and only falls back to | COMMENT |
| LOW | agent/tests/conftest.py | 61 | COMMENT | |
| LOW | agent/tests/test_orderbook_depth_tool.py | 61 | # The four-level book used for the impact-cost hand-calc tests. | COMMENT |
| LOW | agent/tests/test_agent_grounding.py | 621 | assert _scan_symbols(text) == expected | COMMENT |
| LOW | agent/tests/test_strategy_store.py | 1441 | COMMENT | |
| LOW | agent/tests/test_shadow_attribution.py | 121 | profile=_profile(), roundtrips=roundtrips, shadow_pnl=0.0, | COMMENT |
| LOW | agent/tests/test_readme_counts.py | 61 | BADGE_ORDER = ("skills", "brokers", "presets", "alphas", "engines", "quantlib") | COMMENT |
| LOW | agent/tests/test_readme_counts.py | 601 | ) | COMMENT |
| LOW | agent/tests/test_research_papers_tool.py | 721 | } | COMMENT |
| LOW | agent/tests/test_mcp_new_tools.py | 21 | COMMENT | |
| LOW | agent/tests/quantlib/valuation/test_dcf.py | 41 | fcff_bridge, | COMMENT |
| LOW | agent/tests/quantlib/valuation/test_dcf.py | 61 | # | COMMENT |
| LOW | agent/cli/main.py | 841 | """Render the bottom hint bar in muted style.""" | COMMENT |
| LOW | agent/cli/_legacy.py | 941 | COMMENT | |
| LOW | agent/cli/_legacy.py | 3061 | "or set [bold]COPILOT_GITHUB_TOKEN[/bold]." | COMMENT |
| LOW | agent/cli/_legacy.py | 6201 | next_steps.add_row("Config", f"[cyan]{_INIT_ENV_PATH}[/cyan]") | COMMENT |
| LOW | agent/backtest/metrics.py | 41 | # data granularity; model as US equity session as a conservative default) | COMMENT |
| LOW | agent/backtest/runner.py | 321 | ) | COMMENT |
| LOW | agent/backtest/runner.py | 341 | # unused top-level import. Direct ``getattr``/``setattr``/``delattr`` indirection | COMMENT |
| LOW | agent/backtest/runner.py | 1201 | to source ``code/signal_engine.py``. | COMMENT |
| LOW | agent/backtest/run_card.py | 21 | # card without bound. | COMMENT |
| LOW | agent/backtest/engines/_market_hooks.py | 101 | (re.compile(r"^\d{3,5}\.HK$", re.I), "hk_equity"), | COMMENT |
| LOW | agent/backtest/engines/_market_hooks.py | 141 | # Global futures: product+YYMM (e.g. CL2412, ES2503) | COMMENT |
| LOW | agent/backtest/engines/_market_hooks.py | 161 | # China futures: main continuous contract (RB0, IF0, MA0). Dated contracts | COMMENT |
| LOW | agent/backtest/engines/_market_hooks.py | 181 | # already covered here for no gain. | COMMENT |
| LOW | agent/backtest/engines/_market_hooks.py | 201 | # main: this PR's branch point predates it. | COMMENT |
| LOW | agent/backtest/engines/base.py | 521 | self.rebalance_bars_executed = 0 | COMMENT |
| LOW | agent/backtest/engines/base.py | 541 | self.base_price_fields: tuple[str, ...] = ("pre_close",) | COMMENT |
| LOW | agent/backtest/loaders/registry.py | 141 | # every market only so the cross-market auto-resolver can *reach* it, not so an | COMMENT |
| LOW | agent/backtest/loaders/registry.py | 221 | "local", | COMMENT |
| LOW | agent/backtest/loaders/registry.py | 241 | # endpoints; a global contract has no network source and reaches ``local``. | COMMENT |
| LOW | agent/backtest/loaders/registry.py | 281 | # Split-adjusted only. | COMMENT |
| LOW | agent/backtest/loaders/registry.py | 301 | # offsets: 600519.SH fqt=1 - fqt=0 takes five values (-103.46 / -79.58 / | COMMENT |
| 61 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 224 | ### Step 1: Three-Dimensional Trade-off | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 229 | ### Step 2: Final Portfolio Weight Determination | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 235 | ### Step 3: Portfolio Holdings Finalization | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 239 | ### Step 4: Historical Backtest Execution | COMMENT |
| LOW⚡ | agent/src/swarm/presets/etf_allocation_desk.yaml | 245 | ### Step 5: Portfolio Performance Attribution | COMMENT |
| LOW⚡ | agent/src/swarm/presets/pairs_research_lab.yaml | 80 | ### Step 1: Unit-root preconditions | COMMENT |
| LOW⚡ | agent/src/swarm/presets/pairs_research_lab.yaml | 87 | ### Step 2: Cointegration tests | COMMENT |
| LOW | agent/src/swarm/presets/pairs_research_lab.yaml | 104 | ### Step 3: Mean-reversion parameters | COMMENT |
| LOW | agent/src/swarm/presets/pairs_research_lab.yaml | 118 | ### Step 4: Composite arb-value score (max 100) | COMMENT |
| LOW⚡ | …strategy-dev-manager/templates/factor_signal_engine.py | 44 | # Step 1: Compute raw factor values for each symbol | COMMENT |
| LOW⚡ | …strategy-dev-manager/templates/factor_signal_engine.py | 53 | # Step 2: Cross-sectional ranking | COMMENT |
| LOW | …strategy-dev-manager/templates/factor_signal_engine.py | 78 | # Step 3: Clip signals to [-1, 1] | COMMENT |
| LOW⚡ | …/skills/cross-market-strategy/example_signal_engine.py | 38 | # Step 1: raw signals per market | COMMENT |
| LOW⚡ | …/skills/cross-market-strategy/example_signal_engine.py | 45 | # Step 2: volatility-adjusted weights | COMMENT |
| LOW | agent/src/channels/dingtalk.py | 753 | # Step 1: Exchange downloadCode for a temporary download URL | COMMENT |
| LOW | agent/src/channels/dingtalk.py | 768 | # Step 2: Download the file content | COMMENT |
| LOW | agent/src/channels/weixin.py | 1377 | # Step 1: Get upload URL from server (prefer upload_full_url, fallback to upload_param) | COMMENT |
| LOW | agent/src/channels/weixin.py | 1401 | # Step 2: AES-128-ECB encrypt and POST to CDN | COMMENT |
| LOW | agent/src/channels/weixin.py | 1429 | # Step 3: Send message with the media item | COMMENT |
| LOW | agent/src/channels/wecom.py | 439 | # Step 1: init | COMMENT |
| LOW | agent/src/channels/wecom.py | 456 | # Step 2: send chunks | COMMENT |
| LOW | agent/src/channels/wecom.py | 468 | # Step 3: finish | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README_id.md | 147 | - **2026-08-30** 🇬🇧 **Equity LSE hadir tanpa mengubah pence menjadi pounds, dan market yang tutup berhenti memicu live t | CODE |
| MEDIUM | README_ja.md | 136 | - **2026-08-30** 🇬🇧 **LSE 株式がペンスをポンドと誤認せず利用可能になり、閉場中の live trigger も停止**:`.L` シンボルは Yahoo → yfinance → local の市場データフォールバ | CODE |
| MEDIUM | README_ko.md | 136 | - **2026-08-30** 🇬🇧 **LSE 주식을 펜스를 파운드로 오인하지 않고 지원하며, 장 마감 중 live trigger도 멈춥니다**: `.L` 심볼은 이제 Yahoo → yfinance → local 시 | CODE |
| MEDIUM | README.md | 136 | - **2026-08-30** 🇬🇧 **LSE equities arrive without turning pence into pounds, and closed markets stop firing live trigger | CODE |
| MEDIUM | agent/backtest/loaders/rsshub_events.py | 48 | #: knowable only on the next calendar day, matching the event-driven skill's | COMMENT |
| MEDIUM | agent/backtest/loaders/sina_loader.py | 40 | # assignment/paren scaffolding around it. | COMMENT |
| MEDIUM⚡ | agent/src/quantlib/valuation/dcf.py | 1173 | # Top-level orchestration | COMMENT |
| MEDIUM | agent/src/tools/quantlib_tool.py | 97 | #: numbers into a context window helps nobody. | COMMENT |
| MEDIUM | agent/src/tools/block_trades_tool.py | 41 | # context window. Eastmoney paginates; we pull one bounded page. | COMMENT |
| MEDIUM | agent/src/config/schema.py | 26 | # bypassable: a Robinhood agentic URL placed under any other key (e.g. ``rh``) | COMMENT |
| MEDIUM | agent/src/providers/capabilities.py | 147 | # GLM thinking models (glm-4.5+/glm-5.x) stream the chain-of-thought as | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …nd/src/components/charts/AttributionWaterfallChart.tsx | 105 | name: "placeholder", | CODE |
| LOW | frontend/src/i18n/locales/ja.json | 1148 | "placeholder": "例: 000001.SZ で単純な移動平均戦略を2024年について検証する", | CODE |
| LOW | frontend/src/i18n/locales/de.json | 1153 | "placeholder": "z. B. Testen Sie eine einfache Moving-Average-Strategie auf 000001.SZ über 2024", | CODE |
| LOW | frontend/src/i18n/locales/zh-CN.json | 1148 | "placeholder": "例如:为 000001.SZ 创建双均线交叉策略,回测 2024 年", | CODE |
| LOW | frontend/src/i18n/locales/en.json | 1153 | "placeholder": "e.g. Test a simple moving-average strategy on 000001.SZ over 2024", | CODE |
| LOW | frontend/src/i18n/locales/pt-BR.json | 1153 | "placeholder": "por exemplo Teste uma estratégia simples de média móvel em 000001.SZ ao longo de 2024", | CODE |
| LOW | frontend/src/i18n/locales/ko.json | 1148 | "placeholder": "예: 000001.SZ의 단순 이동평균 전략을 2024년 구간에서 테스트", | CODE |
| LOW | frontend/src/i18n/locales/id.json | 1153 | "placeholder": "mis. Uji strategi moving average sederhana pada 000001.SZ selama 2024", | CODE |
| LOW | frontend/src/i18n/locales/es.json | 1153 | "placeholder": "ej. Probar una estrategia simple de media móvil en 000001.SZ durante 2024", | CODE |
| LOW | frontend/src/i18n/locales/ar.json | 1148 | "placeholder": "مثال: اختبر استراتيجية بسيطة للمتوسط المتحرك على 000001.SZ خلال عام 2024", | CODE |
| LOW | frontend/src/pages/__tests__/Scheduled.test.tsx | 262 | expect(target).toHaveAttribute("placeholder", "name@example.com"); | CODE |
| LOW | frontend/src/pages/__tests__/Scheduled.test.tsx | 275 | expect(target).toHaveAttribute("placeholder", "Chat, group, or user ID"); | CODE |
| LOW | wiki/docs/main.js | 107 | document.getElementById("docs-search")?.setAttribute("placeholder", ui.searchPlaceholder); | CODE |
| LOW⚡ | agent/tests/test_channel_config_meta.py | 620 | "token": "dummy-token-1234", | CODE |
| LOW | agent/tests/test_channel_config_meta.py | 37 | return {"dummy": "dummy-value"} | CODE |
| LOW | agent/tests/test_channel_config_meta.py | 994 | section = {"webhook_secret": "dummy-secret-1234", "bot_token": "dummy-token"} | CODE |
| LOW | agent/tests/test_email_connection_test.py | 742 | "sender": "user@example.com", | CODE |
| LOW | agent/tests/test_settings_api.py | 179 | @pytest.mark.parametrize("placeholder", ["sk-xxx", "xxx", "gsk_xxx"]) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | agent/tests/test_session_search.py | 220 | # Create a fake session directory | COMMENT |
| MEDIUM | agent/tests/test_strategy_store.py | 854 | # Create a new store instance pointing to the same DB | COMMENT |
| MEDIUM | agent/tests/test_ocr_integration.py | 67 | # Create a synthetic "scanned" PDF: render text as image, save as PDF | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …trategy-dev-manager/references/scheduled_decay_scan.md | 66 | -H "Authorization: Bearer <your-api-key>" \ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/src/channels/wecom.py | 419 | # Read file size and data in a thread to avoid blocking the event loop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/tests/test_skill_writer_tools.py | 301 | path="templates/helper.py", content="def helper(): pass", | CODE |
| LOW | agent/tests/test_backtest_runner_security.py | 714 | " def helper(cls):", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent/src/tools/skill_writer_tool.py | 8 | examples/ # Example usage | STRING |