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 summarizes scanner evidence for microsoft/SkillOpt, a Python project with 18,221 GitHub stars. SynthScan examined 114,764 lines of code across 415 source files, recording 2554 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 29.7 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1752 finding(s).
Are imports declared and package/API names verified? 272 finding(s).
Are wrappers, guards, and repeated structures necessary? 2100 finding(s).
Which changes need focused human review? 2554 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2554 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | 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_webui_build_gradio.py | 26 | def test_webui_builds_theme_on_blocks(): | CODE |
| LOW | tests/test_webui_build_gradio.py | 40 | def test_launch_kwargs_follow_production_main_path(): | CODE |
| LOW | tests/test_webui_build_gradio.py | 52 | def test_webui_builds_and_launches_theme(): | CODE |
| LOW | tests/test_webui_build_gradio.py | 74 | def test_gradio_major_detected(): | 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 |
| 1446 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 | 65 | # ─── Config helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 283 | # ─── Training process management ──────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 544 | # ─── Pipeline Stage HTML ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 575 | # ─── Gradio UI ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 588 | # ── Tab 1: Configure & Launch ──────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 656 | # ── Tab 2: Monitor ─────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 687 | # ── 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 | 82 | # ── 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 | 68 | # ── Reuse registry from train.py ─────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/eval_only.py | 148 | # ── CLI ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 41 | # ── Environment registry ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 128 | # ── CLI ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 321 | # ── Retired CLI options ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 820 | # ── 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/evalkit.py | 32 | # ── errors ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/evalkit.py | 75 | # ── results ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/evalkit.py | 129 | # ── statistics ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/evalkit.py | 311 | # ── pairing / loading ───────────────────────────────────────────────────────── | COMMENT |
| 180 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skillopt_webui/app.py | 387 | except (IndexError, ValueError): | CODE |
| HIGH | skillopt_webui/app.py | 394 | except (IndexError, ValueError): | CODE |
| HIGH | skillopt_webui/app.py | 120 | except Exception: | CODE |
| HIGH | skillopt_webui/app.py | 131 | except Exception: | CODE |
| HIGH | plugins/devin/harvest_devin.py | 377 | except Exception: | CODE |
| HIGH | plugins/devin/mcp_server.py | 399 | except json.JSONDecodeError: | CODE |
| HIGH | plugins/copilot/mcp_server.py | 357 | except json.JSONDecodeError: | CODE |
| HIGH | tests/test_sleep_skill_resolver.py | 262 | except OSError: # pragma: no cover - best-effort restore | CODE |
| HIGH | tests/test_model_change_warning.py | 167 | except Exception: | CODE |
| HIGH | tests/test_model_change_warning.py | 218 | except Exception: | CODE |
| HIGH | tests/test_model_change_warning.py | 243 | except Exception: | CODE |
| HIGH | tests/test_model_change_warning.py | 197 | except Exception: | CODE |
| HIGH | scripts/eval_only.py | 77 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 82 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 87 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 92 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 97 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 102 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 107 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 112 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 117 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 122 | except ImportError: | CODE |
| HIGH | scripts/eval_only.py | 127 | except ImportError: | CODE |
| HIGH | scripts/train.py | 51 | except ImportError: | CODE |
| HIGH | scripts/train.py | 56 | except ImportError: | CODE |
| HIGH | scripts/train.py | 61 | except ImportError: | CODE |
| HIGH | scripts/train.py | 66 | except ImportError: | CODE |
| HIGH | scripts/train.py | 71 | except ImportError: | CODE |
| HIGH | scripts/train.py | 76 | except ImportError: | CODE |
| HIGH | scripts/train.py | 81 | except ImportError: | CODE |
| HIGH | scripts/train.py | 86 | except ImportError: | CODE |
| HIGH | scripts/train.py | 91 | except ImportError: | CODE |
| HIGH | scripts/train.py | 96 | except ImportError: | CODE |
| HIGH | scripts/train.py | 101 | except ImportError: | CODE |
| HIGH | skillopt_sleep/cycle.py | 1080 | except Exception: | CODE |
| HIGH | skillopt_sleep/backend.py | 1417 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 454 | except (ValueError, TypeError): | CODE |
| HIGH | skillopt_sleep/backend.py | 682 | except Exception: | CODE |
| HIGH | skillopt_sleep/backend.py | 795 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 870 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 1504 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 1651 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 1768 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 1917 | except OSError: | CODE |
| HIGH | skillopt_sleep/backend.py | 2138 | except Exception: | CODE |
| HIGH | skillopt_sleep/backend.py | 2385 | except Exception: | CODE |
| HIGH | skillopt_sleep/backend.py | 2494 | except Exception: | CODE |
| HIGH | skillopt_sleep/config.py | 224 | except Exception: | CODE |
| HIGH | skillopt_sleep/harvest.py | 234 | except (ValueError, TypeError): | CODE |
| HIGH | skillopt_sleep/harvest_opencode.py | 359 | except sqlite3.Error: | CODE |
| HIGH | skillopt_sleep/scheduler.py | 258 | except Exception: | CODE |
| HIGH | skillopt_sleep/staging.py | 1721 | except FileExistsError: | CODE |
| HIGH | skillopt_sleep/staging.py | 2253 | except FileExistsError: | CODE |
| HIGH | skillopt_sleep/staging.py | 529 | except FileNotFoundError: | CODE |
| HIGH | skillopt_sleep/staging.py | 479 | except OSError: | CODE |
| HIGH | skillopt_sleep/staging.py | 1764 | except OSError: | CODE |
| HIGH | skillopt_sleep/staging.py | 1773 | except OSError: | CODE |
| HIGH | skillopt_sleep/staging.py | 522 | except OSError: | CODE |
| HIGH | skillopt_sleep/evidence.py | 88 | except Exception: | CODE |
| HIGH | skillopt_sleep/__main__.py | 522 | except PendingCalls: | CODE |
| 25 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/slash_sleep.py | 16 | CODE | |
| LOW | plugins/openclaw/slash_sleep.py | 25 | 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_webui_build_gradio.py | 11 | 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_systematic_debugging_shim_harness.py | 11 | CODE | |
| LOW | tests/test_outcome_judges.py | 1 | CODE | |
| LOW | tests/test_evalkit.py | 2 | CODE | |
| LOW | tests/test_webui_security.py | 8 | 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_optimizer_feedback_flow.py | 2 | 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_harvest_race.py | 2 | 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_spreadsheetbench_task_id_confinement.py | 19 | 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_harvest_project_scope.py | 6 | CODE | |
| LOW | tests/test_scheduler.py | 20 | CODE | |
| LOW | tests/test_scoring.py | 2 | CODE | |
| LOW | tests/test_systematic_debugging_scenarios.py | 8 | CODE | |
| LOW | tests/test_sleep_dream_metric.py | 2 | CODE | |
| LOW | tests/test_consolidate_split.py | 6 | CODE | |
| LOW | tests/test_cli_path_resolution.py | 3 | 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_workspace_symlink.py | 3 | CODE | |
| LOW | tests/test_workspace_symlink.py | 6 | 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 | |
| 205 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_webui/app.py | 120 | except Exception: | CODE |
| LOW | skillopt_webui/app.py | 131 | except Exception: | CODE |
| LOW | skillopt_webui/app.py | 153 | except Exception as exc: | CODE |
| LOW | skillopt_webui/app.py | 221 | except Exception as exc: | CODE |
| LOW | skillopt_webui/app.py | 332 | except Exception as e: | 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 | 60 | except Exception as e: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 78 | except Exception: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 172 | 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 | 1080 | except Exception: | CODE |
| LOW⚡ | skillopt_sleep/backend.py | 1063 | except Exception: | CODE |
| LOW⚡ | skillopt_sleep/backend.py | 1070 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 301 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 676 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 682 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 784 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 853 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 1121 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1260 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1480 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 1488 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 1626 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/backend.py | 1762 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1905 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1994 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2087 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 2138 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2385 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2395 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/backend.py | 2494 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 2499 | 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 | 188 | 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 | 82 | CODE | |
| LOW | skillopt_webui/app.py | 577 | CODE | |
| LOW | skillopt_webui/app.py | 362 | CODE | |
| LOW | skillopt_webui/app.py | 415 | CODE | |
| LOW | plugins/devin/harvest_devin.py | 333 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 23 | CODE | |
| LOW | tests/test_split_hardening_2x3.py | 187 | CODE | |
| LOW | tests/test_sleep_engine.py | 2514 | CODE | |
| LOW | tests/test_evalkit.py | 555 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 102 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 1568 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 1607 | CODE | |
| LOW | tests/test_sleep_adopt_skill_subset.py | 1842 | CODE | |
| LOW | tests/test_latest_pointer_race.py | 20 | CODE | |
| LOW | tests/test_latest_pointer_race.py | 33 | CODE | |
| LOW | tests/test_superpowers_scenarios.py | 814 | CODE | |
| LOW | scripts/eval_only.py | 304 | CODE | |
| LOW | scripts/train.py | 520 | 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/evalkit.py | 235 | CODE | |
| LOW | skillopt_sleep/evalkit.py | 566 | CODE | |
| LOW | skillopt_sleep/evalkit.py | 591 | 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 | 73 | 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 | 914 | CODE | |
| LOW | skillopt_sleep/backend.py | 1285 | CODE | |
| LOW | skillopt_sleep/backend.py | 1548 | CODE | |
| LOW | skillopt_sleep/backend.py | 1812 | CODE | |
| LOW | skillopt_sleep/backend.py | 2122 | 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 | 137 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 145 | 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 | 74 | CODE | |
| LOW | skillopt_sleep/harvest.py | 239 | 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 | 495 | CODE | |
| LOW | skillopt_sleep/staging.py | 536 | CODE | |
| LOW | skillopt_sleep/staging.py | 589 | CODE | |
| LOW | skillopt_sleep/staging.py | 1216 | CODE | |
| LOW | skillopt_sleep/staging.py | 1742 | CODE | |
| LOW | skillopt_sleep/staging.py | 1938 | CODE | |
| 74 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sleep_engine.py | 1055 | # presence of a heading an optimizer can simply add. | STRING |
| MEDIUM⚡ | tests/test_systematic_debugging_scenarios.py | 201 | # No start/end baseline (e.g. early harness error) -> fail closed. | COMMENT |
| MEDIUM⚡ | tests/test_systematic_debugging_scenarios.py | 210 | # The shim records `snap <hash>` via the same snippet the harness uses for | COMMENT |
| MEDIUM | tests/test_sleep_multi_skill.py | 315 | # Guards the guard: if the harness above ever stops watching the place | COMMENT |
| MEDIUM | tests/test_superpowers_scenarios.py | 747 | # one agent run and no harness re-run: the re-run is refused, not | 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 | 503 | # 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 | 143 | # single-shot reflect uses — prevents harness-violating rules like "return VBA" | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 98 | # pytest executed by the harness. Both remain reachable by the same OS user, so | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 499 | # harness-collected: shim log mtime vs newest project source mtime | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 502 | # harness-collected: ordered event sequence (fail before first edit, | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 506 | # harness-collected: counted by the nonce-tagged pytest shim | COMMENT |
| MEDIUM⚡ | skillopt_sleep/adapters/superpowers.py | 513 | # harness re-runs the tests itself after the agent exits | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 829 | # harness both run this exact snippet so the ``snap``/``start``/``end`` lines | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 908 | # Isolated project, HOME and (harness-only) audit dir per scenario | COMMENT |
| MEDIUM | skillopt_sleep/adapters/superpowers.py | 914 | # 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 |
|---|---|---|---|---|
| LOW | plugins/openclaw/run_sleep.py | 38 | CODE | |
| LOW | skillopt_sleep/mine.py | 355 | CODE | |
| LOW | skillopt_sleep/backend.py | 2506 | CODE | |
| LOW | skillopt_sleep/backend.py | 2551 | 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 | 351 | CODE | |
| LOW | skillopt/model/minimax_backend.py | 377 | 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 | 283 | CODE | |
| LOW | skillopt/model/__init__.py | 389 | CODE | |
| LOW | skillopt/model/__init__.py | 477 | CODE | |
| LOW | skillopt/model/__init__.py | 633 | CODE | |
| LOW | skillopt/model/__init__.py | 676 | CODE | |
| LOW | skillopt/model/__init__.py | 757 | 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 | 215 | 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 | 655 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 922 | 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 | |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/eval_only.py | 467 | def _set_role(key: str, value: str) -> None: | CODE |
| LOW | scripts/train.py | 686 | def _set_role(key: str, value: str) -> None: | CODE |
| LOW | skillopt_sleep/backend.py | 595 | 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 | 411 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/minimax_backend.py | 415 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/minimax_backend.py | 421 | def set_optimizer_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 | 438 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 444 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 450 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 800 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 810 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 820 | 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 | 139 | def set_optimizer_backend(backend: str) -> None: | CODE |
| LOW | skillopt/model/backend_config.py | 164 | 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 |
|---|---|---|---|---|
| HIGH | tests/test_aggregate_fallback.py | 123 | ['{"edits": null}', '{"edits": ["not an object"]}'], | CODE |
| HIGH | skillopt_sleep/evalkit.py | 502 | "non-binary scores require --allow-graded (McNemar is undefined)" | CODE |
| HIGH⚡ | skillopt_sleep/backend.py | 1054 | ' if (args === null || typeof args !== "object" || ' | CODE |
| HIGH⚡ | skillopt_sleep/backend.py | 1055 | "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 | 564 | 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 | pyproject.toml | 41 | # Qwen local model backend (via vLLM) | 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/backend.py | 381 | model=self.model, prompt=prompt, response=out, | 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 | 3473 | # 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 | 136 | ## Step 1: implement the module contract | COMMENT |
| LOW | docs/guide/new-backend.md | 169 | ## Step 2: register and route the backend | COMMENT |
| LOW | docs/guide/new-backend.md | 195 | ## 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_systematic_debugging_scenarios.py | 159 | (project / "debug_helper.py").write_text("def helper():\n return 1\n", encoding="utf-8") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sleep_engine.py | 2846 | self.assertIn("placeholder", res.rejected_edits[0].content) | CODE |