SkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.
This report presents the forensic synthetic code analysis of microsoft/SkillOpt, a Python project with 16,445 GitHub stars. SynthScan v2.0 examined 108,194 lines of code across 397 source files, recording 2256 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 25.6 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2256 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/devin/harvest_devin.py | 67 | def _devin_transcript_candidates() -> List[str]: | CODE |
| LOW | plugins/devin/harvest_devin.py | 106 | def _workspaces_from_registry(storage_root: str) -> List[tuple]: | CODE |
| LOW | plugins/devin/harvest_devin.py | 333 | def harvest_devin_transcripts( | CODE |
| LOW⚡ | tests/test_json_utils.py | 47 | def test_no_json_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 50 | def test_empty_string_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 53 | def test_malformed_json_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 59 | def test_json_with_escaped_chars(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 63 | def test_only_fence_with_no_json_syntax(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 75 | def test_two_top_level_objects(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 78 | def test_brace_inside_quoted_prose_is_ignored(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 83 | def test_real_object_after_quoted_brace(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 95 | def test_two_top_level_arrays(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 98 | def test_array_inside_object_is_ignored(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 101 | def test_bracket_inside_quoted_prose_is_ignored(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 104 | def test_unmatched_prose_brace_does_not_hide_later_array(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 108 | def test_many_unmatched_braces_scan_linearly(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 145 | def test_json_string_values_with_quotes_still_repair(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 152 | def test_no_warning_on_quoted_prose(self, recwarn: pytest.WarningsRecorder) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 159 | def test_no_warning_on_plain_text(self, recwarn: pytest.WarningsRecorder) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 165 | def test_trailing_comma_repaired_when_available(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 170 | def test_two_malformed_objects_too_ambiguous(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 205 | def test_no_array_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 208 | def test_empty_string_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 211 | def test_malformed_array_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 221 | def test_object_not_confused_with_array(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 226 | def test_ignores_prose_brackets_before_valid_array(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 230 | def test_multiple_valid_arrays_are_ambiguous(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 234 | def test_nested_object_array_not_confused_with_array_answer(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 238 | def test_unmatched_prose_brace_before_valid_array(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 25 | def test_code_fence_takes_precedence(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 33 | def test_broken_fence_falls_back_to_bare(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 127 | def test_prose_pseudo_json_returns_none(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 133 | def test_single_quoted_and_backticked_prose_returns_none(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 187 | def test_code_fence_takes_precedence(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 194 | def test_broken_fence_falls_back_to_bare(self) -> None: | CODE |
| LOW | tests/test_hierarchical_merge.py | 29 | def test_batch_size_one_terminates_and_merges(self) -> None: | CODE |
| LOW | tests/test_hierarchical_merge.py | 55 | def test_batch_size_zero_terminates(self) -> None: | CODE |
| LOW | tests/test_hierarchical_merge.py | 75 | def test_normal_batch_size_still_merges(self) -> None: | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 46 | def test_legacy_holdout_archived_task_not_recalled(self): | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 51 | def test_archived_val_not_recalled(self): | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 56 | def test_unrelated_archived_train_can_still_be_recalled(self): | CODE |
| LOW | tests/test_split_hardening_2x3.py | 68 | def test_zero_similarity_returns_empty(self): | CODE |
| LOW | tests/test_split_hardening_2x3.py | 77 | def test_dream_tasks_always_train_even_with_high_test_fraction(self): | CODE |
| LOW | tests/test_split_hardening_2x3.py | 90 | def test_real_tasks_have_exactly_one_split_label(self): | CODE |
| LOW | tests/test_split_hardening_2x3.py | 101 | def test_hash_assigned_test_not_demoted_for_val_top_up(self): | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 124 | def test_assign_splits_rejects_negative_test_fraction(self): | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 128 | def test_assign_splits_rejects_fraction_sum_ge_one(self): | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 132 | def test_mine_forwards_invalid_fractions_to_assign_splits(self): | CODE |
| LOW⚡ | tests/test_split_hardening_2x3.py | 142 | def test_recall_rows_are_train_split_only(self): | CODE |
| LOW | tests/test_split_hardening_2x3.py | 187 | def test_archived_test_never_recalled_through_cycle(self): | CODE |
| LOW | tests/test_split_hardening_2x3.py | 240 | def test_on_disk_zero_val_beats_holdout_alias(self): | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 105 | def _successful_plain_results(*mcp_names: str, answer: str = "answer") -> list[_FakeProc]: | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 113 | def _assert_replay_permissions(config, env, agent_name: str, expected_permission: dict[str, str]) -> None: | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 119 | def _assert_controlled_tool_environment(env, work: str) -> None: | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 167 | def test_resolve_opencode_path_precedence(monkeypatch): | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 174 | def test_resolve_opencode_path_falls_back_to_command(monkeypatch): | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 181 | def test_resolve_opencode_path_preserves_windows_cmd_shim(monkeypatch): | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 191 | def test_resolve_opencode_path_anchors_relative_paths(monkeypatch, tmp_path, which_result, source): | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 696 | def test_failed_call_is_not_cached(): | CODE |
| LOW⚡ | tests/test_backend_opencode.py | 704 | def test_cached_success_clears_stale_call_error(): | CODE |
| 1269 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | requirements.txt | 1 | # ── Core ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 10 | # ── Optional: ALFWorld benchmark ────────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 14 | # ── Optional: Claude model backend ──────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 17 | # ── Optional: Qwen local model (via vLLM) ──────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 26 | # ── Optional: WebUI dashboard ──────────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 29 | # ── Optional: Documentation site ───────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 28 | # ─── Config helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 174 | # ─── Training process management ──────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 435 | # ─── Pipeline Stage HTML ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 466 | # ─── Gradio UI ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 478 | # ── Tab 1: Configure & Launch ──────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 554 | # ── Tab 2: Monitor ─────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 585 | # ── Tab 3: Results ─────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 44 | # ── cross-platform path resolution (Linux + Windows + macOS) ────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 104 | # ── workspace auto-detection ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 149 | # ── helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 213 | # ── task identity + outcome extraction (fuel for the validation gate) ───────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 331 | # ── source 1: Devin ATIF-v1.7 transcripts ──────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 412 | # ── source 2: agentmemory ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 438 | # ── source 3: skill files (.devin/skills) ───────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 473 | # ── main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/claude-code/scripts/install-cron.sh | 17 | # ── SkillOpt-Sleep nightly cycle ──────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/claude-code/scripts/install-cron.sh | 29 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/openclaw/skillopt_sleep_openclaw.py | 84 | # ── Backend implementation ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 34 | # ── ConstantScheduler ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 79 | # ── LinearScheduler ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 165 | # ── CosineScheduler ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 267 | # ── AutonomousScheduler ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 298 | # ── build_scheduler factory ────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 332 | # ── Abstract base class ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_types.py | 8 | # ── Edit ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_types.py | 140 | # ── Patch ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_types.py | 251 | # ── RolloutResult ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/guide/new-benchmark.md | 239 | # ── Lifecycle ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/guide/new-benchmark.md | 248 | # ── Env construction ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/guide/new-benchmark.md | 266 | # ── The rollout method (reflect is inherited) ─────────────────────── | COMMENT |
| MEDIUM | docs/sleep/examples/runner.py | 32 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docs/reference/api.md | 30 | # ── Lifecycle hooks (have defaults; override only if needed) ──────── | COMMENT |
| MEDIUM | docs/reference/api.md | 40 | # ── Abstract methods (subclasses MUST implement) ──────────────────── | COMMENT |
| MEDIUM | configs/features/soft_gate.yaml | 1 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | configs/features/soft_gate.yaml | 3 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | configs/features/soft_gate.yaml | 33 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_spreadsheetbench.sh | 2 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_spreadsheetbench.sh | 8 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_searchqa.sh | 2 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_searchqa.sh | 9 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/eval_only.py | 67 | # ── Reuse registry from train.py ─────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/eval_only.py | 147 | # ── CLI ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 41 | # ── Environment registry ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 128 | # ── CLI ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 303 | # ── Retired CLI options ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 759 | # ── Main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_alfworld.sh | 2 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_alfworld.sh | 13 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/handoff_backend.py | 83 | # ── prompt/answer plumbing ──────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/handoff_backend.py | 103 | # ── handoff file emission ───────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 92 | # ── Model-swap detection (F16) ─────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 671 | # ── evidence log (the night's full evidentiary chain) ──────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 708 | # ── live skill/memory docs ─────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 734 | # ── 1+2. harvest + mine (unless seed_tasks injected) ───────────────── | COMMENT |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/devin/harvest_devin.py | 31 | CODE | |
| LOW | plugins/devin/harvest_devin.py | 40 | CODE | |
| LOW | plugins/devin/judge.py | 23 | CODE | |
| LOW | plugins/devin/mcp_server.py | 21 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 10 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 15 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 16 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 16 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 18 | CODE | |
| LOW | plugins/openclaw/slash_sleep.py | 16 | CODE | |
| LOW | plugins/openclaw/slash_sleep.py | 24 | CODE | |
| LOW | plugins/openclaw/run_sleep.py | 17 | CODE | |
| LOW | plugins/copilot/mcp_server.py | 18 | CODE | |
| LOW | plugins/copilot/skillopt/mcp_server.py | 23 | CODE | |
| LOW | tests/test_json_utils.py | 2 | CODE | |
| LOW | tests/test_hierarchical_merge.py | 6 | CODE | |
| LOW | tests/test_split_hardening_2x3.py | 13 | CODE | |
| LOW | tests/test_backend_opencode.py | 3 | CODE | |
| LOW | tests/test_copilot_tool_scope.py | 23 | CODE | |
| LOW | tests/test_sleep_engine.py | 7 | CODE | |
| LOW | tests/test_holdout_integrity.py | 1 | CODE | |
| LOW | tests/test_claude_code_exec_resolution.py | 9 | CODE | |
| LOW | tests/test_outcome_judges.py | 1 | CODE | |
| LOW | tests/test_role_backend_resolution.py | 3 | CODE | |
| LOW | tests/test_env_section_survives_dedup.py | 15 | CODE | |
| LOW | tests/test_sleep_staging_fanout.py | 6 | CODE | |
| LOW | tests/test_sleep_skill_resolver.py | 6 | CODE | |
| LOW | tests/test_claude_backend_tempdir.py | 2 | CODE | |
| LOW | tests/test_model_change_warning.py | 2 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 6 | CODE | |
| LOW | tests/test_react_agent_no_shell.py | 9 | CODE | |
| LOW | tests/test_console_encoding.py | 3 | CODE | |
| LOW | tests/test_sleep_skill_hint.py | 6 | CODE | |
| LOW | tests/test_gate_no_regression.py | 3 | CODE | |
| LOW | tests/test_azure_openai_compat.py | 14 | CODE | |
| LOW | tests/test_azure_openai_compat.py | 32 | CODE | |
| LOW | tests/test_consolidation_edit_bookkeeping.py | 3 | CODE | |
| LOW | tests/test_harvest_opencode_live.py | 10 | CODE | |
| LOW | tests/test_harvest_opencode.py | 3 | CODE | |
| LOW | tests/test_backend_opencode_live.py | 13 | CODE | |
| LOW | tests/test_scheduler.py | 20 | CODE | |
| LOW | tests/test_scoring.py | 2 | CODE | |
| LOW | tests/test_sleep_dream_metric.py | 2 | CODE | |
| LOW | tests/test_consolidate_split.py | 6 | CODE | |
| LOW | tests/test_cursor_exec_backend.py | 1 | CODE | |
| LOW | tests/test_staging_redaction_azure.py | 7 | CODE | |
| LOW | tests/test_openai_compatible_backend.py | 3 | CODE | |
| LOW | tests/test_minimax_region.py | 3 | CODE | |
| LOW | tests/test_sleep_multi_skill.py | 6 | CODE | |
| LOW | tests/test_gate.py | 8 | CODE | |
| LOW | tests/test_minimax_backend.py | 3 | CODE | |
| LOW | tests/test_split_wiring.py | 9 | CODE | |
| LOW | tests/test_codex_cli_prompt_stdin.py | 8 | CODE | |
| LOW | tests/test_harvest_copilot_cli.py | 1 | CODE | |
| LOW | tests/test_semantic_density.py | 2 | CODE | |
| LOW | tests/test_handoff_backend.py | 3 | CODE | |
| LOW | tests/test_pi_integration.py | 2 | CODE | |
| LOW | tests/test_sleep_scheduler_safety.py | 2 | CODE | |
| LOW | tests/test_sleep_evidence.py | 8 | CODE | |
| LOW | tests/test_copilot_exec_backend.py | 1 | CODE | |
| 196 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_webui/app.py | 112 | except Exception as exc: | CODE |
| LOW | skillopt_webui/app.py | 223 | except Exception as e: | CODE |
| LOW | skillopt_webui/app.py | 526 | except Exception as e: | CODE |
| LOW | skillopt_webui/app.py | 617 | except Exception: | CODE |
| LOW | skillopt_webui/app.py | 627 | except Exception: | CODE |
| LOW | plugins/devin/harvest_devin.py | 121 | except Exception: | CODE |
| LOW | plugins/devin/harvest_devin.py | 346 | except Exception: | CODE |
| LOW | plugins/devin/harvest_devin.py | 377 | except Exception: | CODE |
| LOW | plugins/devin/install.sh | 68 | except Exception: | CODE |
| LOW | plugins/devin/judge.py | 102 | except Exception as exc: # network/auth/parse — degrade gracefully | CODE |
| LOW | plugins/devin/mcp_server.py | 218 | except Exception as exc: | CODE |
| LOW | plugins/devin/mcp_server.py | 287 | except Exception as e: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 62 | except Exception as e: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 80 | except Exception: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 174 | except Exception: | STRING |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 278 | except Exception as e: | STRING |
| LOW | plugins/copilot/mcp_server.py | 250 | except Exception as e: | CODE |
| LOW | plugins/copilot/skillopt/mcp_server.py | 95 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | plugins/copilot/skillopt/mcp_server.py | 219 | except Exception: | CODE |
| LOW | plugins/dsh/scripts/sleep.py | 65 | except Exception: | CODE |
| LOW | tests/test_model_change_warning.py | 167 | except Exception: | CODE |
| LOW | tests/test_model_change_warning.py | 197 | except Exception: | CODE |
| LOW | tests/test_model_change_warning.py | 218 | except Exception: | CODE |
| LOW | tests/test_model_change_warning.py | 243 | except Exception: | CODE |
| LOW | docs/sleep/examples/watchdog.py | 39 | except Exception as e: | CODE |
| LOW | docs/sleep/examples/watchdog.py | 49 | except Exception as e: | CODE |
| LOW | skillopt_sleep/mine.py | 381 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 117 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 201 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 790 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 1064 | except Exception: | CODE |
| LOW⚡ | skillopt_sleep/backend.py | 1062 | except Exception: | CODE |
| LOW⚡ | skillopt_sleep/backend.py | 1069 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 276 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 675 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 681 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 783 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 852 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 1120 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1259 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1479 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 1487 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 1625 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/backend.py | 1761 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1904 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1993 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2086 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 2137 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2384 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2394 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/backend.py | 2493 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2498 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/config.py | 209 | except Exception: | CODE |
| LOW | skillopt_sleep/config.py | 224 | except Exception: | CODE |
| LOW | skillopt_sleep/prompts.py | 186 | except Exception: | CODE |
| LOW | skillopt_sleep/harvest.py | 60 | except Exception: | CODE |
| LOW | skillopt_sleep/scheduler.py | 28 | except Exception: | CODE |
| LOW | skillopt_sleep/scheduler.py | 37 | except Exception: | CODE |
| LOW | skillopt_sleep/scheduler.py | 74 | except Exception: | CODE |
| LOW | skillopt_sleep/scheduler.py | 83 | except Exception: | CODE |
| 99 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_webui/app.py | 468 | CODE | |
| LOW | skillopt_webui/app.py | 253 | CODE | |
| LOW | skillopt_webui/app.py | 306 | CODE | |
| LOW | skillopt_webui/app.py | 599 | CODE | |
| LOW | plugins/devin/harvest_devin.py | 333 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 25 | CODE | |
| LOW | tests/test_split_hardening_2x3.py | 187 | CODE | |
| LOW | tests/test_sleep_engine.py | 1993 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 92 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 1553 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 1592 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 1826 | CODE | |
| LOW | tests/test_superpowers_scenarios.py | 752 | CODE | |
| LOW | scripts/eval_only.py | 247 | CODE | |
| LOW | scripts/train.py | 484 | CODE | |
| LOW | skillopt_sleep/mine.py | 151 | CODE | |
| LOW | skillopt_sleep/harvest_copilot.py | 106 | CODE | |
| LOW | skillopt_sleep/harvest_copilot.py | 150 | CODE | |
| LOW | skillopt_sleep/harvest_copilot.py | 231 | CODE | |
| LOW | skillopt_sleep/harvest_pi.py | 52 | CODE | |
| LOW | skillopt_sleep/harvest_pi.py | 173 | CODE | |
| LOW | skillopt_sleep/harvest_pi.py | 270 | CODE | |
| LOW | skillopt_sleep/cycle.py | 300 | CODE | |
| LOW | skillopt_sleep/cycle.py | 625 | CODE | |
| LOW | skillopt_sleep/slow_update.py | 75 | CODE | |
| LOW | skillopt_sleep/harvest_cursor.py | 116 | CODE | |
| LOW | skillopt_sleep/harvest_cursor.py | 269 | CODE | |
| LOW | skillopt_sleep/skill_resolver.py | 120 | CODE | |
| LOW | skillopt_sleep/backend.py | 913 | CODE | |
| LOW | skillopt_sleep/backend.py | 433 | CODE | |
| LOW | skillopt_sleep/backend.py | 1284 | CODE | |
| LOW | skillopt_sleep/backend.py | 1547 | CODE | |
| LOW | skillopt_sleep/backend.py | 1811 | CODE | |
| LOW | skillopt_sleep/backend.py | 2121 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 121 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 180 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 46 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 125 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 133 | CODE | |
| LOW | skillopt_sleep/memory.py | 87 | CODE | |
| LOW | skillopt_sleep/judges.py | 194 | CODE | |
| LOW | skillopt_sleep/harvest.py | 51 | CODE | |
| LOW | skillopt_sleep/harvest.py | 66 | CODE | |
| LOW | skillopt_sleep/harvest.py | 231 | CODE | |
| LOW | skillopt_sleep/harvest_opencode.py | 208 | CODE | |
| LOW | skillopt_sleep/scheduler.py | 87 | CODE | |
| LOW | skillopt_sleep/scheduler.py | 238 | CODE | |
| LOW | skillopt_sleep/staging.py | 215 | CODE | |
| LOW | skillopt_sleep/staging.py | 436 | CODE | |
| LOW | skillopt_sleep/staging.py | 483 | CODE | |
| LOW | skillopt_sleep/staging.py | 562 | CODE | |
| LOW | skillopt_sleep/staging.py | 1175 | CODE | |
| LOW | skillopt_sleep/staging.py | 1701 | CODE | |
| LOW | skillopt_sleep/staging.py | 1944 | CODE | |
| LOW | skillopt_sleep/staging.py | 2475 | CODE | |
| LOW | skillopt_sleep/staging.py | 2658 | CODE | |
| LOW | skillopt_sleep/staging.py | 2700 | CODE | |
| LOW | skillopt_sleep/staging.py | 2969 | CODE | |
| LOW | skillopt_sleep/evidence.py | 127 | CODE | |
| LOW | skillopt_sleep/__main__.py | 273 | CODE | |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/openclaw/run_sleep.py | 38 | CODE | |
| LOW | skillopt_sleep/mine.py | 355 | CODE | |
| LOW | skillopt_sleep/backend.py | 2505 | CODE | |
| LOW | skillopt_sleep/backend.py | 2550 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 180 | CODE | |
| LOW | skillopt_sleep/dream.py | 119 | CODE | |
| LOW | skillopt_sleep/experiments/run_experiment.py | 124 | CODE | |
| LOW | skillopt_sleep/experiments/run_experiment.py | 52 | CODE | |
| LOW | skillopt/gradient/reflect.py | 269 | CODE | |
| LOW | skillopt/gradient/reflect.py | 379 | CODE | |
| LOW | skillopt/gradient/reflect.py | 485 | CODE | |
| LOW | skillopt/datasets/base.py | 236 | CODE | |
| LOW | skillopt/model/minimax_backend.py | 345 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 346 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 426 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 542 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 568 | CODE | |
| LOW | skillopt/model/openai_compatible_backend.py | 276 | CODE | |
| LOW | skillopt/model/openai_compatible_backend.py | 302 | CODE | |
| LOW | skillopt/model/openai_compatible_backend.py | 364 | CODE | |
| LOW | skillopt/model/__init__.py | 282 | CODE | |
| LOW | skillopt/model/__init__.py | 388 | CODE | |
| LOW | skillopt/model/__init__.py | 476 | CODE | |
| LOW | skillopt/model/__init__.py | 632 | CODE | |
| LOW | skillopt/model/__init__.py | 675 | CODE | |
| LOW | skillopt/model/__init__.py | 756 | CODE | |
| LOW | skillopt/model/azure_openai.py | 600 | CODE | |
| LOW | skillopt/model/azure_openai.py | 788 | CODE | |
| LOW | skillopt/model/azure_openai.py | 816 | CODE | |
| LOW | skillopt/model/azure_openai.py | 845 | CODE | |
| LOW | skillopt/model/claude_code_backend.py | 121 | CODE | |
| LOW | skillopt/model/claude_code_backend.py | 212 | CODE | |
| LOW | skillopt/model/claude_code_backend.py | 238 | CODE | |
| LOW | skillopt/model/claude_code_backend.py | 264 | CODE | |
| LOW | skillopt/model/backend_config.py | 201 | CODE | |
| LOW | skillopt/model/copilot_backend.py | 206 | CODE | |
| LOW | skillopt/model/copilot_backend.py | 231 | CODE | |
| LOW | skillopt/model/router.py | 196 | CODE | |
| LOW | skillopt/envs/alfworld/adapter.py | 66 | CODE | |
| LOW | skillopt/envs/alfworld/rollout.py | 148 | CODE | |
| LOW | skillopt/envs/alfworld/dataloader.py | 14 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/adapter.py | 42 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/rollout.py | 111 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/rollout.py | 290 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/dataloader.py | 151 | CODE | |
| LOW | skillopt/envs/_template/env_template.py | 32 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/react_agent.py | 392 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/adapter.py | 29 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 587 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 841 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 443 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 544 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/dataloader.py | 14 | CODE | |
| LOW | skillopt/envs/officeqa/adapter.py | 12 | CODE | |
| LOW | skillopt/envs/officeqa/tool_runtime.py | 441 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 140 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 717 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 510 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 718 | CODE | |
| LOW | skillopt/envs/docvqa/adapter.py | 10 | CODE | |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/eval_only.py | 372 | def _set_role(key: str, value: str) -> None: | CODE |
| LOW | scripts/train.py | 645 | def _set_role(key: str, value: str) -> None: | CODE |
| LOW | skillopt_sleep/backend.py | 594 | def _set_call_error(self, message: object) -> None: | CODE |
| LOW | skillopt_sleep/__init__.py | 19 | __all__ = ["__version__"] | CODE |
| LOW | skillopt_sleep/evidence.py | 109 | def set_phase(backend, phase: str) -> None: | CODE |
| LOW⚡ | skillopt_sleep/state.py | 75 | def set_last_harvest(self, project: str, iso_ts: str) -> None: | CODE |
| LOW⚡ | skillopt_sleep/state.py | 82 | def set_slow_memory(self, content: str) -> None: | CODE |
| LOW | skillopt_sleep/state.py | 109 | def set_last_model_key(self, key: str) -> None: | CODE |
| LOW | skillopt/optimizer/select.py | 4 | __all__ = ["rank_and_select"] | CODE |
| LOW | skillopt/datasets/base.py | 83 | def set_out_root(self, out_root: str) -> None: | CODE |
| LOW | skillopt/model/minimax_backend.py | 378 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW | skillopt/model/minimax_backend.py | 382 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/qwen_backend.py | 602 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/qwen_backend.py | 606 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/qwen_backend.py | 611 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 432 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 438 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 444 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 787 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 797 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 807 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/model/azure_openai.py | 882 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/model/azure_openai.py | 898 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW | skillopt/model/azure_openai.py | 909 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_backend.py | 362 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_backend.py | 367 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_backend.py | 373 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_code_backend.py | 299 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_code_backend.py | 304 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_code_backend.py | 310 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/model/backend_config.py | 125 | def set_optimizer_backend(backend: str) -> None: | CODE |
| LOW | skillopt/model/backend_config.py | 150 | def set_target_backend(backend: str) -> None: | CODE |
| LOW⚡ | skillopt/model/router.py | 181 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/router.py | 186 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/router.py | 191 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/codex_backend.py | 663 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/codex_backend.py | 669 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/codex_backend.py | 674 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/envs/alfworld/__init__.py | 5 | __all__ = ["ALFWorldAdapter"] | CODE |
| LOW | skillopt/envs/spreadsheetbench/__init__.py | 5 | __all__ = ["SpreadsheetBenchAdapter"] | CODE |
| LOW | skillopt/engine/__init__.py | 9 | __all__ = ["ReflACTTrainer"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sleep_engine.py | 964 | # presence of a heading an optimizer can simply add. | STRING |
| MEDIUM | tests/test_sleep_multi_skill.py | 315 | # Guards the guard: if the harness above ever stops watching the place | COMMENT |
| LOW | tests/test_aggregate_fallback.py | 76 | # We patch _hierarchical_merge to just return the single patches to skip the batch merges, | COMMENT |
| MEDIUM | scripts/smoke_superpowers.sh | 3 | # Run this manually (not in CI) to verify the adapter works with the real harness. | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 899 | # experiment harness reports its per-night test score. With the default | COMMENT |
| MEDIUM | skillopt_sleep/backend.py | 502 | # user for the range" rule scores 0 because the harness can't run VBA and | COMMENT |
| MEDIUM | skillopt_sleep/consolidate.py | 84 | # Be robust if a split is empty: fall back so a night still does something, | COMMENT |
| MEDIUM | skillopt_sleep/rollout.py | 141 | # single-shot reflect uses — prevents harness-violating rules like "return VBA" | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 85 | # pytest executed by the harness. Both remain reachable by the same OS user, so | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 411 | # harness-collected: shim log mtime vs newest project source mtime | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 414 | # harness-collected: counted by the nonce-tagged pytest shim | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 421 | # harness re-runs the tests itself after the agent exits | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 678 | # Isolated project, HOME and (harness-only) audit dir per scenario | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 684 | # config; harness-created but reachable by the agent (trusted-candidate scope) | COMMENT |
| LOW⚡ | skillopt/envs/_template/env_template.py | 78 | # Dataset-backed envs typically just pass items straight through. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_aggregate_fallback.py | 123 | ['{"edits": null}', '{"edits": ["not an object"]}'], | CODE |
| HIGH⚡ | skillopt_sleep/backend.py | 1053 | ' if (args === null || typeof args !== "object" || ' | CODE |
| HIGH⚡ | skillopt_sleep/backend.py | 1054 | "Object.keys(args).length !== 1 || args.query !== query) {\n" | CODE |
| HIGH | skillopt_sleep/llm_miner.py | 51 | # A non-string rubric (e.g. a JSON null) must not become the literal "None" | COMMENT |
| HIGH | skillopt_sleep/adapters/superpowers.py | 467 | f'count=$(grep -c "^{nonce} run " "$audit_log" 2>/dev/null || true); ' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skillopt/envs/alfworld/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| HIGH | skillopt/envs/livemathematicianbench/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| HIGH | skillopt/envs/spreadsheetbench/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| HIGH | skillopt/envs/searchqa/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 21 | # backends (Claude/Qwen). Without it extract_json() falls back safely and | COMMENT |
| LOW | plugins/devin/hooks/on-session-end.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | plugins/claude-code/scripts/install-cron.sh | 21 | # (unless you pass --auto-adopt below). | COMMENT |
| LOW | plugins/dsh/cordis.patch.yml | 1 | # dsh-skillopt bundle patch layer. | COMMENT |
| LOW | plugins/dsh/src/index.js | 61 | .default(false) | COMMENT |
| LOW | plugins/dsh/src/index.js | 161 | // editBudget, …) that buildArgv would forward to the engine — crossing the | COMMENT |
| LOW | configs/features/soft_gate.yaml | 1 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| LOW | configs/features/soft_gate.yaml | 21 | # `soft` or `mixed` lets these partial improvements be accepted. | COMMENT |
| LOW | scripts/smoke_superpowers.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/run_alfworld.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | skillopt_sleep/consolidate.py | 41 | rejected_edits: List[EditRecord] | COMMENT |
| LOW | skillopt_sleep/consolidate.py | 421 | # edit was dropped during the per-target trials, `all_applied` is empty | COMMENT |
| LOW | skillopt_sleep/types.py | 61 | # carrying the research repo's exact rollout_system), the backend uses THIS | COMMENT |
| LOW | skillopt/utils/json_utils.py | 201 | # JSON strict json.loads rejects — unescaped ASCII quotes inside CJK string | COMMENT |
| LOW | skillopt/envs/_template/config_template.yaml | 1 | # ────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/smoke_superpowers.sh | 10 | # Usage: | COMMENT |
| LOW⚡ | scripts/run_spreadsheetbench.sh | 5 | # Usage: | COMMENT |
| LOW⚡ | scripts/run_searchqa.sh | 5 | # Usage: | COMMENT |
| LOW⚡ | scripts/run_alfworld.sh | 9 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_sleep_engine.py | 2952 | # arguments observed at the public orchestration boundary. | COMMENT |
| MEDIUM | skillopt_sleep/harvest_pi.py | 239 | # agentic coding and are frequently followed by recovery and a | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/guide/new-backend.md | 130 | ## Step 1: implement the module contract | COMMENT |
| LOW | docs/guide/new-backend.md | 163 | ## Step 2: register and route the backend | COMMENT |
| LOW | docs/guide/new-backend.md | 189 | ## Step 3: test the integration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_outcome_judges.py | 42 | "I'm unable to do this.", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sleep_engine.py | 2325 | self.assertIn("placeholder", res.rejected_edits[0].content) | CODE |