An easy to use and powerful chaos engineering experiment toolkit.(阿里巴巴开源的一款简单易用、功能强大的混沌实验注入工具)
This report presents the forensic synthetic code analysis of chaosblade-io/chaosblade, a Python project with 6,401 GitHub stars. SynthScan v2.0 examined 192,653 lines of code across 727 source files, recording 5983 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 45.9 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 5983 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | blade-ai/tui/src/cli.tsx | 85 | // ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/cli.tsx | 90 | // ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/cli.tsx | 270 | // ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/cli.tsx | 277 | // ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/utils/overflowProbe.ts | 658 | // ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/store.tsx | 113 | // ── Provider + context plumbing ────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/store.tsx | 145 | // ── Public hooks ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/commands.ts | 326 | // ── built-in commands ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/commands.ts | 534 | // ── Locator command helpers ────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/commands.ts | 2238 | // ── /tasks filter helpers ──────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/commands.ts | 2323 | // ── /review · /experiments · /recover · /skills formatters ────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/commands.ts | 2702 | // ── helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 18 | // ── Step model ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 51 | // ── Per-step value storage ───────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 83 | // ── Validation state ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 97 | // ── Top-level wizard state ───────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 146 | // ── Actions ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 166 | // ── Reducer ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/state/wizard.ts | 331 | // ── Helpers (UI side) ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/SlashMenu.tsx | 121 | // ── Root mode ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/SlashMenu.tsx | 216 | // ── Sub mode ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/InputPrompt.tsx | 286 | // ── Esc / Ctrl+C cascade ──────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/InputPrompt.tsx | 306 | // ── slash menu navigation ─────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/InputPrompt.tsx | 432 | // ── command history ───────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/InputPrompt.tsx | 449 | // ── inline cursor movement ────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/InputPrompt.tsx | 471 | // ── submit ────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/InputPrompt.tsx | 488 | // ── editing at cursor ─────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/boot/BootRunner.tsx | 153 | // -- Effect 1: spawning → health → needs-setup check ─────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/boot/BootRunner.tsx | 240 | // -- Effect 2: sessioning → createSession + welcome card ────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/boot/BootRunner.tsx | 343 | // ── Render ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …e-ai/tui/src/components/boot/PendingTasksCard.test.tsx | 81 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …e-ai/tui/src/components/boot/PendingTasksCard.test.tsx | 90 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/boot/BootOrchestrator.tsx | 54 | // ── Phase 1: preflight ───────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/boot/BootOrchestrator.tsx | 111 | // ── Phase 2: pending tasks ───────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 49 | // ── Layout constants (mirror ConfirmMessage v3) ────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 55 | // ── Shared widgets (private to wizard) ──────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 245 | // ── Radio row (matches Select.tsx ``[A] label`` chip style) ─────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 277 | // ── Text input row ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 321 | // ── Step renderers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 605 | // ── Step metadata (chip glyph + chip label + title) ────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 624 | // ── Main component ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 724 | // ── Async commit handlers ─────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 800 | // ── Keyboard handler ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 967 | // ── Render ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/wizard/WizardCard.tsx | 1045 | // ── Helpers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/shared/Select.tsx | 124 | // ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/shared/Select.tsx | 126 | // ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/shared/Select.tsx | 181 | // ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/components/shared/Select.tsx | 183 | // ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tui/src/api/wizard.ts | 239 | // ── internals ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 10 | # ── Reset global singletons ────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 40 | # ── Settings ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 54 | # ── Temporary skills directory ──────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 126 | # ── Mock run_command ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 194 | # ── AgentState sample ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 256 | # ── Temporary memory directory ──────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 276 | # ── Mock LLM ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 287 | # ── Mock SkillRegistry ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/tests/conftest.py | 300 | # ── Mock config file path ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | blade-ai/tests/test_errors.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| 1080 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tui/src/utils/synchronizedOutput.ts | 43 | export function terminalSupportsSynchronizedOutput( | CODE |
| LOW | blade-ai/tui/src/utils/synchronizedOutput.ts | 87 | export function installSynchronizedOutput( | CODE |
| LOW | blade-ai/tui/src/utils/markdownSplit.ts | 71 | function findEnclosingCodeBlockStart(content: string, index: number): number { | CODE |
| LOW | blade-ai/tui/src/utils/terminalRedrawOptimizer.ts | 62 | export function optimizeMultilineEraseLines(output: string): string { | CODE |
| LOW | blade-ai/tui/src/utils/terminalRedrawOptimizer.ts | 99 | export function installTerminalRedrawOptimizer( | CODE |
| LOW | blade-ai/tui/src/state/commands.ts | 359 | function makePermissionModeHandler( | CODE |
| LOW | blade-ai/tui/src/state/chromeMeasureRef.ts | 152 | export function subscribeChromeMeasureRef(cb: () => void): () => void { | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 76 | def test_is_transient_returns_true(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 80 | def test_is_transient_returns_false_for_permanent(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 84 | def test_is_transient_returns_false_for_plain_exception(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 111 | def test_context_overflow_is_recoverable(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 116 | def test_is_recoverable_returns_true(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 120 | def test_is_recoverable_returns_false_for_transient(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 124 | def test_is_recoverable_returns_false_for_plain_exception(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 142 | def test_finds_last_ai_message(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 151 | def test_empty_messages_returns_fallback(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 154 | def test_skips_tool_only_ai_messages(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 195 | def test_unknown_flag_triggers_replan(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 199 | def test_unknown_flag_case_insensitive(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 203 | def test_unsupported_flag_triggers_replan(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 207 | def test_resource_not_found_triggers_replan(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 210 | def test_permission_denied_no_replan(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors.py | 218 | def test_unknown_flag_dominates_when_combined_with_timeout(self): | CODE |
| LOW | blade-ai/tests/test_errors.py | 37 | def test_default_severity_is_permanent(self): | CODE |
| LOW | blade-ai/tests/test_errors.py | 169 | def test_reasoning_content_fallback(self): | CODE |
| LOW | blade-ai/tests/test_errors.py | 181 | def test_prefers_content_over_reasoning(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 25 | def test_empty_returns_unknown(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 31 | def test_none_returns_unknown(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 37 | def test_bad_file_descriptor_is_transient(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 48 | def test_timeout_is_transient(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 53 | def test_connection_refused_is_transient(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 58 | def test_dns_lookup_is_transient(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 63 | def test_diskpressure_is_persistent(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 69 | def test_evicted_is_persistent(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 76 | def test_permission_denied_is_auth(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 87 | def test_resource_not_found_is_target_gone(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 97 | def test_unknown_flag_is_interface_mismatch(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 114 | def test_completely_novel_error_falls_to_unknown(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 119 | def test_priority_auth_beats_other_overlaps(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 135 | def test_target_gone_returns_true(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 139 | def test_user_config_returns_true(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 147 | def test_transient_returns_false(self): | CODE |
| LOW⚡ | blade-ai/tests/test_errors_classify.py | 153 | def test_unknown_returns_false(self): | CODE |
| LOW⚡ | blade-ai/tests/test_server/test_sse_batcher.py | 11 | def test_disabled_passes_through(self): | CODE |
| LOW⚡ | blade-ai/tests/test_server/test_sse_batcher.py | 19 | def test_disabled_flush_empty(self): | CODE |
| LOW⚡ | blade-ai/tests/test_server/test_sse_batcher.py | 23 | def test_disabled_structural_passes_through(self): | CODE |
| LOW⚡ | blade-ai/tests/test_server/test_sse_batcher.py | 34 | def test_single_token_buffered(self): | CODE |
| LOW⚡ | blade-ai/tests/test_server/test_sse_batcher.py | 39 | def test_buffered_tokens_flushed_on_structural(self): | CODE |
| LOW⚡ | blade-ai/tests/test_server/test_sse_batcher.py | 49 | def test_thinking_buffered_separately(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 71 | def test_chars_threshold_triggers_flush(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 81 | def test_chars_threshold_includes_thinking(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 92 | def test_deadline_flush_on_next_feed(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 106 | def test_deadline_not_exceeded_keeps_buffering(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 119 | def test_task_id_preserved_on_flush(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 126 | def test_task_id_updated_from_latest_event(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 137 | def test_flush_with_nothing_buffered(self): | CODE |
| LOW | blade-ai/tests/test_server/test_sse_batcher.py | 141 | def test_only_structural_events(self): | CODE |
| LOW | blade-ai/tests/test_server/test_agent_runtime.py | 36 | async def test_short_circuits_when_no_llm_bound_key_changed(fake_app): | CODE |
| LOW | blade-ai/tests/test_server/test_agent_runtime.py | 51 | async def test_short_circuits_on_empty_iterable(fake_app): | CODE |
| LOW | blade-ai/tests/test_server/test_agent_runtime.py | 62 | async def test_rebuilds_and_swaps_state_on_llm_bound_change(fake_app): | CODE |
| 3074 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tests/test_memory/test_hook.py | 322 | except Exception: | CODE |
| LOW | blade-ai/tests/test_memory/test_hook.py | 368 | except Exception: | CODE |
| LOW | …e-ai/tests/test_observability/test_metrics_endpoint.py | 88 | except Exception: | CODE |
| LOW | blade-ai/scripts/uninstall.sh | 229 | except Exception: | CODE |
| LOW | blade-ai/scripts/install.sh | 176 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/chaosblade_installer.py | 175 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/chaosblade_installer.py | 183 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/chaosblade_installer.py | 222 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 285 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 302 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 349 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 375 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 465 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 535 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 609 | except Exception as e: # pragma: no cover — helper catches its own | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 743 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 898 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 973 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 1100 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 1122 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 1168 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/shell.py | 69 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 137 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 187 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 269 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 314 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 352 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 397 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/retry.py | 94 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/knowledge_reader.py | 234 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/web_search.py | 70 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/tools/kubectl.py | 271 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/compactor.py | 665 | except Exception as e: | STRING |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 187 | except Exception as e: # extractor must never raise, but guard anyway | CODE |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 201 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 374 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 584 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 666 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 679 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 741 | except Exception: | CODE |
| MEDIUM | blade-ai/src/chaos_agent/memory/tokens.py | 353 | def _hf_enabled() -> bool: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tokens.py | 249 | except Exception as e: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tokens.py | 273 | except Exception as e: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tokens.py | 389 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 234 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 348 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 357 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 406 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 428 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tui_session_store.py | 392 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 408 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 544 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/config/wizard_validators.py | 262 | except Exception as e: | CODE |
| LOW | blade-ai/src/chaos_agent/config/wizard_validators.py | 304 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/config/wizard_validators.py | 390 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/config/wizard_validators.py | 400 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/console.py | 79 | except Exception: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/console.py | 85 | except Exception: | CODE |
| MEDIUM | blade-ai/src/chaos_agent/tui/console.py | 76 | def bell(self) -> None: | CODE |
| MEDIUM | blade-ai/src/chaos_agent/tui/console.py | 82 | def clear(self) -> None: | CODE |
| 394 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tests/test_errors_classify.py | 7 | CODE | |
| LOW | blade-ai/tests/test_errors_classify.py | 9 | CODE | |
| LOW | blade-ai/tests/_helpers.py | 8 | CODE | |
| LOW | blade-ai/tests/test_server/test_agent_runtime.py | 12 | CODE | |
| LOW | …ade-ai/tests/test_server/routes/test_phase3a_routes.py | 19 | CODE | |
| LOW | …ade-ai/tests/test_server/routes/test_phase3a_routes.py | 45 | CODE | |
| LOW | …ade-ai/tests/test_server/routes/test_phase3a_routes.py | 46 | CODE | |
| LOW | …ade-ai/tests/test_server/routes/test_phase3a_routes.py | 47 | CODE | |
| LOW | …ade-ai/tests/test_server/routes/test_phase3a_routes.py | 48 | CODE | |
| LOW | …ade-ai/tests/test_server/routes/test_phase3a_routes.py | 67 | CODE | |
| LOW | blade-ai/tests/test_server/routes/test_wizard.py | 15 | CODE | |
| LOW | blade-ai/tests/test_server/routes/test_wizard.py | 18 | CODE | |
| LOW | blade-ai/tests/test_server/routes/test_wizard.py | 19 | CODE | |
| LOW | blade-ai/tests/test_server/routes/test_wizard.py | 20 | CODE | |
| LOW | blade-ai/tests/test_server/routes/test_wizard.py | 36 | CODE | |
| LOW | …tests/test_server/routes/test_turn_double_interrupt.py | 26 | CODE | |
| LOW | blade-ai/tests/test_tools/test_fault_type.py | 3 | CODE | |
| LOW | blade-ai/tests/test_tools/test_guard_parser.py | 3 | CODE | |
| LOW | blade-ai/tests/test_tools/test_guard_parser.py | 5 | CODE | |
| LOW | blade-ai/tests/test_utils/test_coerce.py | 3 | CODE | |
| LOW | blade-ai/tests/test_utils/test_coerce.py | 5 | CODE | |
| LOW | blade-ai/tests/test_utils/test_file_watcher.py | 12 | CODE | |
| LOW | blade-ai/tests/test_utils/test_file_watcher.py | 16 | CODE | |
| LOW | blade-ai/tests/test_utils/test_file_watcher.py | 20 | CODE | |
| LOW | blade-ai/tests/test_utils/test_fault_context.py | 13 | CODE | |
| LOW | blade-ai/tests/test_utils/test_blade_uid.py | 15 | CODE | |
| LOW | blade-ai/tests/test_utils/test_inject_context.py | 10 | CODE | |
| LOW | blade-ai/tests/integration/test_fault_spec_e2e.py | 19 | CODE | |
| LOW | blade-ai/tests/integration/test_postmortem_e2e.py | 17 | CODE | |
| LOW | blade-ai/tests/integration/test_postmortem_e2e.py | 629 | CODE | |
| LOW | blade-ai/tests/test_tui/test_prompt_keymap.py | 19 | CODE | |
| LOW | blade-ai/tests/test_tui/test_prompt_keymap.py | 21 | CODE | |
| LOW | blade-ai/tests/test_tui/test_tool_panel.py | 23 | CODE | |
| LOW | blade-ai/tests/test_tui/test_experiment_card.py | 20 | CODE | |
| LOW | blade-ai/tests/test_tui/test_replay.py | 23 | CODE | |
| LOW | blade-ai/tests/test_tui/test_onboarding_wizard.py | 9 | CODE | |
| LOW | blade-ai/tests/test_tui/conftest.py | 29 | CODE | |
| LOW | blade-ai/tests/test_tui/test_jit_hints.py | 20 | CODE | |
| LOW | blade-ai/tests/test_tui/test_markdown_domain.py | 16 | CODE | |
| LOW | blade-ai/tests/test_tui/test_app_injection_count.py | 12 | CODE | |
| LOW | blade-ai/tests/test_tui/test_phase_timeline.py | 15 | CODE | |
| LOW | blade-ai/tests/test_tui/test_phase_timeline.py | 21 | CODE | |
| LOW | blade-ai/tests/test_tui/test_inflight.py | 20 | CODE | |
| LOW | blade-ai/tests/test_tui/test_cost_latency.py | 19 | CODE | |
| LOW | blade-ai/tests/test_tui/test_preflight.py | 3 | CODE | |
| LOW | blade-ai/tests/test_tui/test_locators.py | 21 | CODE | |
| LOW | blade-ai/tests/test_tui/test_state.py | 3 | CODE | |
| LOW | blade-ai/tests/test_tui/test_intent_confirm_risk.py | 21 | CODE | |
| LOW | blade-ai/tests/test_tui/test_live_coordinator.py | 29 | CODE | |
| LOW | blade-ai/tests/test_tui/test_intent.py | 3 | CODE | |
| LOW | blade-ai/tests/test_tui/test_recording.py | 24 | CODE | |
| LOW | blade-ai/tests/test_tui/test_theme_a11y.py | 22 | CODE | |
| LOW | blade-ai/tests/test_tui/test_baseline_compare.py | 25 | CODE | |
| LOW | blade-ai/tests/test_tui/test_commands_mode.py | 10 | CODE | |
| LOW | blade-ai/tests/test_tui/test_renderer_snapshots.py | 21 | CODE | |
| LOW | blade-ai/tests/test_tui/test_result_timeline.py | 20 | CODE | |
| LOW | blade-ai/tests/test_tui/test_result_timeline.py | 24 | CODE | |
| LOW | blade-ai/tests/test_tui/test_layout_cjk.py | 14 | CODE | |
| LOW | blade-ai/tests/test_agent/test_fault_spec.py | 15 | CODE | |
| LOW | blade-ai/tests/test_agent/test_metric_extractor.py | 8 | CODE | |
| 426 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .yamllint.yml | 1 | # Copyright 2025 The ChaosBlade Authors | COMMENT |
| LOW | nsexec.c | 21 | #include <sched.h> | COMMENT |
| LOW | .golangci.yml | 1 | # Copyright 2025 The ChaosBlade Authors | COMMENT |
| LOW | licenserc.toml | 1 | # Copyright 2025 The ChaosBlade Authors | COMMENT |
| LOW | licenserc.toml | 41 | # 1. `includes` does not support `!` | COMMENT |
| LOW | licenserc.toml | 61 | # There are also preset attributes that can be used in the header template (no need to surround them with `props[]`).: | COMMENT |
| LOW | hack/init.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | hack/verify-gofmt.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | hack/update-gofmt.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | hack/update-imports.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | hack/verify-imports.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | blade-ai/pyproject.toml | 61 | [tool.hatch.build.targets.wheel] | COMMENT |
| LOW | blade-ai/pyproject.toml | 81 | # only fires on wheel builds) — main.py's _resolve_ts_bundle walks the | COMMENT |
| LOW | blade-ai/tui/vitest.config.ts | 21 | // Tests that render Ink components are .tsx (JSX); everything | COMMENT |
| LOW | blade-ai/tui/src/cli.tsx | 81 | // ``blade-ai config-wizard`` CLI command — see ``utils/configGate.ts``. | COMMENT |
| LOW | blade-ai/tui/src/cli.tsx | 101 | const capturedAt = new Date().toISOString(); | COMMENT |
| LOW | blade-ai/tui/src/cli.tsx | 121 | // 1. Terminal redraw optimizer: folds Ink's per-line | COMMENT |
| LOW | blade-ai/tui/src/utils/printGoodbye.tsx | 41 | COMMENT | |
| LOW | blade-ai/tui/src/utils/overflowProbe.ts | 181 | // Module-scope refs. Hack but intentional: lets MainContent and | COMMENT |
| LOW | blade-ai/tui/src/utils/overflowProbe.ts | 661 | // Why this is the killer probe for the "blank gap" mystery: the | COMMENT |
| LOW | blade-ai/tui/src/utils/overflowProbe.ts | 881 | COMMENT | |
| LOW | blade-ai/tui/src/state/commands.ts | 841 | // boot screen runs (LLM key valid / kubeconfig parses / | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1081 | await runSessionInfoHandler(ctx); | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1101 | dispatchesOwnTurn: true, | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1281 | pushLog(ctx, formatReviewCard(taskId, data), "info"); | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1321 | // | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1441 | } | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1621 | }, | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 1941 | async handler(ctx) { | COMMENT |
| LOW | blade-ai/tui/src/state/commands.ts | 2041 | } | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1121 | // pending — so that when the FIRST token finally arrives, | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1301 | // ✓" strip even though execute / verify never ran. Users | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1521 | // The next 3 tests lock in the CONFIRM_RECEIVED force-flush contract: | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1981 | // tail and the end-of-turn TurnUsageItem both go silent for the | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 2121 | // c1 still running; agent emits inter-tool commentary token. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 2281 | COMMENT | |
| LOW | blade-ai/tui/src/state/reducer.ts | 741 | // Reset the per-turn rejection flag so a follow-up turn | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 761 | dur: performance.now() - __perfStart, | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 781 | COMMENT | |
| LOW | blade-ai/tui/src/state/reducer.ts | 801 | // this, the dynamic frame would have to re-paint the entire | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 821 | // tailItem]`` which is BACKWARDS from the chronological | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 921 | pendingLen: next.length, | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 941 | // pending from before (a resolved confirm card, a stale agent | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 981 | // 1. Field missing from frame entirely — older servers, or | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1001 | ...state, | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1061 | COMMENT | |
| LOW | blade-ai/tui/src/state/reducer.ts | 1161 | // carries a name, match the FIRST running tool with that | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1261 | // leading group, the group is now stable and can be flushed | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1281 | const nextIsInjection = | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1301 | // stepper at pending[0] (its old home) every thinking / | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1361 | // agent as "might still receive tokens", but the server | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1381 | // frame doesn't grow with confirm content. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1401 | let s = sanitized === state.pending ? state : { ...state, pending: sanitized }; | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1481 | // Mark the matching ConfirmItem resolved and flip the stream | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1521 | // sees as a flicker burst right before the cursor returns to | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1541 | // so ``/show E1`` / ``/copy E1`` / ``/rerun E1`` can resolve | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1581 | // --------------------------------------------------------------- | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1601 | ...state, | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1741 | return { ...state, session: action.session }; | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.ts | 1841 | // Commit the replayed pending items to history and reset | COMMENT |
| 197 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/src/chaos_agent/chaosblade_installer.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/chaosblade_installer.py | 104 | def _set_executable(path: Path) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/preflight.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/file_reader.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/shell.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/wait.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/__init__.py | 11 | __all__ = [ | CODE |
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/file_writer.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/file_search.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/retry.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/guard.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/web_search.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tools/kubectl.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/compactor.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/memory/context_manager.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/memory/context_manager.py | 41 | __all__ = [ | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/operational_memory.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/hook.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/memory/__init__.py | 17 | __all__ = [ | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tokens.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 519 | __all__ = [ | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tool_compactor.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tui_session_store.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tui_session_store.py | 43 | def set_global_tui_session_store(store: "TuiSessionStore") -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/tui_session_store.py | 201 | def update_stats(self, tui_session_id: str, stats: dict) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 31 | def set_global_session_store(store: "SessionStore") -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/config/settings.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/locators.py | 92 | def update_payload(self, locator: str, **fields) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/recording.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/interrupt.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/interrupt.py | 40 | def set_console(self, console) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/interrupt.py | 44 | def set_renderer(self, renderer) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/interrupt.py | 48 | def set_state(self, state) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/bridge.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/__init__.py | 5 | __all__ = ["run_tui"] | CODE |
| LOW | blade-ai/src/chaos_agent/tui/config_store.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/config_store.py | 180 | def set_many(self, updates: dict[str, Any]) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/replay.py | 47 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/app.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/live_coordinator.py | 96 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/commands.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 136 | def set_permission_mode(self, mode: PermissionMode) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 140 | def set_namespace(self, ns: str) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 144 | def set_cluster_name(self, name: str) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 148 | def set_active_task(self, task_id: str) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 152 | def set_current_phase(self, phase: str) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 156 | def set_streaming(self, streaming: bool) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 160 | def set_dry_run(self, value: bool) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 166 | def set_connection_status(self, status: str) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 170 | def set_config_complete(self, complete: bool) -> None: | CODE |
| LOW⚡ | blade-ai/src/chaos_agent/tui/state.py | 174 | def set_active_task_count(self, count: int) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/state.py | 186 | def set_display_mode(self, mode: DisplayMode) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/state.py | 209 | def set_model_name(self, name: str) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/state.py | 213 | def set_context_limit(self, limit: int) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/renderers/__init__.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/renderers/__init__.py | 80 | def set_interrupt_handler(self, cb: InterruptCallback) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/renderers/__init__.py | 83 | def set_task_done_handler(self, cb: Callable[[str], None]) -> None: | CODE |
| LOW | blade-ai/src/chaos_agent/tui/renderers/tool_panel.py | 39 | logger = logging.getLogger(__name__) | CODE |
| 122 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tests/test_agent/nodes/test_verifier.py | 2461 | CODE | |
| LOW | blade-ai/src/chaos_agent/preflight.py | 771 | CODE | |
| LOW | blade-ai/src/chaos_agent/tools/guard_parser.py | 204 | CODE | |
| LOW | blade-ai/src/chaos_agent/tools/file_search.py | 19 | CODE | |
| LOW | blade-ai/src/chaos_agent/tools/knowledge_reader.py | 132 | CODE | |
| LOW | blade-ai/src/chaos_agent/tools/kubectl.py | 183 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/compactor.py | 316 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/operational_memory.py | 195 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/hook.py | 633 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 361 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/tokens.py | 437 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/tool_compactor.py | 213 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/tool_compactor.py | 421 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/tui_session_store.py | 268 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 508 | CODE | |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 650 | CODE | |
| LOW | blade-ai/src/chaos_agent/config/settings.py | 435 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/inflight.py | 53 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/bridge.py | 42 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/replay.py | 132 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/replay.py | 175 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/replay.py | 304 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/app.py | 142 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/streaming.py | 63 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/streaming.py | 519 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/onboarding.py | 595 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/onboarding.py | 664 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/onboarding.py | 939 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/__init__.py | 87 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/result.py | 302 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/review_panel.py | 122 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/tool_panel.py | 230 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/tool_panel.py | 385 | CODE | |
| LOW | …ade-ai/src/chaos_agent/tui/renderers/phase_timeline.py | 191 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/renderers/confirm.py | 26 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/controllers/commands.py | 1051 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/controllers/commands.py | 1211 | CODE | |
| LOW | blade-ai/src/chaos_agent/tui/controllers/commands.py | 1101 | CODE | |
| LOW | blade-ai/src/chaos_agent/l4/agent.py | 272 | CODE | |
| LOW | blade-ai/src/chaos_agent/l4/agent.py | 631 | CODE | |
| LOW | blade-ai/src/chaos_agent/l4/agent.py | 290 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/app.py | 90 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/turn.py | 246 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/turn.py | 501 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/turn.py | 615 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/status_stream.py | 22 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/status_stream.py | 32 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/recordings.py | 61 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/sessions.py | 256 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/sessions.py | 424 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/inject.py | 19 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/inject.py | 69 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/inject_stream.py | 25 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/inject_stream.py | 89 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/recover.py | 17 | CODE | |
| LOW | blade-ai/src/chaos_agent/utils/blade_uid.py | 79 | CODE | |
| LOW | blade-ai/src/chaos_agent/utils/coerce.py | 42 | CODE | |
| LOW | blade-ai/src/chaos_agent/utils/coerce.py | 111 | CODE | |
| LOW | blade-ai/src/chaos_agent/agent/safety_score.py | 123 | CODE | |
| LOW | blade-ai/src/chaos_agent/agent/factory.py | 155 | CODE | |
| 114 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1133 | // Step 1: agent_loop — stepper materialises in slot. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1144 | // Step 2: safety_check — strip advances to ``safety``. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1155 | // Step 3: execute_loop — strip advances to ``execute``. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1166 | // Step 4: verifier_loop — strip advances to ``verify``. | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 43 | # Step 1: load_memory | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 49 | # Step 2: agent_loop (simulates LLM planning) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 58 | # Step 3: Route after agent_loop → extract_planning_metadata | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 62 | # Step 4: safety_check | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 68 | # Step 5: Route after safety → confirmation_gate (warning needs confirmation) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 72 | # Step 6: baseline_capture (shared across all modes) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 78 | # Step 7: execute_loop (simulates LLM executing blade commands) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 86 | # Step 8: Route after execute_loop → verifier | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 90 | # Step 9: verifier (with mocked blade_status returning Running) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 107 | # Step 10: save_memory | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 522 | # Step 1: initial inject → DB stores task_state="injecting" | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 529 | # Step 2: verification arrives → should transition to "injected" | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 544 | # Step 1: start recovery | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 550 | # Step 2: recovery verification arrives | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tool_compactor.py | 439 | # Step 1: Time-based micro-compact (clear stale tool results) | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tool_compactor.py | 444 | # Step 2: Size-based two-stage truncation | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/session_store.py | 764 | # Step 1: atomic rename. Skip if .jsonl doesn't exist (compact | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/session_store.py | 773 | # Step 2: write snapshot atomically. If this fails the orphan | COMMENT |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 789 | # Step 3: delete the orphan. If this fails leave it — the next | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 697 | # Step 1: kubectl debug node/{node} -n {namespace} --image=busybox -- sleep 3600 | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 732 | # Step 2: kubectl exec {debug_pod} -n {namespace} -c debugger -- {cmd} | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 798 | # Step 3: cleanup debug pod | COMMENT |
| LOW⚡ | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 349 | # Step 1: Discover running tool pods | COMMENT |
| LOW⚡ | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 548 | # Step 2: blade_query_k8s — per-resource check (supplementary) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 255 | # Step 0: Try the original injection pod first (if known) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 365 | # Step 2: Try blade query k8s (primary) then blade status (fallback) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 511 | # Step 1: blade_status — experiment-level check | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 369 | # Step 1: Discover a running otel-c-tool pod via direct run_command | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 511 | # Step 1: Discover tool pod on target node | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 538 | # Step 2: Check for fill file in the tool pod's overlay filesystem | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 556 | # Step 3: Check overlay df for usage increase | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 788 | # Step 3: Parse diskstats and compute write throughput per partition | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 410 | # Step 2: Build blade command (without --kubeconfig) | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 422 | # Step 3: Execute via kubectl exec (direct run_command for tracker visibility) | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 452 | # Step 4: Extract blade_uid from kubectl exec output. | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 759 | # Step 2: Sample /proc/diskstats twice with 5-second interval | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_conflict_check.py | 198 | # Step 1: Discover running tool pods | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_conflict_check.py | 214 | # Step 2: Run blade status --type create in the first available pod. | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_recover_layer1.py | 334 | # Step 1: Execute blade_destroy | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_recover_layer1.py | 348 | # Step 2: Verify via blade_status that experiment is Destroyed | COMMENT |
| LOW | blade-ai/src/chaos_agent/skills/registry.py | 329 | # Step 1: Match scope to directory prefix | COMMENT |
| LOW | blade-ai/src/chaos_agent/skills/registry.py | 343 | # Step 2: Narrow by target keywords. | COMMENT |
| LOW | blade-ai/src/chaos_agent/skills/registry.py | 399 | # Step 3: Collect ALL matching .md files (not just the first) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1133 | // Step 1: agent_loop — stepper materialises in slot. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1144 | // Step 2: safety_check — strip advances to ``safety``. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1155 | // Step 3: execute_loop — strip advances to ``execute``. | COMMENT |
| LOW | blade-ai/tui/src/state/reducer.test.ts | 1166 | // Step 4: verifier_loop — strip advances to ``verify``. | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 43 | # Step 1: load_memory | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 49 | # Step 2: agent_loop (simulates LLM planning) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 58 | # Step 3: Route after agent_loop → extract_planning_metadata | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 62 | # Step 4: safety_check | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 68 | # Step 5: Route after safety → confirmation_gate (warning needs confirmation) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 72 | # Step 6: baseline_capture (shared across all modes) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 78 | # Step 7: execute_loop (simulates LLM executing blade commands) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 86 | # Step 8: Route after execute_loop → verifier | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 90 | # Step 9: verifier (with mocked blade_status returning Running) | COMMENT |
| LOW⚡ | blade-ai/tests/integration/test_inject_graph_flow.py | 107 | # Step 10: save_memory | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 522 | # Step 1: initial inject → DB stores task_state="injecting" | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 529 | # Step 2: verification arrives → should transition to "injected" | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 544 | # Step 1: start recovery | COMMENT |
| LOW⚡ | blade-ai/tests/test_persistence/test_task_store.py | 550 | # Step 2: recovery verification arrives | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tool_compactor.py | 439 | # Step 1: Time-based micro-compact (clear stale tool results) | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/tool_compactor.py | 444 | # Step 2: Size-based two-stage truncation | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/session_store.py | 764 | # Step 1: atomic rename. Skip if .jsonl doesn't exist (compact | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/memory/session_store.py | 773 | # Step 2: write snapshot atomically. If this fails the orphan | COMMENT |
| LOW | blade-ai/src/chaos_agent/memory/session_store.py | 789 | # Step 3: delete the orphan. If this fails leave it — the next | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 697 | # Step 1: kubectl debug node/{node} -n {namespace} --image=busybox -- sleep 3600 | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 732 | # Step 2: kubectl exec {debug_pod} -n {namespace} -c debugger -- {cmd} | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 798 | # Step 3: cleanup debug pod | COMMENT |
| LOW⚡ | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 349 | # Step 1: Discover running tool pods | COMMENT |
| LOW⚡ | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 548 | # Step 2: blade_query_k8s — per-resource check (supplementary) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 255 | # Step 0: Try the original injection pod first (if known) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 365 | # Step 2: Try blade query k8s (primary) then blade status (fallback) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 511 | # Step 1: blade_status — experiment-level check | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 369 | # Step 1: Discover a running otel-c-tool pod via direct run_command | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 511 | # Step 1: Discover tool pod on target node | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 538 | # Step 2: Check for fill file in the tool pod's overlay filesystem | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 556 | # Step 3: Check overlay df for usage increase | COMMENT |
| LOW⚡ | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 788 | # Step 3: Parse diskstats and compute write throughput per partition | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 410 | # Step 2: Build blade command (without --kubeconfig) | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 422 | # Step 3: Execute via kubectl exec (direct run_command for tracker visibility) | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 452 | # Step 4: Extract blade_uid from kubectl exec output. | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/direct_execute.py | 759 | # Step 2: Sample /proc/diskstats twice with 5-second interval | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_conflict_check.py | 198 | # Step 1: Discover running tool pods | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_conflict_check.py | 214 | # Step 2: Run blade status --type create in the first available pod. | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_recover_layer1.py | 334 | # Step 1: Execute blade_destroy | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_recover_layer1.py | 348 | # Step 2: Verify via blade_status that experiment is Destroyed | COMMENT |
| LOW | blade-ai/src/chaos_agent/skills/registry.py | 329 | # Step 1: Match scope to directory prefix | COMMENT |
| LOW | blade-ai/src/chaos_agent/skills/registry.py | 343 | # Step 2: Narrow by target keywords. | COMMENT |
| LOW | blade-ai/src/chaos_agent/skills/registry.py | 399 | # Step 3: Collect ALL matching .md files (not just the first) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | blade-ai/tests/test_server/test_app.py | 52 | # Create a task that never completes | COMMENT |
| MEDIUM⚡ | blade-ai/tests/integration/test_skill_loading_flow.py | 79 | # Create a mixed directory with valid and invalid skills | COMMENT |
| MEDIUM⚡ | blade-ai/tests/test_memory/test_compactor.py | 413 | # Create a very long skill content message that matches extraction heuristics | COMMENT |
| MEDIUM | blade-ai/tests/test_cli/test_runner.py | 53 | # Create a mock registry | COMMENT |
| MEDIUM | blade-ai/tests/test_cli/test_config_manager.py | 104 | # Create a legacy mode.json | COMMENT |
| MEDIUM | blade-ai/tests/test_skills/test_registry.py | 52 | # Create a second skill dir with the same name "test-skill" | COMMENT |
| MEDIUM | blade-ai/tests/test_skills/test_catalog_generator.py | 249 | # Create a skill directory with a file | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/memory/context_manager.py | 510 | # Create a copy with truncated content | COMMENT |
| MEDIUM⚡ | blade-ai/src/chaos_agent/agent/factory.py | 746 | # Create a shared tracing callback that routes to the correct TaskTrace | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/cli/runner.py | 1744 | # Create a separate session file for the recover record. Inject | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/cli/runner.py | 1901 | # Create a lightweight LLM instance for catalog generation | COMMENT |
| MEDIUM | …ade-ai/src/chaos_agent/observability/status_tracker.py | 243 | # Create a tracer span for this node execution | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | blade-ai/src/chaos_agent/tools/file_reader.py | 46 | Read a file safely, with deny-list filtering and directory listing support. If *file_path* points to a directory, r | STRING |
| HIGH | blade-ai/src/chaos_agent/tools/shell.py | 82 | Execute a command safely via async subprocess. Args: cmd: Command and arguments as a list. Never uses shell | STRING |
| HIGH | blade-ai/src/chaos_agent/tools/file_writer.py | 82 | Write content to a file safely. Creates parent directories if they don't exist. Fails if the path is in a denie | STRING |
| HIGH | blade-ai/src/chaos_agent/tools/file_search.py | 24 | Search for files matching a glob pattern under a directory. Recursively searches for files whose names match the gi | STRING |
| HIGH | blade-ai/src/chaos_agent/tools/retry.py | 36 | Execute an async function with exponential backoff retry. Args: func: The awaitable to execute. con | STRING |
| HIGH | blade-ai/src/chaos_agent/agent/attempt_tracker.py | 88 | Record the start of a new pipeline attempt. Returns a delta dict the caller MERGES into state — does not mutate | STRING |
| HIGH | blade-ai/src/chaos_agent/agent/attempt_tracker.py | 144 | Mark the current (last) attempt as ended. Called from the graph's terminal node (save_memory) or from the rejec | STRING |
| HIGH | blade-ai/src/chaos_agent/agent/prompts/builders.py | 383 | Unified prompt builder entry point — routes by PromptMode. This is the P1 integration: all nodes should call this f | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/tests/test_server/test_agent_runtime.py | 109 | # Set state to a spec'd object so getattr returns the default | COMMENT |
| LOW | blade-ai/scripts/install.sh | 462 | # Check if ~/.local/bin is already in PATH | COMMENT |
| LOW | blade-ai/src/chaos_agent/memory/context_manager.py | 228 | # Check if the last message in to_compact is a tool_call (AI message with tool_calls) | COMMENT |
| LOW | blade-ai/src/chaos_agent/server/routes/status_stream.py | 42 | # Check if client disconnected | COMMENT |
| LOW | blade-ai/src/chaos_agent/server/routes/inject.py | 25 | # Check if server is shutting down | COMMENT |
| LOW | blade-ai/src/chaos_agent/server/routes/inject_stream.py | 39 | # Check if server is shutting down | COMMENT |
| LOW | blade-ai/src/chaos_agent/server/routes/inject_stream.py | 119 | # Check if paused at confirmation_gate | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 267 | # Check if blade query k8s is available (not in older ChaosBlade versions) | COMMENT |
| LOW | …ade-ai/src/chaos_agent/agent/nodes/_verifier_layer1.py | 311 | # Check if the original pod is unavailable | COMMENT |
| LOW | …i/src/chaos_agent/agent/nodes/_recover_layer2_parse.py | 399 | # Check if any fault-specific evidence keyword appears in L2 details | COMMENT |
| LOW | …i/src/chaos_agent/agent/nodes/_recover_layer2_parse.py | 406 | # Check if generic health indicators appear (confirming the evidence is generic) | COMMENT |
| LOW | blade-ai/src/chaos_agent/agent/nodes/_conflict_check.py | 105 | # Check if action matches current request (e.g. both are pod-disk-burn) | COMMENT |
| LOW | …ai/src/chaos_agent/agent/nodes/_injection_detection.py | 156 | # Check if the kubectl call succeeded (no error in content) | COMMENT |
| LOW | blade-ai/src/chaos_agent/cli/runner.py | 537 | # Check if graph paused at an interrupt point (confirmation_gate, ask_human, etc.) | COMMENT |
| LOW | scripts/sync_go_mod.sh | 66 | # Check if Makefile exists | COMMENT |
| LOW | scripts/sync_go_mod.sh | 118 | # Check if go.mod exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | blade-ai/tests/test_agent/test_verifier_cross_check.py | 174 | # This is the core E2 win: detect baseline→post hallucination. | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/preflight.py | 1082 | # ── Command orchestration ────────────────────────────────────────── | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/config/settings.py | 32 | # context window size + the compact_ratio that's appropriate for | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/tui/strings.py | 93 | # tokens. We do NOT show the raw chain-of-thought; only one of these | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/tui/state.py | 90 | self.context_limit: int = 128000 # Default context window size | CODE |
| MEDIUM | …de-ai/src/chaos_agent/agent/nodes/_metric_extractor.py | 285 | # "no errors observed" hallucination — if extractor saw 12 OOMKilled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | blade-ai/tests/test_memory/test_context_manager.py | 332 | """Test group_messages_by_round() robust API round grouping.""" | STRING |
| MEDIUM | blade-ai/src/chaos_agent/memory/context_manager.py | 444 | # Use group_messages_by_round for robust grouping: if the first | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/server/routes/recordings.py | 49 | # is robust to symlinks resolving outside the dir). | COMMENT |
| MEDIUM | blade-ai/src/chaos_agent/agent/state.py | 580 | # verifier verdict parsing robust to compression. | COMMENT |
| MEDIUM | …ade-ai/src/chaos_agent/agent/nodes/baseline_capture.py | 1748 | # with it. ``isinstance`` keeps the runner robust | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | blade-ai/tests/test_agent/test_streaming.py | 361 | the 0, the TS reducer's ``Math.max(0, undefined)`` returned | STRING |
| HIGH | blade-ai/src/chaos_agent/agent/streaming.py | 134 | ``Math.max(0, undefined)`` returns ``NaN``, and the per-turn | STRING |
| HIGH⚡ | blade-ai/src/chaos_agent/persistence/task_store.py | 512 | await backend.close() # type: ignore[possibly-undefined] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/src/chaos_agent/tools/blade.py | 70 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/interrupt.py | 53 | CODE | |
| LOW | blade-ai/src/chaos_agent/server/routes/interrupt.py | 63 | CODE | |
| LOW | …ai/src/chaos_agent/agent/nodes/intent_clarification.py | 599 | CODE | |
| LOW | blade-ai/src/chaos_agent/cli/config_manager.py | 128 | CODE | |
| LOW | blade-ai/src/chaos_agent/cli/commands/inject.py | 14 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | licenserc.toml | 55 | # For a defined key-value pair, you can use {{props["key"]}} in the header template, which will be | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | blade-ai/scripts/uninstall.sh | 15 | # Usage: | COMMENT |
| LOW | blade-ai/scripts/install.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tests/test_server/routes/test_turn_double_interrupt.py | 55 | return SimpleNamespace(tasks=tasks, next=("placeholder",), values={}) | CODE |
| LOW | blade-ai/src/chaos_agent/tui/prompt.py | 48 | "placeholder": "#888888", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | blade-ai/tests/test_tui/test_app_injection_count.py | 132 | CODE |