Agent OS: the agent gets smarter on its own. We just hold the line: the grading command and expected result never make it into the success contract we hand it. Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 13 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode, Copilot, Kiro and more.
This report presents the forensic synthetic code analysis of Q00/ouroboros, a Python project with 5,723 GitHub stars. SynthScan v2.0 examined 853,926 lines of code across 1736 source files, recording 23824 pattern matches distributed across 23 syntactic categories. The overall adjusted score of 29.7 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 23824 distinct pattern matches across 23 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 | tests/conftest.py | 87 | def isolate_heartbeat_locks_per_test_worker(tmp_path_factory): | CODE |
| LOW | tests/conftest.py | 114 | def render_logged_exceptions_with_plain_tracebacks(): | CODE |
| LOW | tests/conftest.py | 143 | def _plain_console_processors(mode): | CODE |
| LOW | tests/conftest.py | 155 | def block_runner_real_llm_adapter(monkeypatch): | CODE |
| LOW | tests/conftest.py | 177 | def _blocked_create_llm_adapter(*_args, **_kwargs): | CODE |
| LOW | tests/conftest.py | 188 | def block_interview_answer_refiner_cli_spawn(monkeypatch): | CODE |
| LOW | tests/conftest.py | 214 | def block_setup_probe_cli_spawns(monkeypatch): | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 44 | def test_cli_docs_cover_detached_auto_wait_and_retrieve() -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 77 | def test_mcp_docs_cover_detached_auto_jobs() -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 125 | def test_cli_retrieves_stable_completed_detached_auto_result(monkeypatch, tmp_path) -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 139 | async def _persist_completed_auto_job() -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 195 | def test_mcp_retrieves_stable_completed_detached_auto_result(tmp_path) -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 205 | async def _persist_completed_auto_job_and_fetch_result(): | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 296 | def test_completed_detached_auto_result_retrieval_leaves_inspectable_event_trace( | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 304 | async def _run_completed_job_and_verify_trace() -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 362 | def test_mcp_retrieves_stable_failed_detached_auto_result(tmp_path) -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 373 | async def _persist_failed_auto_job_and_fetch_result(): | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 454 | def test_mcp_retrieves_stable_cancelled_detached_auto_result(tmp_path) -> None: | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 465 | async def _persist_cancelled_auto_job_and_fetch_result(): | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 546 | def test_expired_detached_auto_handle_still_returns_persisted_terminal_result( | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 558 | async def _persist_expired_auto_job_and_fetch_result(): | CODE |
| LOW | tests/unit/test_detached_auto_docs.py | 609 | def test_invalid_detached_auto_handle_fails_with_stable_error_contract( | CODE |
| LOW | tests/unit/test_tooling_configuration.py | 31 | def test_pre_commit_config_exists(): | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 76 | def test_resolves_kiro_aliases(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 80 | def test_falls_back_to_kiro_via_ouroboros_runtime( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 87 | def test_ouroboros_runtime_does_not_affect_explicit_backend( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 95 | def _isolated_llm_permission_config(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 119 | def test_kiro_returns_default(self, _isolated_llm_permission_config: None) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 122 | def test_kiro_respects_llm_permission_mode_env(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 127 | def test_kiro_interview_respects_llm_permission_mode_env( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 136 | def test_kiro_interview_returns_config_default_without_override( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 148 | def test_creates_kiro_adapter(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 152 | def test_passes_cwd_to_kiro_adapter(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 157 | def test_passes_timeout_to_kiro_adapter(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 162 | def test_passes_max_retries_to_kiro_adapter(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 167 | def test_passes_tool_envelope_to_kiro_adapter( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 187 | def test_uses_configured_cli_path(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 297 | def test_empty_allowed_tools_forces_text_only_prompt(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 307 | def test_allowed_tools_lists_permitted_tools(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 317 | def test_allowed_tools_none_omits_tool_constraints(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 325 | def test_empty_allowed_tools_sets_empty_trust_tools_flag(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 334 | def test_allowed_tools_maps_to_kiro_trust_tools_flag(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 343 | def test_allowed_tools_filters_mcp_names_from_kiro_trust_tools_flag(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 368 | def test_allowed_tools_none_omits_trust_tools_flag(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 377 | def test_default_permission_mode_sets_empty_trust_tools_flag(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 386 | def test_accept_edits_permission_mode_sets_trust_all_tools_flag(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 394 | def test_bypass_permission_takes_precedence_over_allowed_tools(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 571 | def test_resolves_kiro_aliases(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 577 | def test_falls_back_via_ouroboros_runtime(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 586 | def test_creates_kiro_runtime(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 595 | def test_uses_configured_cli_path(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 616 | def test_declares_translated_system_prompt_and_permission_mode(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 768 | def test_get_llm_backend_uses_runtime_fallback(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 775 | def test_get_llm_backend_uses_kiro_cli_runtime_alias( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 784 | def test_llm_backend_env_takes_priority_over_runtime( | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 793 | def test_no_runtime_env_uses_default(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 802 | def test_get_agent_runtime_uses_runtime_fallback(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 809 | def test_kiro_model_defaults_to_sentinel(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 821 | def test_public_llm_backend_property_exposes_configured_backend(self) -> None: | CODE |
| LOW⚡ | tests/unit/test_kiro_adapters.py | 828 | def test_public_cli_path_property_exposes_resolved_cli_override(self) -> None: | CODE |
| 17934 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/ouroboros-tui/src/db.rs | 1111 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/db.rs | 1113 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 8 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 10 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 127 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 129 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 273 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 275 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 689 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 691 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 706 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/state.rs | 708 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/execution.rs | 251 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/execution.rs | 253 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 17 | // ── Left panel: Lineage list ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 61 | // ── Right panel: Detail ─────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 165 | // ── Top: Lineage Info + Generation List ─────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 218 | // ── Middle: Generation List (selectable) ────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 240 | // ── Bottom: Selected Generation Detail ──────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 292 | // ── Double Diamond: Phase Progress ───────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 295 | // ── Header: Status + Score ─────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 316 | // ── Evaluation: AC Results + Drift ──────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/ouroboros-tui/src/views/lineage.rs | 364 | // ── Failure Reason ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/ouroboros-tui/src/views/lineage.rs | 373 | // ── Summary ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/ouroboros-tui/src/views/lineage.rs | 382 | // ── Ontology ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 406 | // ── Ontology Delta ──────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 432 | // ── Wonder Questions ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 445 | // ── Execution Output ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 459 | // ── Timestamp ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 511 | /// ◇━━━━◆━━━━◇ ◇━━━━━━━━━◇ | COMMENT |
| MEDIUM | crates/ouroboros-tui/src/views/lineage.rs | 539 | // Second diamond: Execute ◇━━━━━━━◇ Evaluate | COMMENT |
| MEDIUM | tests/conftest.py | 35 | # ── Hermetic home isolation (before collection) ────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 70 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 72 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 142 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 144 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 194 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 196 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 565 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 567 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 608 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 610 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 762 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 764 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 815 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/unit/test_kiro_adapters.py | 817 | # =========================================================================== | COMMENT |
| MEDIUM | tests/unit/test_kiro_adapters.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_kiro_adapters.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_kiro_adapters.py | 1172 | # =========================================================================== | COMMENT |
| MEDIUM | tests/unit/test_kiro_adapters.py | 1174 | # =========================================================================== | COMMENT |
| MEDIUM | tests/unit/test_ralph_parser.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_ralph_parser.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_ralph_parser.py | 91 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/unit/test_ralph_parser.py | 93 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/unit/test_ralph_parser.py | 193 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/unit/test_ralph_parser.py | 195 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tests/unit/pm/test_renderer.py | 91 | # ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/pm/test_renderer.py | 93 | # ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/pm/test_renderer.py | 151 | # ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/pm/test_renderer.py | 153 | # ────────────────────────────────────────────────────────────────── | COMMENT |
| 1283 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/_envelope_wiring.py | 12 | CODE | |
| LOW | tests/unit/test_kiro_adapters.py | 11 | CODE | |
| LOW | tests/unit/test_ralph_loop_budget.py | 12 | CODE | |
| LOW | tests/unit/test_zcode_cli_launcher.py | 3 | CODE | |
| LOW | tests/unit/test_dashboard.py | 3 | CODE | |
| LOW | tests/unit/test_ralph_rewind.py | 3 | CODE | |
| LOW | tests/unit/test_cli_surface_docs_contract.py | 22 | CODE | |
| LOW | tests/unit/test_ralph_parser.py | 3 | CODE | |
| LOW | tests/unit/test_convergence.py | 3 | CODE | |
| LOW | tests/unit/test_home_isolation.py | 10 | CODE | |
| LOW | tests/unit/test_llm_response_fence_robustness.py | 14 | CODE | |
| LOW | tests/unit/test_install_ref_docs_contract.py | 11 | CODE | |
| LOW | tests/unit/test_ralph_shell.py | 3 | CODE | |
| LOW | tests/unit/test_tui_usage_docs_contract.py | 9 | CODE | |
| LOW | tests/unit/test_artifact_collector.py | 3 | CODE | |
| LOW | tests/unit/test_ralph_loop_timeout.py | 11 | CODE | |
| LOW | tests/unit/test_telemetry.py | 3 | CODE | |
| LOW | tests/unit/test_project_map.py | 3 | CODE | |
| LOW | tests/unit/test_evolve_rewind.py | 3 | CODE | |
| LOW | tests/unit/test_regression.py | 3 | CODE | |
| LOW | tests/unit/test_verification.py | 3 | CODE | |
| LOW | tests/unit/test_ralph_loop_progress.py | 8 | CODE | |
| LOW | tests/unit/pm/test_renderer.py | 8 | CODE | |
| LOW | …sts/unit/interview_adapters/test_reference_contrast.py | 1 | CODE | |
| LOW | tests/unit/interview_adapters/test_manifest.py | 1 | CODE | |
| LOW | tests/unit/interview_adapters/test_models.py | 1 | CODE | |
| LOW | tests/unit/interview_adapters/test_trigger_policy.py | 1 | CODE | |
| LOW | tests/unit/core/test_hitl_contract.py | 1 | CODE | |
| LOW | tests/unit/core/test_retry.py | 3 | CODE | |
| LOW | tests/unit/core/test_ttl_cache.py | 3 | CODE | |
| LOW | tests/unit/core/test_text_truncate_with_ellipsis.py | 10 | CODE | |
| LOW | tests/unit/core/test_conductor.py | 3 | CODE | |
| LOW | tests/unit/core/test_file_lock.py | 3 | CODE | |
| LOW | tests/unit/core/test_project_identity.py | 3 | CODE | |
| LOW | tests/unit/core/test_execution_preferences.py | 1 | CODE | |
| LOW | tests/unit/core/test_hitl_state.py | 1 | CODE | |
| LOW | tests/unit/core/test_hitl_resume.py | 1 | CODE | |
| LOW | tests/unit/core/test_seed_verify_gate.py | 7 | CODE | |
| LOW | tests/unit/core/test_worktree_untracked.py | 1 | CODE | |
| LOW | tests/unit/core/test_runtime_transition.py | 3 | CODE | |
| LOW | tests/unit/core/test_pm_snapshot.py | 3 | CODE | |
| LOW | tests/unit/core/test_seed_project_path_callers.py | 8 | CODE | |
| LOW | tests/unit/core/test_session_signal.py | 3 | CODE | |
| LOW | tests/unit/core/test_project_paths.py | 3 | CODE | |
| LOW | tests/unit/core/test_git_workflow.py | 3 | CODE | |
| LOW | tests/unit/core/test_owner_only.py | 9 | CODE | |
| LOW | tests/unit/core/test_session_signal_projection.py | 3 | CODE | |
| LOW | tests/unit/core/test_worktree.py | 3 | CODE | |
| LOW | tests/unit/copilot/test_model_discovery.py | 3 | CODE | |
| LOW | tests/unit/copilot/test_cli_policy.py | 3 | CODE | |
| LOW | tests/unit/copilot/test_permissions.py | 3 | CODE | |
| LOW | tests/unit/config/test_zcode_model_config.py | 3 | CODE | |
| LOW | tests/unit/config/test_loader_env.py | 3 | CODE | |
| LOW | tests/unit/auto/test_seed_preflight.py | 11 | CODE | |
| LOW | tests/unit/auto/test_inverted_interview_intent_guard.py | 1 | CODE | |
| LOW | tests/unit/auto/test_seed_repairer_bounded.py | 10 | CODE | |
| LOW | tests/unit/auto/conftest.py | 20 | CODE | |
| LOW | tests/unit/auto/test_safe_default_lateral_escalation.py | 33 | CODE | |
| LOW | …/unit/auto/test_pipeline_interview_deadline_closure.py | 29 | CODE | |
| LOW | tests/unit/auto/test_pipeline_ralph_handoff.py | 9 | CODE | |
| 1862 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | project-context.md | 294 | except Exception: | CODE |
| LOW | tools/sync_github_project.py | 219 | except Exception as e: | STRING |
| MEDIUM | tools/sync_github_project.py | 237 | print("Error: issue_number must be an integer") | CODE |
| MEDIUM | tools/sync_github_project.py | 241 | print("Error: GITHUB_TOKEN environment variable not set") | CODE |
| LOW | tests/conftest.py | 279 | except Exception: | CODE |
| LOW | tests/unit/mcp/tools/test_run_evaluate_chaining.py | 103 | except Exception as exc: # noqa: BLE001 - diagnostics must not mask failures | CODE |
| LOW | tests/unit/mcp/tools/test_run_evaluate_chaining.py | 114 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | tests/unit/mcp/tools/test_run_evaluate_chaining.py | 119 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | tests/unit/mcp/tools/test_run_evaluate_chaining.py | 157 | except Exception as exc: # diagnostics must never mask the real failure | CODE |
| MEDIUM | …sts/unit/mcp/tools/test_auto_interview_construction.py | 2320 | def _run() -> None: | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 1564 | except Exception as exc: # noqa: BLE001 - spy captures the surfaced contract failure. | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 1715 | except Exception as exc: # noqa: BLE001 - spy captures the surfaced contract failure. | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 1872 | except Exception as exc: # noqa: BLE001 - spy captures the surfaced contract failure. | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 2024 | except Exception as exc: # noqa: BLE001 - spy captures the surfaced contract failure. | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 2188 | except Exception as exc: # noqa: BLE001 - spy captures the surfaced contract failure. | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 2323 | except Exception: | CODE |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 2407 | except Exception: | CODE |
| LOW⚡ | tests/unit/cli/test_setup.py | 59 | except Exception: | CODE |
| LOW⚡ | tests/unit/cli/test_setup.py | 67 | except Exception: | CODE |
| LOW | tests/unit/cli/test_setup.py | 6086 | except Exception as error: # pragma: no cover - OS-level cleanup failure | STRING |
| LOW⚡ | tests/unit/events/test_base.py | 22 | except Exception: | CODE |
| LOW⚡ | tests/unit/router/test_not_handled_resolution.py | 20 | except Exception as exc: # pragma: no cover - failure path should be explicit. | CODE |
| LOW | tests/canonical/test_canonical.py | 338 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | tests/canonical/conftest.py | 321 | except Exception as exc: # pragma: no cover - imports always succeed in CI | CODE |
| LOW | tests/canonical/test_issue_1450_quality.py | 324 | except Exception as exc: | CODE |
| LOW | tests/canonical/test_issue_1450_quality.py | 655 | except Exception as exc: # noqa: BLE001 - experiment must persist every failure | CODE |
| LOW | tests/canonical/test_issue_1450_quality.py | 661 | except Exception as exc: # noqa: BLE001 - evidence records corrupt/missing state | CODE |
| LOW | tests/canonical/test_issue_1450_quality.py | 1016 | except Exception as exc: # noqa: BLE001 - preserve costly partial proposal evidence | STRING |
| MEDIUM | docs/api/mcp.md | 959 | print(f"Error: {result.error}") # Never raises, returns error | CODE |
| LOW | scripts/version-check.py | 63 | except Exception: | CODE |
| LOW | scripts/version-check.py | 70 | except Exception: | CODE |
| LOW | scripts/version-check.py | 143 | except Exception: | CODE |
| LOW | scripts/version-check.py | 200 | except Exception: | CODE |
| LOW | scripts/version-check.py | 220 | except Exception: | CODE |
| LOW⚡ | scripts/version-check.py | 234 | except Exception: | CODE |
| LOW⚡ | scripts/version-check.py | 237 | except Exception: | CODE |
| LOW⚡ | scripts/version-check.py | 241 | except Exception: | CODE |
| LOW | scripts/version-check.py | 268 | except Exception: | CODE |
| LOW | scripts/version-check.py | 272 | except Exception: | CODE |
| LOW | scripts/ralph.py | 314 | except Exception as exc: | CODE |
| LOW | scripts/session-start.py | 39 | except Exception as e: | CODE |
| MEDIUM | scripts/session-start.py | 24 | def main() -> None: | CODE |
| LOW | scripts/manual-synapse-state-smoke.py | 326 | except Exception as exc: # noqa: BLE001 - manual harness reports exact failure. | CODE |
| MEDIUM | scripts/manual-synapse-state-smoke.py | 323 | def main() -> int: | CODE |
| LOW | scripts/install.sh | 354 | except Exception: | CODE |
| LOW | scripts/install.sh | 361 | except Exception: | CODE |
| LOW | scripts/install.sh | 511 | except Exception: | CODE |
| LOW | scripts/install.sh | 700 | except Exception: | CODE |
| LOW | scripts/install.sh | 739 | except Exception: | CODE |
| LOW | scripts/install.sh | 1070 | except Exception: | CODE |
| LOW | scripts/manual-synapse-smoke.py | 301 | except Exception as exc: # noqa: BLE001 - manual harness reports exact backend failure. | CODE |
| LOW | scripts/ralph-rewind.py | 183 | except Exception as exc: | CODE |
| LOW | scripts/keyword-detector.py | 171 | except Exception: | CODE |
| LOW | scripts/keyword-detector.py | 222 | except Exception: | CODE |
| LOW | scripts/keyword-detector.py | 323 | except Exception: | CODE |
| LOW | scripts/drift-monitor.py | 60 | except Exception: | CODE |
| LOW | .claude-plugin/skills/seed/SKILL.md | 454 | except Exception: | CODE |
| LOW | .claude-plugin/skills/setup/SKILL.md | 141 | except Exception: | CODE |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 71 | except Exception: | CODE |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 83 | except Exception: | CODE |
| 682 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/test_llm_response_fence_robustness.py | 1047 | '{"questions": null, "should_continue": false, "reasoning": "done"}', | CODE |
| HIGH | tests/unit/test_llm_response_fence_robustness.py | 1965 | '{"ac_patches": null, "ontology_mutations": []}', | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 769 | ("false && export FOO=bar; sh -uc 'test \"$FOO\" = bar'", False), | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 770 | ("true || export FOO=bar; sh -uc 'test \"$FOO\" = bar'", False), | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 771 | ("false && FOO=bar; export FOO; sh -uc 'test \"$FOO\" = bar'", False), | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 772 | ("true && export FOO=bar; sh -uc 'test \"$FOO\" = bar'", True), | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 773 | ("false || export FOO=bar; sh -uc 'test \"$FOO\" = bar'", True), | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1080 | 'false && FOO=bar; test -n "$FOO"', | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1081 | 'true || FOO=bar; test -n "$FOO"', | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1380 | "cd sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1381 | "cd -- sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1382 | "CDPATH= cd sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1383 | "CDPATH= command cd sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1386 | "sh -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1387 | "sh -eu -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1388 | "bash -O extglob -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1389 | "bash --rcfile /dev/null -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1390 | "cd sub && bash -c 'python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1422 | "cd sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1423 | "cd -- sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1424 | "CDPATH= cd sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1425 | "CDPATH= command cd sub && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1428 | "sh -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1429 | "sh -eu -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1430 | "bash -O extglob -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1431 | "bash --rcfile /dev/null -c 'cd sub && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1432 | "cd sub && bash -c 'python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1464 | r"cd sub\ dir && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1469 | r"sh -c 'cd sub\ dir && python check.py'", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1501 | r"cd sub\ dir && python check.py", | CODE |
| HIGH⚡ | tests/unit/auto/test_seed_preflight.py | 1506 | r"sh -c 'cd sub\ dir && python check.py'", | CODE |
| HIGH | tests/unit/auto/test_seed_preflight.py | 153 | '&& cd "$tmp" && python organize.py && echo OK\'' | CODE |
| HIGH | tests/unit/auto/test_seed_preflight.py | 1588 | verify_command="cd sub && python check.py", | CODE |
| HIGH | tests/unit/auto/test_seed_preflight.py | 1601 | ("cd missing; python check.py", "false && cd sub; python check.py"), | CODE |
| HIGH | tests/unit/auto/test_seed_preflight.py | 1950 | ("python3 check.py && cd sub", "python3 check.py && env -C sub true"), | CODE |
| HIGH | tests/unit/auto/test_seed_preflight.py | 1975 | ("python3 check.py && cd sub", "python3 check.py && env -C sub true"), | CODE |
| HIGH | tests/unit/auto/test_seed_preflight.py | 2014 | command = "cd && python check.py" | CODE |
| HIGH | tests/unit/scripts/test_pr_hygiene_workflow.py | 92 | out=$(api_retry fake 2>/dev/null) | CODE |
| HIGH⚡ | tests/unit/scripts/test_pr_hygiene_workflow.py | 112 | api_retry fake > out.txt 2> err.txt || true | CODE |
| HIGH⚡ | tests/unit/scripts/test_pr_hygiene_workflow.py | 125 | if api_retry fake 2>/dev/null; then echo "unexpected-success"; else echo "failed=$?"; fi | CODE |
| HIGH⚡ | tests/unit/scripts/test_pr_hygiene_workflow.py | 155 | resolve_issue 1777 || status=$? | CODE |
| HIGH | tests/unit/scripts/test_check_module_size.py | 494 | "github.event.pull_request.base.sha || github.event.before }}" | CODE |
| HIGH⚡ | tests/unit/scripts/test_install_runtime_selection.py | 1858 | assert 'setup --runtime "$RUNTIME" --non-interactive || true' not in source | CODE |
| HIGH | tests/unit/scripts/test_install_runtime_selection.py | 236 | if ! grep -q '"notice_shown"[[:space:]]*:[[:space:]]*true' "$state" 2>/dev/null; then | CODE |
| HIGH⚡ | tests/unit/evaluation/test_detector.py | 138 | adapter = _FakeAdapter(response=json.dumps({"test": "npm test && rm -rf /"})) | CODE |
| HIGH⚡ | tests/unit/evaluation/test_languages.py | 174 | self._write_toml(tmp_path, 'test = "npm test && rm -rf /"\n') | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 1188 | for malformed in ("[null]", '[1, "x"]'): | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 1228 | "[null]", | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 1229 | '[null, "x"] stray text', | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 2026 | "true && case y in (y | artifacts:) :;; esac", | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 2027 | "false || case y in (y | artifacts:) :;; esac", | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 3281 | '[{"name": "a", "description": "null weight", "weight": null}]', | CODE |
| HIGH⚡ | tests/unit/bigbang/test_seed_generator.py | 3532 | '[{"name": "x", "description": "d", "weight": null}]' | CODE |
| HIGH | tests/unit/bigbang/test_seed_generator.py | 1174 | '[null, "x"] stray text', # JSON-parseable group + trailing garbage | CODE |
| HIGH | tests/unit/bigbang/test_seed_generator.py | 1213 | assert _parse_string_array_values("[null]", field_label="CONSTRAINTS") == ("None",) | CODE |
| HIGH | tests/unit/bigbang/test_seed_generator.py | 3305 | '[{"name": "x", "description": "d", "weight": null}]', | CODE |
| HIGH | tests/unit/bigbang/test_seed_generator.py | 3669 | evaluation_principles='[{"name": "x", "description": "d", "weight": null}]' | CODE |
| HIGH⚡ | tests/unit/orchestrator/test_verify_shell.py | 68 | assert route.argv("grep -q ok out.txt && exit 0") == ( | CODE |
| HIGH⚡ | tests/unit/orchestrator/test_verify_shell.py | 71 | "grep -q ok out.txt && exit 0", | CODE |
| HIGH⚡ | tests/unit/orchestrator/test_parallel_executor.py | 2351 | inner = f"false && touch claimed.py; {python_command}" | CODE |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/plugin/test_manifest_schema_0_4.py | 424 | def _set_permission_required(payload: dict, scope: str, required: bool) -> None: | CODE |
| LOW | tests/unit/cli/test_mcp_nested_guard.py | 30 | def _set_installed_versions(monkeypatch, versions: dict[str, str]) -> None: | CODE |
| LOW | …/unit/orchestrator/workflow_ir_conformance_fixtures.py | 127 | __all__ = [ | CODE |
| LOW | tests/integration/mcp/conftest.py | 514 | def set_data(self, key: str, value: str) -> None: | CODE |
| LOW | tests/conformance/workflow_ir/fixtures.py | 510 | __all__ = [ | CODE |
| LOW | src/ouroboros/copilot_permissions.py | 101 | __all__ = [ | CODE |
| LOW | src/ouroboros/runtime_instruction_artifacts.py | 204 | __all__ = [ | CODE |
| LOW | src/ouroboros/__init__.py | 26 | __all__ = ["__version__", "main"] | CODE |
| LOW | src/ouroboros/telemetry.py | 724 | def set_context(**props: Any) -> None: | CODE |
| LOW | src/ouroboros/telemetry.py | 1138 | __all__ = [ | CODE |
| LOW | src/ouroboros/sandbox.py | 34 | __all__ = ["SandboxClass"] | CODE |
| LOW | src/ouroboros/project_map.py | 381 | __all__ = [ | CODE |
| LOW | src/ouroboros/claude_permissions.py | 55 | __all__ = [ | CODE |
| LOW | src/ouroboros/package_profiles.py | 98 | __all__ = [ | CODE |
| LOW | src/ouroboros/codex_permissions.py | 122 | __all__ = [ | CODE |
| LOW | src/ouroboros/pm/renderer.py | 42 | __all__ = [ | CODE |
| LOW | src/ouroboros/pm/__init__.py | 16 | __all__ = [ | CODE |
| LOW | src/ouroboros/interview_adapters/triggers.py | 131 | __all__ = [ | CODE |
| LOW | src/ouroboros/interview_adapters/manifest.py | 174 | __all__ = [ | CODE |
| LOW | src/ouroboros/interview_adapters/registry.py | 46 | __all__ = ["BUILTIN_PACK_NAMES", "BuiltinGlossaryRegistry", "builtin_registry"] | CODE |
| LOW | src/ouroboros/interview_adapters/__init__.py | 41 | __all__ = [ | CODE |
| LOW | src/ouroboros/interview_adapters/reference_contrast.py | 83 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/session_signal.py | 451 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/hitl_resume.py | 241 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/ontology_questions.py | 455 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/session_signal_projection.py | 218 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/seed_contract.py | 86 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/runtime_transition.py | 476 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/retry.py | 213 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/hitl_state.py | 420 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/execution_preferences.py | 127 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/conductor.py | 302 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/disposable_memory.py | 62 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/requirement_candidate.py | 455 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/seed_contract_prompt.py | 174 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/ontology_aspect.py | 443 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/project_identity.py | 1003 | __all__ = [ | CODE |
| LOW | src/ouroboros/core/ac_tree.py | 216 | def update_node(self, node: ACNode) -> None: | CODE |
| LOW | src/ouroboros/copilot/cli_policy.py | 211 | __all__ = [ | CODE |
| LOW | src/ouroboros/copilot/runtime_profile.py | 45 | __all__ = ["RUNTIME_PROFILE_TO_COPILOT_AGENT", "resolve_copilot_agent"] | CODE |
| LOW | src/ouroboros/config/__init__.py | 118 | __all__ = [ | CODE |
| LOW | src/ouroboros/config/loader.py | 277 | def _set_secure_permissions(file_path: Path) -> None: | CODE |
| LOW | src/ouroboros/auto/domain_profile.py | 26 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/handoff_contract.py | 98 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/listeners.py | 328 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/__init__.py | 33 | __all__ = [ | CODE |
| LOW⚡ | src/ouroboros/auto/runtime_routing.py | 112 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/task_classes.py | 54 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/reference_candidate_bridge.py | 227 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/resume_render.py | 87 | __all__ = ["render_resume_lines"] | CODE |
| LOW | src/ouroboros/auto/domain_inference.py | 410 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/provenance.py | 72 | __all__ = ["PROVENANCE_ENV_VAR", "resolve_provenance"] | CODE |
| LOW | src/ouroboros/auto/blocker_attribution.py | 62 | __all__ = ["authoring_backend_label", "record_authoring_backend"] | CODE |
| LOW | src/ouroboros/auto/seed_preflight.py | 37 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/lateral_routing.py | 220 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/recovery_plan.py | 195 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/task_class_application.py | 27 | __all__ = [ | CODE |
| LOW | src/ouroboros/auto/profiles/research.py | 16 | __all__ = ["RESEARCH_PROFILE"] | CODE |
| LOW | src/ouroboros/auto/profiles/__init__.py | 10 | __all__ = ["CODING_PROFILE", "RESEARCH_PROFILE", "register_default_profiles"] | CODE |
| LOW | src/ouroboros/tui/events.py | 1179 | __all__ = [ | CODE |
| 370 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/integration/mcp/conftest.py | 164 | Call a tool. Args: name: Tool name. arguments: Tool arguments. Returns: | STRING |
| HIGH | tests/integration/mcp/conftest.py | 220 | Read a resource. Args: uri: Resource URI. Returns: Mock resource content. | STRING |
| HIGH | tests/integration/mcp/conftest.py | 271 | Get a filled prompt. Args: name: Prompt name. arguments: Prompt arguments. Ret | STRING |
| HIGH | src/ouroboros/core/lineage.py | 548 | Return lineage truncated to the given generation. The truncated lineage has ACTIVE status, ready for continued | STRING |
| HIGH | src/ouroboros/config/loader.py | 304 | Create default configuration files. Creates config.yaml and credentials.yaml with default templates in the spec | STRING |
| HIGH | src/ouroboros/config/loader.py | 374 | Load configuration from YAML file. Loads and validates configuration from the specified path or the default ~/. | STRING |
| HIGH | src/ouroboros/config/loader.py | 439 | Load credentials from YAML file. Loads and validates credentials from the specified path or the default ~/.ouro | STRING |
| HIGH | src/ouroboros/auto/ledger_seed.py | 232 | Synthesize a degraded but executable Seed from an incomplete ledger. The primary use case is the interview-deadline | STRING |
| HIGH | src/ouroboros/providers/gemini_event_normalizer.py | 131 | Normalize a single raw output line from the Gemini CLI. The function attempts JSON parsing first (when the stri | STRING |
| HIGH | src/ouroboros/providers/gemini_event_normalizer.py | 184 | Parse and normalise a JSON event line. Args: stripped: The stripped version of the line. | STRING |
| HIGH | src/ouroboros/providers/litellm_adapter.py | 1222 | Make the raw completion call. Args: messages: The conversation messages. config: The co | STRING |
| HIGH | src/ouroboros/providers/opencode_adapter.py | 203 | Normalize a model name for the OpenCode CLI. Strips whitespace and rejects the sentinel ``"default"`` value. | STRING |
| HIGH | src/ouroboros/providers/codex_cli_stream.py | 178 | Yield decoded lines from a runtime subprocess stdout/stderr stream. This is the orchestrator-runtime superset of :f | STRING |
| HIGH | src/ouroboros/providers/gemini_cli_adapter.py | 634 | Resolve the path to the ``gemini`` binary. Priority: 1. Explicit *cli_path* constructor argument | STRING |
| HIGH | src/ouroboros/runtime/child_env.py | 47 | Build an isolated environment for a nested backend CLI subprocess. Args: base_env: Environment to derive fr | STRING |
| HIGH | src/ouroboros/plugin/digest.py | 89 | Compute the canonical tree hash for the subtree at `root`. Args: root: Path to the directory whose contents | STRING |
| HIGH | src/ouroboros/plugin/manifest.py | 1105 | Load and validate a plugin manifest from `path`. Args: path: Filesystem path to an `ouroboros.plugin.json` | STRING |
| HIGH | src/ouroboros/plugin/ledger_adapter.py | 111 | Extract the original audit event from a wrapped envelope. Args: envelope: A dict produced by `wrap_plugin_e | STRING |
| HIGH | src/ouroboros/plugin/userlevel_registry.py | 88 | Register a program from its loaded manifest. Args: manifest: The validated `PluginManifest` (from ` | STRING |
| HIGH | src/ouroboros/plugin/agents/registry.py | 450 | Compose a new agent from existing one with overrides. Args: name: Name for the composed agent. | STRING |
| HIGH | src/ouroboros/plugin/agents/pool.py | 417 | Submit a task to the pool. Args: agent_type: Agent name or role to execute the task. pr | STRING |
| HIGH | src/ouroboros/plugin/agents/pool.py | 474 | Wait for and retrieve task result. Args: task_id: Task identifier. timeout: Maximum sec | STRING |
| HIGH | src/ouroboros/plugin/skills/registry.py | 406 | Load a skill from its SKILL.md file. Args: skill_md_path: Path to the SKILL.md file. Retur | STRING |
| HIGH | src/ouroboros/agents/loader.py | 57 | Load the full markdown content for an agent. Args: agent_name: File stem, e.g. ``"socratic-interviewer"``. | STRING |
| HIGH | src/ouroboros/mcp/tools/subagent.py | 660 | Build a SubagentPayload with validation. Args: tool_name: MCP tool name that triggered dispatch (e.g. "ouro | STRING |
| HIGH | src/ouroboros/mcp/tools/subagent.py | 1802 | Wrap a list of SubagentPayloads into a single MCPToolResult for parallel dispatch. The bridge plugin recognizes the | STRING |
| HIGH | src/ouroboros/mcp/tools/subagent.py | 1854 | Build N subagent payloads — one per lateral-thinking persona. Each payload targets a different persona so main LLM | STRING |
| HIGH | src/ouroboros/mcp/tools/subagent.py | 2381 | Build one SubagentPayload per fan-out request spec. This is the generic, request-shaped builder that lets any inter | STRING |
| HIGH | src/ouroboros/mcp/tools/background.py | 162 | Run the shared allocate -> guard -> agent-process -> start_job pipeline. Args: job_manager: The per-server | STRING |
| HIGH | src/ouroboros/mcp/server/auth.py | 319 | Build DNS-rebinding protection settings for a network bind. The SDK only auto-enables this protection for three loo | STRING |
| HIGH | src/ouroboros/mcp/server/auth.py | 426 | Validate a requested bind and build the SDK wiring that protects it. This is the trust boundary for serving: reachi | STRING |
| HIGH | src/ouroboros/mcp/server/adapter.py | 1517 | Create an Ouroboros MCP server with all tools and dependencies wired. This is a composition root that creates all s | STRING |
| HIGH | src/ouroboros/cli/jsonc.py | 42 | Convert JSONC text to strict JSON by removing comments and trailing commas. Unlike a simple regex sweep, this parse | STRING |
| HIGH | src/ouroboros/cli/jsonc.py | 79 | Parse JSONC text into a Python object. Convenience wrapper that strips comments/trailing commas then delegates | STRING |
| HIGH | src/ouroboros/cli/commands/run.py | 157 | Load seed configuration from YAML file. Args: seed_file: Path to the seed YAML file. Returns: | STRING |
| HIGH | src/ouroboros/cli/commands/mcp.py | 1038 | Validate the requested exposure and return the token to enforce. ``MCPServerAdapter.serve`` holds the same boundary | STRING |
| HIGH | src/ouroboros/harness/deliver_gate.py | 258 | Load and normalize EventStore evidence for one AC deliver-gate check. ``execution_id`` is required so the deliver-g | STRING |
| HIGH | src/ouroboros/resilience/stagnation.py | 647 | Create appropriate event for a stagnation detection. Factory function that creates the correct event type based on | STRING |
| HIGH | src/ouroboros/persistence/checkpoint.py | 117 | Reconstruct checkpoint from dict. Args: data: Dict with checkpoint data. Returns: | STRING |
| HIGH | src/ouroboros/persistence/checkpoint.py | 193 | Sanitize seed_id to prevent path traversal attacks. Strips null bytes, removes path separators, Windows-reserve | STRING |
| HIGH | src/ouroboros/persistence/checkpoint.py | 543 | Get file path for checkpoint at specific rollback level. The seed_id is sanitized to prevent path traversal, an | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 53 | Create a BrownfieldRepo from a dict. Accepts the same dict shape as the old ``BrownfieldEntry.from_dict()``. | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 236 | Register a brownfield repository. If a repo with the same path already exists, it is updated (upsert). | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 312 | Bulk-insert scanned repositories (is_default=False, desc=''). Each dict must have ``path`` and ``name`` keys. | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 368 | List registered brownfield repositories with optional pagination. Args: offset: Number of rows to s | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 488 | Set a repository as the sole default brownfield context. Clears the default flag on **all** other repos and set | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 617 | Update the description of a registered repository. Args: path: Absolute filesystem path of the repo | STRING |
| HIGH | src/ouroboros/persistence/brownfield.py | 656 | Remove a brownfield repository registration. Args: path: Absolute filesystem path of the repo to re | STRING |
| HIGH | src/ouroboros/persistence/event_store.py | 787 | Append an event to the store. The operation is wrapped in a transaction for atomicity. If the insert fa | STRING |
| HIGH | src/ouroboros/persistence/event_store.py | 1685 | Replay all events for a specific aggregate. The operation uses a transaction for read consistency. Arg | STRING |
| HIGH | src/ouroboros/persistence/event_store.py | 1882 | Get recent events, optionally filtered by type. Args: event_type: Optional event type to filter by. | STRING |
| HIGH | src/ouroboros/persistence/event_store.py | 2996 | Replay all events for a lineage aggregate. Convenience method for evolutionary loop lineage reconstruction. | STRING |
| HIGH | src/ouroboros/evaluation/checklist.py | 128 | Aggregate per-AC EvaluationResult objects into a checklist. Args: ac_texts: The acceptance criteria, in the | STRING |
| HIGH | src/ouroboros/bigbang/ambiguity.py | 708 | Parse LLM response into ScoreBreakdown. Args: response: Raw LLM response text. is_brown | STRING |
| HIGH | src/ouroboros/bigbang/interview.py | 597 | Deterministically select the best question candidate. Selection rule (no LLM judge): 1. Prefer the candidate t | STRING |
| HIGH | src/ouroboros/bigbang/question_classifier.py | 307 | Parse LLM classification response. Args: response: Raw LLM response text. original_ques | STRING |
| HIGH | src/ouroboros/bigbang/seed_generator.py | 2197 | Parse LLM response into requirements dictionary. Args: response: Raw LLM response text. Re | STRING |
| HIGH | src/ouroboros/bigbang/pm_interview.py | 1496 | Parse LLM response into PMSeed. Args: response: Raw LLM response text. interview_id: So | STRING |
| HIGH | src/ouroboros/orchestrator/adapter.py | 1506 | Execute a task and yield progress messages. This is an async generator that streams messages as Claude works. | STRING |
| HIGH | src/ouroboros/orchestrator/opencode_runtime.py | 476 | Assemble the CLI argument list for ``opencode run``. The prompt is **not** included in argv — it is piped via s | STRING |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 242 | CODE | |
| LOW | tests/unit/test_cli_surface_docs_contract.py | 51 | CODE | |
| LOW | tests/unit/test_cli_surface_docs_contract.py | 95 | CODE | |
| LOW | tests/unit/test_llm_response_fence_robustness.py | 262 | CODE | |
| LOW | tests/unit/test_llm_response_fence_robustness.py | 360 | CODE | |
| LOW | tests/unit/test_tui_usage_docs_contract.py | 122 | CODE | |
| LOW | tests/unit/test_project_map.py | 55 | CODE | |
| LOW | tests/unit/core/test_project_identity.py | 595 | CODE | |
| LOW | tests/unit/core/test_project_identity.py | 603 | CODE | |
| LOW | tests/unit/auto/test_user_preference_and_floor.py | 949 | CODE | |
| LOW | tests/unit/tui/test_session_selector_replay.py | 43 | CODE | |
| LOW | tests/unit/mcp/test_job_manager.py | 1202 | CODE | |
| LOW | tests/unit/mcp/tools/test_start_auto.py | 837 | CODE | |
| LOW | tests/unit/mcp/tools/test_start_auto.py | 923 | CODE | |
| LOW | tests/unit/mcp/tools/test_job_observer.py | 193 | CODE | |
| LOW | …sts/unit/mcp/tools/test_auto_interview_construction.py | 800 | CODE | |
| LOW | tests/unit/mcp/server/test_adapter.py | 800 | CODE | |
| LOW | tests/unit/cli/test_setup.py | 6000 | CODE | |
| LOW | tests/unit/evolution/test_frugality.py | 1223 | CODE | |
| LOW | tests/unit/persistence/test_picker_indexes.py | 1259 | CODE | |
| LOW | tests/unit/evaluation/test_json_utils.py | 40 | CODE | |
| LOW | tests/unit/bigbang/test_seed_generator.py | 99 | CODE | |
| LOW | tests/unit/orchestrator/test_capabilities.py | 1052 | CODE | |
| LOW | tests/unit/orchestrator/test_route_escalation_live.py | 1298 | CODE | |
| LOW | tests/unit/orchestrator/test_route_escalation_live.py | 3117 | CODE | |
| LOW | tests/unit/orchestrator/test_route_escalation_live.py | 3184 | CODE | |
| LOW | tests/unit/orchestrator/test_route_escalation_live.py | 1304 | CODE | |
| LOW | tests/unit/orchestrator/test_ac_execution_capsule.py | 933 | CODE | |
| LOW | tests/e2e/test_cli_commands.py | 169 | CODE | |
| LOW | scripts/version-check.py | 168 | CODE | |
| LOW | scripts/version-check.py | 245 | CODE | |
| LOW | scripts/check-module-size.py | 380 | CODE | |
| LOW | scripts/sync-plugin-version.py | 348 | CODE | |
| LOW | scripts/sync-plugin-version.py | 596 | CODE | |
| LOW | scripts/export_interview_latency.py | 180 | CODE | |
| LOW | src/ouroboros/telemetry.py | 472 | CODE | |
| LOW | src/ouroboros/telemetry.py | 549 | CODE | |
| LOW | src/ouroboros/telemetry.py | 615 | CODE | |
| LOW | src/ouroboros/telemetry.py | 789 | CODE | |
| LOW | src/ouroboros/telemetry.py | 849 | CODE | |
| LOW | src/ouroboros/interview_adapters/triggers.py | 83 | CODE | |
| LOW | src/ouroboros/core/session_signal_projection.py | 114 | CODE | |
| LOW | src/ouroboros/core/security.py | 302 | CODE | |
| LOW | src/ouroboros/core/security.py | 521 | CODE | |
| LOW | src/ouroboros/core/file_lock.py | 359 | CODE | |
| LOW | src/ouroboros/core/file_lock.py | 485 | CODE | |
| LOW | src/ouroboros/core/hitl_state.py | 82 | CODE | |
| LOW | src/ouroboros/core/seed.py | 944 | CODE | |
| LOW | src/ouroboros/core/requirement_candidate.py | 291 | CODE | |
| LOW | src/ouroboros/core/json_utils.py | 466 | CODE | |
| LOW | src/ouroboros/core/json_utils.py | 727 | CODE | |
| LOW | src/ouroboros/auto/domain_profile.py | 279 | CODE | |
| LOW | src/ouroboros/auto/ledger.py | 409 | CODE | |
| LOW | src/ouroboros/auto/execution_acceptance.py | 278 | CODE | |
| LOW | src/ouroboros/auto/execution_acceptance.py | 444 | CODE | |
| LOW | src/ouroboros/auto/safe_defaults.py | 173 | CODE | |
| LOW | src/ouroboros/auto/seed_repairer.py | 113 | CODE | |
| LOW | src/ouroboros/auto/answerer.py | 143 | CODE | |
| LOW | src/ouroboros/auto/domain_inference.py | 1438 | CODE | |
| LOW | src/ouroboros/auto/pipeline.py | 688 | CODE | |
| 358 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/pm/test_renderer.py | 0 | create a pmseed with sensible defaults for testing. | STRING |
| HIGH | tests/unit/bigbang/test_pm_document_generator.py | 0 | create a pmseed with sensible defaults for testing. | STRING |
| HIGH | tests/unit/bigbang/test_pm_document_writer.py | 0 | create a pmseed with sensible defaults for testing. | STRING |
| HIGH | tests/unit/mcp/tools/test_ac_tree_hud_footer.py | 0 | provide an initialized in-memory event store and dispose it after each test. | STRING |
| HIGH | tests/unit/mcp/tools/test_ac_tree_hud_max_nodes.py | 0 | provide an initialized in-memory event store and dispose it after each test. | STRING |
| HIGH | tests/unit/mcp/tools/test_definitions.py | 0 | provide an initialized in-memory event store and dispose it after each test. | STRING |
| HIGH | tests/unit/mcp/tools/test_ac_tree_hud_handler.py | 0 | provide an initialized in-memory event store and dispose it after each test. | STRING |
| HIGH | …s/unit/mcp/tools/test_ac_tree_hud_handler_completed.py | 0 | provide an initialized in-memory event store for hud handler tests. | STRING |
| HIGH | …/mcp/tools/test_ac_tree_hud_handler_invalid_session.py | 0 | provide an initialized in-memory event store for hud handler tests. | STRING |
| HIGH | …t/mcp/tools/test_ac_tree_hud_handler_cursor_changed.py | 0 | provide an initialized in-memory event store for hud handler tests. | STRING |
| HIGH | …nit/mcp/tools/test_ac_tree_hud_handler_no_execution.py | 0 | provide an initialized in-memory event store for hud handler tests. | STRING |
| HIGH | …sts/unit/mcp/tools/test_ac_tree_hud_handler_waiting.py | 0 | provide an initialized in-memory event store for hud handler tests. | STRING |
| HIGH | tests/unit/bigbang/test_pm_interview.py | 0 | create a pminterviewengine with mocked dependencies. | STRING |
| HIGH | tests/unit/bigbang/test_pm_interview_brownfield_db.py | 0 | create a pminterviewengine with mocked dependencies. | STRING |
| HIGH | tests/unit/bigbang/test_decide_later_items.py | 0 | create a pminterviewengine with mocked dependencies. | STRING |
| HIGH | tests/unit/bigbang/test_classifier_context.py | 0 | create a pminterviewengine with mocked dependencies. | STRING |
| HIGH | tests/unit/orchestrator/test_codex_cli_runtime.py | 0 | removed local parser helpers should not remain referenced by the runtime. | STRING |
| HIGH | tests/unit/orchestrator/test_opencode_runtime.py | 0 | removed local parser helpers should not remain referenced by the runtime. | STRING |
| HIGH | tests/unit/orchestrator/test_hermes_runtime.py | 0 | removed local parser helpers should not remain referenced by the runtime. | STRING |
| HIGH | tests/unit/orchestrator/test_inflight_cancellation.py | 0 | treat a unit-test tracker as the durable snapshot for mocked stores. | STRING |
| HIGH | tests/unit/orchestrator/test_runner.py | 0 | treat a unit-test tracker as the durable snapshot for mocked stores. | STRING |
| HIGH | …ts/unit/orchestrator/test_runner_execution_guidance.py | 0 | treat a unit-test tracker as the durable snapshot for mocked stores. | STRING |
| HIGH | tests/unit/orchestrator/test_runner_cancellation.py | 0 | treat a unit-test tracker as the durable snapshot for mocked stores. | STRING |
| HIGH | src/ouroboros/tui/screens/execution.py | 0 | initialize debug screen. args: state: initial tui state. name: screen name. id: screen id. classes: css classes. | STRING |
| HIGH | src/ouroboros/tui/screens/logs.py | 0 | initialize debug screen. args: state: initial tui state. name: screen name. id: screen id. classes: css classes. | STRING |
| HIGH | src/ouroboros/tui/screens/debug.py | 0 | initialize debug screen. args: state: initial tui state. name: screen name. id: screen id. classes: css classes. | STRING |
| HIGH | src/ouroboros/tui/screens/execution.py | 0 | update the entire state. args: state: new tui state. | STRING |
| HIGH | src/ouroboros/tui/screens/logs.py | 0 | update the entire state. args: state: new tui state. | STRING |
| HIGH | src/ouroboros/tui/screens/debug.py | 0 | update the entire state. args: state: new tui state. | STRING |
| HIGH | src/ouroboros/providers/pi_llm_adapter.py | 0 | validate extracted json against the requested response_format. | STRING |
| HIGH | src/ouroboros/providers/gjc_llm_adapter.py | 0 | validate extracted json against the requested response_format. | STRING |
| HIGH | src/ouroboros/providers/goose_cli_adapter.py | 0 | validate extracted json against the requested response_format. | STRING |
| HIGH | src/ouroboros/providers/ourocode_llm_adapter.py | 0 | validate extracted json against the requested response_format. | STRING |
| HIGH | src/ouroboros/providers/zcode_cli_adapter.py | 0 | validate extracted json against the requested response_format. | STRING |
| HIGH | src/ouroboros/providers/codex_cli_adapter.py | 0 | resolve an explicit cli path from config helpers when available. | STRING |
| HIGH | src/ouroboros/orchestrator/grok_cli_runtime.py | 0 | resolve an explicit cli path from config helpers when available. | STRING |
| HIGH | src/ouroboros/orchestrator/codex_cli_runtime.py | 0 | resolve an explicit cli path from config helpers when available. | STRING |
| HIGH | src/ouroboros/verification/extractor.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/evaluation/semantic.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/bigbang/ambiguity.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/bigbang/question_classifier.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/bigbang/pm_document.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/bigbang/explore.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/bigbang/pm_interview.py | 0 | resolve implicit default model while preserving explicit caller pins. | STRING |
| HIGH | src/ouroboros/orchestrator/hermes_runtime.py | 0 | identify final recoverable intercept failures that should fall through. | STRING |
| HIGH | src/ouroboros/orchestrator/skill_intercept.py | 0 | identify final recoverable intercept failures that should fall through. | STRING |
| HIGH | src/ouroboros/orchestrator/codex_cli_runtime.py | 0 | identify final recoverable intercept failures that should fall through. | STRING |
| HIGH | src/ouroboros/orchestrator/hermes_runtime.py | 0 | preserve runtime-owned warnings for matched skills with bad metadata. | STRING |
| HIGH | src/ouroboros/orchestrator/opencode_runtime.py | 0 | preserve runtime-owned warnings for matched skills with bad metadata. | STRING |
| HIGH | src/ouroboros/orchestrator/codex_cli_runtime.py | 0 | preserve runtime-owned warnings for matched skills with bad metadata. | STRING |
| HIGH | src/ouroboros/orchestrator/hermes_runtime.py | 0 | attach interview session metadata to the runtime handle. | STRING |
| HIGH | src/ouroboros/orchestrator/command_dispatcher.py | 0 | attach interview session metadata to the runtime handle. | STRING |
| HIGH | src/ouroboros/orchestrator/codex_cli_runtime.py | 0 | attach interview session metadata to the runtime handle. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/mcp/tools/test_definitions.py | 276 | # Verify-by-default: fresh runs enforce fat-harness unless the seed | COMMENT |
| MEDIUM | tests/unit/cli/test_harness.py | 423 | # The bot reproduced: ``harness show <abs-path> --traces-root <root>`` served | COMMENT |
| MEDIUM⚡ | tests/unit/config_tui/test_launcher.py | 21 | ("1", True, True), # harness env wins even on a TTY | CODE |
| MEDIUM⚡ | tests/unit/orchestrator/test_model_routing.py | 786 | # Cross-harness redispatch swaps in a codex adapter mid-run; a router built | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_frugality_producers.py | 1085 | # No structured facts array → the common non-fat-harness case → skip silently. | COMMENT |
| MEDIUM⚡ | tests/unit/orchestrator/test_profile_strategy.py | 139 | # Bot finding on #891 r7: the harness has no structured BLOCKED | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_parallel_executor.py | 6842 | # ``files_touched`` path the agent claims. Every case must fail the fat-harness | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_parallel_executor.py | 13148 | # Isolate the stall→failure conversion: cross-harness redispatch is a | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_parallel_executor.py | 13253 | # same-runtime budget is only 'exhausted' (so alt-harness may run) on | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_parallel_executor.py | 13347 | # counter cap — yet the alternate harness was still consulted exactly once. | COMMENT |
| MEDIUM | …chestrator/test_parallel_executor_verify_by_default.py | 628 | # loop early-stops before the counter cap and reaches the alt-harness hook. | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_antigravity_cli_runtime.py | 26 | # --- Minimal fake subprocess harness (mirrors test_codex_cli_runtime) ------- | COMMENT |
| MEDIUM⚡ | tests/unit/orchestrator/test_phase_wrappers.py | 86 | # merging with the harness instructions below. Every non-empty | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_grok_cli_runtime.py | 23 | # --- Minimal fake subprocess harness (mirrors test_codex_cli_runtime) ------- | COMMENT |
| MEDIUM | …sts/unit/orchestrator/test_baseline_metrics_capture.py | 1 | """Tests for the recorded #961 fat-harness baseline capture artifact.""" | STRING |
| MEDIUM | tests/unit/orchestrator/test_shadow_replay.py | 475 | # -- Layer 2: the harness itself --------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_shadow_replay.py | 1231 | # prompts are an explicit limitation of this experiment harness. | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_shadow_replay.py | 1374 | # Flag off → the harness is never entered: no factory build, no event. | COMMENT |
| MEDIUM | tests/canonical/test_canonical.py | 428 | # exists in source). The harness must not be subject to the same defect. | COMMENT |
| MEDIUM | tests/canonical/cli-todo/expected.yaml | 22 | # Live product-reality smoke contract (#1452). The live harness executes | COMMENT |
| MEDIUM | tests/conformance/workflow_ir/__init__.py | 1 | # Workflow IR conformance harness — Wave 1 N-2 (parent #956, umbrella #1131). | COMMENT |
| MEDIUM | …nformance/workflow_ir/test_plugin_firewall_contract.py | 165 | This is the load-bearing #1131 contract: when the harness projects | STRING |
| MEDIUM | …nformance/workflow_ir/test_plugin_firewall_contract.py | 181 | # The firewall outcome the harness MUST consume. | COMMENT |
| MEDIUM | integrations/dsh-plugin/cordis.patch.yml | 58 | # The child does NOT inherit the harness environment wholesale: | COMMENT |
| MEDIUM | integrations/dsh-plugin/cordis.patch.yml | 61 | # every DSH_* name removed, precisely so harness credentials never leak | COMMENT |
| MEDIUM | scripts/manual-synapse-state-smoke.py | 326 | except Exception as exc: # noqa: BLE001 - manual harness reports exact failure. | CODE |
| MEDIUM | scripts/manual-synapse-smoke.py | 301 | except Exception as exc: # noqa: BLE001 - manual harness reports exact backend failure. | CODE |
| MEDIUM | src/ouroboros/orchestrator_stage.py | 4 | agreed in #476 assigns a different harness per pipeline stage: | STRING |
| MEDIUM | src/ouroboros/auto/domain_inference.py | 92 | # both more robust and easier to reason about: | COMMENT |
| MEDIUM | src/ouroboros/auto/domain_inference.py | 1405 | # The harness owns what it creates and recycles (#1813 R98): a component | COMMENT |
| MEDIUM | src/ouroboros/auto/web_ownership.py | 157 | # audit", "admin portal documentation", "admin portal test harness"), so | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/pm_handler.py | 539 | # plugin/project MCP server — under a heavy harness the front-loaded | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/execution_handlers.py | 1356 | # The original seed file may contain harness-owned assertions. | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/execution_handlers.py | 2630 | # The original seed file may contain harness-owned assertions. | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/authoring_handlers.py | 2395 | # dependency-injection / test-harness path into a hard failure. | COMMENT |
| MEDIUM | src/ouroboros/cli/commands/auto.py | 817 | # before printing so the status surface stays robust against | COMMENT |
| MEDIUM | src/ouroboros/config_tui/app.py | 133 | # the robust blank check across widget interactions. | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/runner.py | 1116 | # Opt-in shadow-replay baseline harness (frugality-proof AC5). Read ONCE | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/runner.py | 9173 | # fat-harness profile and legacy registry are effect-bearing inputs; | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/runner.py | 9258 | # Check for fat-harness / parallel execution mode. Fat-harness | COMMENT |
| MEDIUM⚡ | src/ouroboros/orchestrator/workflow_ir.py | 287 | # evidence-bearing artifacts in the fat-harness loop. | COMMENT |
| MEDIUM⚡ | src/ouroboros/orchestrator/workflow_ir.py | 297 | # input_schema_ref so the harness can validate the payload shape | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/model_routing.py | 531 | # Cross-harness redispatch swaps adapters mid-run; a model id only runs on the | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/baseline_metrics_capture.py | 1 | """Recorded fixture baseline for the #961 fat-harness metrics gate. | STRING |
| MEDIUM | src/ouroboros/orchestrator/baseline_metrics_capture.py | 195 | "# #961 fat-harness baseline metrics capture", | CODE |
| MEDIUM⚡ | src/ouroboros/orchestrator/failure_taxonomy.py | 187 | # Cross-harness recovery (PR-X): re-dispatch the SAME AC on a *different* | COMMENT |
| MEDIUM⚡ | src/ouroboros/orchestrator/failure_taxonomy.py | 189 | # REDISPATCH (re-split, same runtime), this is the meta-harness move no | COMMENT |
| MEDIUM⚡ | src/ouroboros/orchestrator/failure_taxonomy.py | 190 | # single-vendor harness can make — it swaps the vendor, not the tier or the | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/baseline_metrics.py | 158 | """Build a deterministic report for the #961 fat-harness gates. | STRING |
| MEDIUM⚡ | src/ouroboros/orchestrator/parallel_executor.py | 68 | # Import the harness submodules directly, NOT the ``ouroboros.harness`` package | COMMENT |
| MEDIUM⚡ | src/ouroboros/orchestrator/parallel_executor.py | 69 | # aggregate: ``harness.__init__`` pulls in ``deliver_routing`` which imports from | COMMENT |
| MEDIUM⚡ | src/ouroboros/orchestrator/parallel_executor.py | 71 | # partially-initialized ``harness`` during ``orchestrator`` package import. The | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 2793 | # Opt-in shadow-replay baseline harness (frugality-proof AC5). Default OFF: | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 2868 | # Cross-harness recovery (PR-X X1): when a terminally failing AC is | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 2878 | # AC identities that have already consumed their one alt-harness redispatch. | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 6684 | # Stable re-run bundle for a possible cross-harness redispatch (PR-X X1): | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 6752 | # Bounce classification and alternate-harness redispatch are | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 6792 | # one cross-harness redispatch. Earlier attempts fall through | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 6885 | # sentinel), so only try a cross-harness redispatch once that | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/parallel_executor.py | 6979 | # not trigger a second harness hop. | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 141 | "skills" = "ouroboros/skills" | COMMENT |
| LOW | tests/conftest.py | 21 | COMMENT | |
| LOW | tests/conftest.py | 41 | # and dynamically resolved CLI persistence defaults in one move, and | COMMENT |
| LOW | tests/unit/auto/test_seed_repairer_bounded.py | 401 | # Wait for the daemon worker thread to unwind on its own. ``wait_for`` | COMMENT |
| LOW | tests/unit/auto/test_domain_inference.py | 281 | classification is ledger-derived, not goal-text-derived alone.""" | COMMENT |
| LOW | tests/unit/auto/test_domain_inference.py | 381 | COMMENT | |
| LOW | tests/unit/auto/test_domain_inference.py | 461 | a negated CLI mention (e.g. "CLI, not a CLI library") must still | COMMENT |
| LOW | tests/unit/auto/test_interview_pipeline.py | 5281 | result = await driver.run(state, ledger) | COMMENT |
| LOW | tests/unit/auto/test_interview_pipeline.py | 5421 | second = await driver.run(state, resumed_ledger) | COMMENT |
| LOW | tests/unit/auto/test_adapters_ralph_poller.py | 81 | result = await poller(job_id="job_ralph_existing") | COMMENT |
| LOW | tests/unit/auto/test_pipeline_lateral.py | 821 | run_artifact=long_artifact, | COMMENT |
| LOW | tests/unit/plugin/test_firewall.py | 1361 | from ouroboros.plugin.digest import canonical_tree_hash | COMMENT |
| LOW | tests/unit/mcp/tools/test_data_context_lane.py | 1641 | # The class, not the last instance | COMMENT |
| LOW | tests/unit/mcp/tools/test_data_context_lane.py | 1861 | COMMENT | |
| LOW | tests/unit/cli/test_harness.py | 421 | # run_id path-traversal boundary (security regression, #1582 bot finding) # | COMMENT |
| LOW | tests/unit/cli/test_auto_command.py | 1161 | # A hand-built Ralph handler enqueues a job that dies on its first | COMMENT |
| LOW | tests/unit/bigbang/test_answer_provenance.py | 301 | COMMENT | |
| LOW | tests/unit/orchestrator/test_context_governor.py | 241 | ) | COMMENT |
| LOW | tests/unit/orchestrator/test_zcode_cli_runtime.py | 341 | permission_mode="bypassPermissions", | COMMENT |
| LOW | tests/unit/orchestrator/test_phase_wrappers.py | 61 | COMMENT | |
| LOW | tests/canonical/cli-todo/expected.yaml | 1 | # L0 canonical acceptance scenario — cli-todo | COMMENT |
| LOW | tests/integration/auto/test_dispatch_to_seed_e2e.py | 481 | # | COMMENT |
| LOW | tests/conformance/workflow_ir/__init__.py | 1 | # Workflow IR conformance harness — Wave 1 N-2 (parent #956, umbrella #1131). | COMMENT |
| LOW | docs/guides/evaluation-pipeline.md | 561 | # models=None resolves a roster when ConsensusConfig is constructed. It first | COMMENT |
| LOW | docs/guides/evaluation-pipeline.zh-CN.md | 541 | semantic=SemanticConfig( | COMMENT |
| LOW | docs/examples/mcp-config.yaml | 1 | # Example MCP Client Configuration for Ouroboros | COMMENT |
| LOW | docs/examples/mcp-config.yaml | 41 | # - name: "memory" | COMMENT |
| LOW | docs/examples/mcp-config.yaml | 61 | # transport: "sse" | COMMENT |
| LOW | docs/examples/mcp-config.yaml | 81 | # Example: tool_prefix: "mcp_" makes "read" become "mcp_read" | COMMENT |
| LOW | integrations/dsh-plugin/cordis.patch.yml | 1 | # dsh-ouroboros — mounts Ouroboros as native MCP tools inside DeepSeek Harness. | COMMENT |
| LOW | integrations/dsh-plugin/cordis.patch.yml | 21 | # spawns its own `dsh-acp-demo` child and fails | COMMENT |
| LOW | integrations/dsh-plugin/cordis.patch.yml | 61 | # every DSH_* name removed, precisely so harness credentials never leak | COMMENT |
| LOW | examples/coordinator_test_seed.yaml | 1 | # Coordinator Agent Test Seed | COMMENT |
| LOW | examples/parallel_subac_test_seed.yaml | 1 | # Parallel Sub-AC Test Seed | COMMENT |
| LOW | scripts/check-auto-boundary.py | 101 | COMMENT | |
| LOW | scripts/check-auto-boundary.py | 121 | # PascalCase-composition forms. | COMMENT |
| LOW | scripts/check-auto-boundary.py | 141 | # missed. The case-sensitive uppercase first letter is what | COMMENT |
| LOW | scripts/check-auto-boundary.py | 161 | # ``linearTransform``, or ``LinearOperator`` stay benign even | COMMENT |
| LOW | scripts/check-auto-boundary.py | 241 | # Root-level escape: if SCAN_DIR itself is a symlink whose | COMMENT |
| LOW | scripts/ralph.py | 21 | import re | COMMENT |
| LOW | scripts/check-auto-perf-budget.py | 41 | # bodies wrap multi-line guidance blocks. Bot review on commit dc191d02 | COMMENT |
| LOW | scripts/check-auto-perf-budget.py | 121 | body = _strip_html_comments(body) | COMMENT |
| LOW | scripts/install.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/install.sh | 121 | } | COMMENT |
| LOW | scripts/install.sh | 141 | # telemetry keys are read, and an already-set real process environment | COMMENT |
| LOW | scripts/install.sh | 241 | # dotenv_values() decodes backslash escapes inside a double-quoted | COMMENT |
| LOW | scripts/install.sh | 281 | value="${value%"${value##*[![:space:]]}"}" | COMMENT |
| LOW | scripts/install.sh | 441 | local f="$HOME/.ouroboros/telemetry.json" id="" winner_id="" tmp file_existed=false lockdir wait_i | COMMENT |
| LOW | scripts/install.sh | 461 | # the file as JSON and looks at the TOP-LEVEL `distinct_id` field only | COMMENT |
| LOW | scripts/install.sh | 581 | # trusting our own candidate: | COMMENT |
| LOW | scripts/install.sh | 601 | # Either way, every process then adopts whichever valid, canonical | COMMENT |
| LOW | scripts/install.sh | 641 | else | COMMENT |
| LOW | scripts/ralph.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/dependabot.yml | 1 | # Dependabot configuration. | COMMENT |
| LOW | .github/workflows/pr-hygiene.yml | 1 | name: PR Hygiene | COMMENT |
| LOW | .github/workflows/pr-hygiene.yml | 81 | # hostage to infrastructure -- but it also must not fail open | COMMENT |
| LOW | .github/workflows/pr-hygiene.yml | 121 | exit 0 | COMMENT |
| LOW | .github/workflows/module-size.yml | 1 | name: module-size | COMMENT |
| LOW | src/ouroboros/copilot_permissions.py | 41 | COMMENT | |
| LOW | src/ouroboros/telemetry.py | 81 | # `_PluginAwareGroup.get_command()` (src/ouroboros/cli/main.py) resolves any | COMMENT |
| 209 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/mcp/tools/test_pm_handler_snapshot.py | 105 | # Step 1: start without repos to create the session + pm_meta. | COMMENT |
| LOW | tests/unit/mcp/tools/test_pm_handler_snapshot.py | 116 | # Step 2: select repos — persisted + forwarded paths must be snapshots. | COMMENT |
| LOW⚡ | tests/unit/cli/test_init_pm_seed_detection.py | 531 | # Step 1: Detect | COMMENT |
| LOW⚡ | tests/unit/cli/test_init_pm_seed_detection.py | 536 | # Step 2: Select (single seed → confirm) | COMMENT |
| LOW⚡ | tests/unit/cli/test_init_pm_seed_detection.py | 541 | # Step 3: Load as context | COMMENT |
| LOW⚡ | tests/unit/bigbang/test_brownfield.py | 1334 | # Step 2: Simulate user selecting repo #2 | COMMENT |
| LOW⚡ | tests/unit/bigbang/test_brownfield.py | 1343 | # Step 3: Set default (toggle: /b is not default, so it gets added) | COMMENT |
| LOW | tests/unit/bigbang/test_brownfield.py | 1316 | # Step 1: Scan returns repos | COMMENT |
| LOW | docs/getting-started.md | 331 | ### Step 1: Interview | COMMENT |
| LOW | docs/getting-started.md | 365 | ### Step 2: Execute | COMMENT |
| LOW | docs/getting-started.md | 375 | ### Step 3: Monitor | COMMENT |
| LOW | docs/getting-started.md | 390 | ### Step 4: Review | COMMENT |
| LOW | docs/contributing/findings-registry.md | 12 | # NOTE: The following successor files are planned but not yet created. | COMMENT |
| LOW | .claude-plugin/skills/pm/SKILL.md | 12 | ### Step 0: Version Check (runs before the PM interview) | COMMENT |
| LOW | .claude-plugin/skills/pm/SKILL.md | 50 | ### Step 1: Load MCP Tool | COMMENT |
| LOW | .claude-plugin/skills/pm/SKILL.md | 83 | ### Step 2: Start Interview | COMMENT |
| LOW | .claude-plugin/skills/pm/SKILL.md | 96 | ### Step 3: Loop | COMMENT |
| LOW | .claude-plugin/skills/pm/SKILL.md | 431 | ### Step 4: Copy to Clipboard | COMMENT |
| LOW | .claude-plugin/skills/pm/SKILL.md | 439 | ### Step 5: Show Result & Next Step | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 81 | ### Step 0: Welcome & Motivation (The Hook) | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 154 | ### Step 1: Environment Detection | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 239 | ### Step 2: MCP Profile Boundary | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 272 | ### Step 3: CLAUDE.md Integration (Optional) | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 359 | ### Step 4: Quick Verification | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 386 | ### Step 5: Success Summary | COMMENT |
| LOW | .claude-plugin/skills/setup/SKILL.md | 580 | ### Step 6: First Project Nudge | COMMENT |
| LOW | .claude-plugin/skills/qa/SKILL.md | 41 | ### Step 0: Determine execution mode | COMMENT |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 349 | ### Step 1: Welcome Banner | COMMENT |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 369 | ### Step 2: Persona Detection | COMMENT |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 400 | ### Step 3: Advanced Runtime Check | COMMENT |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 428 | ### Step 4: Quick Reference | COMMENT |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 448 | ### Step 4: First Action | COMMENT |
| LOW | .claude-plugin/skills/welcome/SKILL.md | 473 | ### Step 5: GitHub Star (Last Step) | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 23 | ### Step 1: Prerequisite Check | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 50 | ### Step 2: Locate the Seed | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 72 | ### Step 3: Parse the Seed | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 106 | ### Step 4: Detect Repository | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 153 | ### Step 5: Duplicate Check | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 180 | ### Step 6: Plan Issue Structure | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 206 | ### Step 7: Create GitHub Issues | COMMENT |
| LOW | .claude-plugin/skills/publish/SKILL.md | 326 | ### Step 8: Summary | COMMENT |
| LOW | .claude-plugin/skills/interview/SKILL.md | 51 | ### Step 0: Version Check (runs before interview) | COMMENT |
| LOW | skills/pm/SKILL.md | 12 | ### Step 0: Version Check (runs before the PM interview) | COMMENT |
| LOW | skills/pm/SKILL.md | 50 | ### Step 1: Load MCP Tool | COMMENT |
| LOW | skills/pm/SKILL.md | 83 | ### Step 2: Start Interview | COMMENT |
| LOW | skills/pm/SKILL.md | 96 | ### Step 3: Loop | COMMENT |
| LOW | skills/pm/SKILL.md | 431 | ### Step 4: Copy to Clipboard | COMMENT |
| LOW | skills/pm/SKILL.md | 439 | ### Step 5: Show Result & Next Step | COMMENT |
| LOW | skills/setup/SKILL.md | 81 | ### Step 0: Welcome & Motivation (The Hook) | COMMENT |
| LOW | skills/setup/SKILL.md | 154 | ### Step 1: Environment Detection | COMMENT |
| LOW | skills/setup/SKILL.md | 239 | ### Step 2: MCP Profile Boundary | COMMENT |
| LOW | skills/setup/SKILL.md | 272 | ### Step 3: CLAUDE.md Integration (Optional) | COMMENT |
| LOW | skills/setup/SKILL.md | 359 | ### Step 4: Quick Verification | COMMENT |
| LOW | skills/setup/SKILL.md | 386 | ### Step 5: Success Summary | COMMENT |
| LOW | skills/setup/SKILL.md | 580 | ### Step 6: First Project Nudge | COMMENT |
| LOW | skills/qa/SKILL.md | 41 | ### Step 0: Determine execution mode | COMMENT |
| LOW | skills/welcome/SKILL.md | 759 | ### Step 1: Welcome Banner | COMMENT |
| LOW | skills/welcome/SKILL.md | 779 | ### Step 2: Persona Detection | COMMENT |
| LOW | skills/welcome/SKILL.md | 810 | ### Step 3: Advanced Runtime Check | COMMENT |
| LOW | skills/welcome/SKILL.md | 838 | ### Step 4: Quick Reference | COMMENT |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | llms.txt | 88 | plugin/ # Plugin system (skills, agents, orchestration) | CODE |
| MEDIUM | CONTRIBUTING.md | 544 | orchestrator/ # Runtime abstraction and orchestration | CODE |
| MEDIUM⚡ | tests/unit/backends/test_capabilities.py | 143 | # Codex additionally exposes host-driven subagent orchestration guidance so | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_subagent_orchestration.py | 37 | # absent from the name-map → NONE. Its EXTERNAL orchestration is | COMMENT |
| MEDIUM⚡ | tests/unit/orchestrator/test_host_dispatch_runtime.py | 77 | # Landmine 3: joining the passive-bridge / leader-driven orchestration | COMMENT |
| MEDIUM | docs/architecture.md | 393 | +-- orchestrator/ # Runtime abstraction and orchestration | CODE |
| MEDIUM | docs/rfc/frugality-control-loop.md | 1 | # RFC — Token frugality as one control loop (attribution + advisory guardrails) | COMMENT |
| MEDIUM | docs/rfc/active-conductor.md | 1 | # RFC — Active conductor: judgment on the event-driven main session | COMMENT |
| MEDIUM | docs/rfc/active-conductor.md | 12 | #1599 made background-job observation event-driven: one read-only child owns the | COMMENT |
| MEDIUM | docs/guides/agent-process-lifecycle.md | 3 | Issue #518 tracks the move from ad-hoc agent/session orchestration toward a | CODE |
| MEDIUM | docs/history/agentos/release-readiness.md | 297 | | AgentOS smoke: long-running runtime and recovery | Start/status/result behavior, recovery/cancel/retry truthfulness, a | CODE |
| MEDIUM | docs/history/agentos/release-readiness.md | 983 | | #924 | Closed/folded | Done/folded | No direct release impact; covered by the canonical multi-agent deliberation RFC. | CODE |
| MEDIUM | docs/history/agentos/release-readiness.md | 988 | | #934 | Closed/folded | Done/folded | No direct release impact; plugin readiness is assessed through #939 tests and doc | CODE |
| MEDIUM | docs/history/agentos/issue-sequencing-graph.md | 217 | | #1258 | B | Regression guardrails landed in #1259; the broader perf policy remains needs-design/needs-approval. | Trea | CODE |
| MEDIUM | src/ouroboros/auto/domain_inference.py | 953 | # only bare noun continuation ("web app scaffolding CLI") re-heads. | COMMENT |
| MEDIUM | src/ouroboros/auto/domain_inference.py | 989 | # scaffolding CLI", "website generator CLI") mean the web phrase | COMMENT |
| MEDIUM | src/ouroboros/auto/domain_inference.py | 1022 | # "to scaffold and deploy a web app") are not product declarations | COMMENT |
| MEDIUM | src/ouroboros/auto/pipeline.py | 419 | # #1509: final-status surfaces must distinguish orchestration state | COMMENT |
| MEDIUM | src/ouroboros/providers/claude_code_adapter.py | 1270 | # *agentic CLI subprocess* and then turns every agent surface | COMMENT |
| MEDIUM | src/ouroboros/backends/capabilities.py | 634 | # it drives the agentic orchestrator runtime but does not back | COMMENT |
| MEDIUM | src/ouroboros/backends/capabilities.py | 649 | # --output-format streaming-json`` drives the agentic orchestrator | COMMENT |
| MEDIUM | src/ouroboros/backends/capabilities.py | 668 | # agentic orchestrator runtime or interview driving. SDK-free and | COMMENT |
| MEDIUM | src/ouroboros/backends/capabilities.py | 683 | # (interview/seed/qa/evaluate) but NOT the agentic orchestrator | COMMENT |
| MEDIUM | src/ouroboros/mcp/job_manager.py | 185 | # Parent execution projections historically stored the orchestration | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/definitions.py | 701 | # needs dependency injection should call ``get_ouroboros_tools(...)`` instead; | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/authoring_handlers.py | 2341 | # agentic explorer, and matches ``PMInterviewHandler._get_engine`` | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/attention_relay.py | 330 | # can absorb another orchestration session's progress. | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/attention_relay.py | 584 | # A linked execution stream may contain multiple orchestration | COMMENT |
| MEDIUM | src/ouroboros/mcp/tools/attention_relay.py | 644 | # orchestration session. Filter before building route/recovery streaks so | COMMENT |
| MEDIUM | src/ouroboros/mcp/server/adapter.py | 2265 | # Create tool registry for dependency injection | COMMENT |
| MEDIUM | src/ouroboros/cli/commands/mcp.py | 719 | # Create server with all tools pre-registered via dependency injection. | COMMENT |
| MEDIUM | src/ouroboros/observability/frugality_retrospective.py | 146 | # parent orchestration session. Retrospective authority follows the latter; | COMMENT |
| MEDIUM | src/ouroboros/persistence/picker_indexes.py | 138 | # used this aggregate as the orchestration session key. | COMMENT |
| MEDIUM | src/ouroboros/evaluation/detector.py | 769 | # lookup would let an LLM hallucination become a phantom Stage 1 failure | COMMENT |
| MEDIUM⚡ | src/ouroboros/bigbang/ambiguity.py | 144 | # Maximum token limit (None = no limit, rely on model's context window) | COMMENT |
| MEDIUM | src/ouroboros/bigbang/brownfield.py | 339 | # ── High-level orchestration ─────────────────────────────────────── | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/adapter.py | 818 | # Canonical backend → sub-agent-orchestration mapping. Single source of truth so | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/host_dispatch.py | 460 | # leader-driven orchestration sets; the host spawns, we wait. | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/pi_runtime.py | 139 | # runtime construction. execute_task() runs on the orchestration | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/frugality_proof.py | 104 | # Acceptance authority is scoped to the orchestration session (and its | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/codex_cli_runtime.py | 447 | # exposes only ``codex`` / ``codex-reply`` — its native multi-agent | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/codex_cli_runtime.py | 449 | # reuse/continue a Codex thread but cannot orchestrate Codex children; | COMMENT |
| MEDIUM | src/ouroboros/orchestrator/execution_authority.py | 1082 | # orchestration session. Query/replay selection must scope those | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/core/test_context.py | 112 | # Create a context with lots of data to exceed token limit (MAX_TOKENS = 100000) | COMMENT |
| MEDIUM | tests/unit/tui/test_screens.py | 109 | # Create a mock message-like object | COMMENT |
| MEDIUM⚡ | tests/unit/plugin/agents/test_registry.py | 456 | # Create a test agent file | COMMENT |
| MEDIUM | tests/unit/plugin/agents/test_registry.py | 496 | # Create an analysis agent | COMMENT |
| MEDIUM | tests/unit/plugin/agents/test_registry.py | 524 | # Create an empty file | COMMENT |
| MEDIUM⚡ | tests/unit/agents/test_loader.py | 327 | # Create a custom agent directory with a modified agent file | COMMENT |
| MEDIUM | tests/unit/mcp/tools/test_definitions.py | 3088 | # Create a running session via the repository | COMMENT |
| MEDIUM | tests/unit/cli/test_setup.py | 401 | "# This file is only for the Codex MCP/env registration block.", | CODE |
| MEDIUM | tests/unit/cli/test_setup.py | 475 | "# This file is only for the Codex MCP/env registration block.", | CODE |
| MEDIUM | tests/unit/cli/test_setup.py | 543 | "# This file is only for the Codex MCP/env registration block.", | CODE |
| MEDIUM | tests/unit/cli/test_setup.py | 1093 | "# This file is only for the Codex MCP/env registration block.", | CODE |
| MEDIUM | tests/unit/cli/test_run_qa.py | 1075 | # Create the existing file the reference points at — this is the | COMMENT |
| MEDIUM⚡ | tests/unit/persistence/test_brownfield_store.py | 90 | # Create a second store from the same engine | COMMENT |
| MEDIUM | tests/unit/persistence/test_event_store.py | 3045 | # Create the on-disk schema with a writable store first so the read-only | COMMENT |
| MEDIUM⚡ | tests/unit/bigbang/test_brownfield.py | 114 | # Create a real git repo with a GitHub origin | COMMENT |
| MEDIUM⚡ | tests/unit/bigbang/test_brownfield.py | 199 | # Create a repo with a remote whose name is not "origin". | COMMENT |
| MEDIUM⚡ | tests/unit/bigbang/test_brownfield.py | 510 | # Create a GitHub repo | COMMENT |
| MEDIUM⚡ | tests/unit/bigbang/test_brownfield.py | 992 | # Create a repo inside the skip directory | COMMENT |
| MEDIUM | tests/unit/bigbang/test_brownfield.py | 310 | # Create a repo inside node_modules (should be skipped) | COMMENT |
| MEDIUM | tests/unit/bigbang/test_brownfield.py | 323 | # Create a repo inside a hidden directory | COMMENT |
| MEDIUM⚡ | tests/unit/orchestrator/test_level_context.py | 713 | # Create a file outside the workspace | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_level_context.py | 751 | # Create a file outside the workspace | COMMENT |
| MEDIUM⚡ | tests/unit/orchestrator/test_n_version_tournament.py | 275 | # Create a brand-new file that is untracked (never staged/committed). | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_n_version_tournament.py | 381 | # Create a binary file in the base repo. | COMMENT |
| MEDIUM | tests/unit/orchestrator/test_n_version_tournament.py | 405 | # Create a new binary file (untracked). | COMMENT |
| MEDIUM⚡ | tests/integration/plugin/test_orchestration.py | 39 | # Create an async iterator that yields mock messages | COMMENT |
| MEDIUM | tests/e2e/test_session_persistence.py | 152 | # Create a sequence with enough messages to trigger progress events | COMMENT |
| MEDIUM | tests/e2e/test_full_workflow.py | 387 | # Create a long sequence of messages | COMMENT |
| MEDIUM | examples/task_manager/cli.py | 15 | # Create the Typer app | COMMENT |
| MEDIUM | src/ouroboros/cli/main.py | 81 | # Create the main Typer app | COMMENT |
| MEDIUM | src/ouroboros/cli/commands/setup.py | 434 | # This file is only for the Codex MCP/env registration block. | COMMENT |
| MEDIUM | src/ouroboros/cli/commands/setup.py | 448 | "# This file is only for the Codex MCP/env registration block.", | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/evolution/test_provider_usage.py | 158 | async def execute_task(self, **kwargs): # noqa: ANN201, ARG002 | CODE |
| LOW | tests/unit/orchestrator/test_effort_routed_event.py | 63 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_effort_routed_event.py | 98 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_effort_routed_event.py | 115 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_effort_routed_event.py | 129 | async def execute_task( | CODE |
| LOW | …it/orchestrator/test_synapse_after_turn_integration.py | 55 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | …it/orchestrator/test_synapse_after_turn_integration.py | 96 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | …it/orchestrator/test_synapse_after_turn_integration.py | 129 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | …it/orchestrator/test_synapse_after_turn_integration.py | 151 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | …it/orchestrator/test_synapse_after_turn_integration.py | 160 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | …it/orchestrator/test_synapse_after_turn_integration.py | 191 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_frugality_producers.py | 168 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_frugality_producers.py | 207 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 233 | 'python -c "from pathlib import Path; def helper():\n' | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 3416 | async def execute_task(self, **_kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 4730 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 6454 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 6578 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 6667 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 7366 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 7652 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 7747 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 7887 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 7962 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 8066 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 12058 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 12145 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 12274 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 12379 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 12445 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 12508 | async def execute_task(self, **_kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 13382 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 13490 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 13618 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 13730 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 13886 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14005 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14123 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14269 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14359 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14492 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14638 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 14745 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16084 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16180 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16281 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16359 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16516 | async def execute_task(self, **kwargs: Any): | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16594 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16712 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16766 | async def execute_task(self, **kwargs): # noqa: ANN201, ARG002 | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16815 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_parallel_executor.py | 16866 | async def execute_task( | CODE |
| LOW | …nit/orchestrator/test_parallel_executor_bounce_only.py | 1111 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_model_routing_wiring.py | 122 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_model_routing_wiring.py | 159 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_coordinator.py | 623 | async def execute_task( | CODE |
| LOW | tests/unit/orchestrator/test_route_compat.py | 641 | async def execute_task( | CODE |
| LOW | …orchestrator/test_parallel_executor_atomic_judgment.py | 27 | async def execute_task( | CODE |
| LOW | …orchestrator/test_parallel_executor_atomic_judgment.py | 138 | async def execute_task( | CODE |
| 56 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/harness/test_deliver_gate.py | 66 | CODE | |
| LOW | tests/unit/evolution/test_frugality.py | 29 | CODE | |
| LOW | tests/unit/bigbang/test_seed_generator.py | 99 | CODE | |
| LOW | tests/unit/orchestrator/test_route_escalation_live.py | 154 | CODE | |
| LOW | tests/unit/orchestrator/test_route_policy.py | 32 | CODE | |
| LOW | src/ouroboros/auto/adapters.py | 321 | CODE | |
| LOW | src/ouroboros/tui/events.py | 343 | CODE | |
| LOW | src/ouroboros/tui/events.py | 396 | CODE | |
| LOW | src/ouroboros/providers/copilot_cli_adapter.py | 149 | CODE | |
| LOW | src/ouroboros/providers/pi_llm_adapter.py | 38 | CODE | |
| LOW | src/ouroboros/providers/gjc_llm_adapter.py | 53 | CODE | |
| LOW | src/ouroboros/providers/opencode_adapter.py | 113 | CODE | |
| LOW | src/ouroboros/providers/goose_cli_adapter.py | 62 | CODE | |
| LOW | src/ouroboros/providers/factory.py | 377 | CODE | |
| LOW | src/ouroboros/providers/codex_cli_adapter.py | 148 | CODE | |
| LOW | src/ouroboros/providers/gemini_cli_adapter.py | 110 | CODE | |
| LOW | src/ouroboros/providers/kiro_adapter.py | 69 | CODE | |
| LOW | src/ouroboros/providers/claude_code_adapter.py | 185 | CODE | |
| LOW | src/ouroboros/providers/hermes_cli_adapter.py | 49 | CODE | |
| LOW | src/ouroboros/mcp/tools/fanout_composition.py | 41 | CODE | |
| LOW | src/ouroboros/mcp/tools/subagent.py | 1556 | CODE | |
| LOW | src/ouroboros/mcp/tools/subagent.py | 1968 | CODE | |
| LOW | src/ouroboros/mcp/tools/subagent.py | 2073 | CODE | |
| LOW | src/ouroboros/mcp/tools/definitions.py | 459 | CODE | |
| LOW | src/ouroboros/mcp/tools/question_advisory.py | 615 | CODE | |
| LOW | src/ouroboros/mcp/tools/background.py | 138 | CODE | |
| LOW | src/ouroboros/mcp/server/adapter.py | 1498 | CODE | |
| LOW | src/ouroboros/cli/commands/run.py | 590 | CODE | |
| LOW | src/ouroboros/cli/commands/run.py | 864 | CODE | |
| LOW | src/ouroboros/cli/commands/mcp.py | 1107 | CODE | |
| LOW | src/ouroboros/cli/commands/auto.py | 124 | CODE | |
| LOW | src/ouroboros/cli/commands/auto.py | 380 | CODE | |
| LOW | src/ouroboros/evolution/loop.py | 192 | CODE | |
| LOW | src/ouroboros/evolution/loop_support.py | 219 | CODE | |
| LOW | src/ouroboros/events/control.py | 60 | CODE | |
| LOW | src/ouroboros/events/io.py | 270 | CODE | |
| LOW | src/ouroboros/events/io.py | 332 | CODE | |
| LOW | src/ouroboros/events/io.py | 391 | CODE | |
| LOW | src/ouroboros/events/io.py | 452 | CODE | |
| LOW | src/ouroboros/events/lineage.py | 71 | CODE | |
| LOW | src/ouroboros/orchestrator/gjc_runtime.py | 79 | CODE | |
| LOW | src/ouroboros/orchestrator/hermes_runtime.py | 183 | CODE | |
| LOW | src/ouroboros/orchestrator/runner.py | 887 | CODE | |
| LOW | src/ouroboros/orchestrator/copilot_cli_runtime.py | 125 | CODE | |
| LOW | src/ouroboros/orchestrator/grok_cli_runtime.py | 104 | CODE | |
| LOW | src/ouroboros/orchestrator/events.py | 525 | CODE | |
| LOW | src/ouroboros/orchestrator/goose_runtime.py | 72 | CODE | |
| LOW | src/ouroboros/orchestrator/session.py | 812 | CODE | |
| LOW | src/ouroboros/orchestrator/opencode_runtime.py | 195 | CODE | |
| LOW | src/ouroboros/orchestrator/pi_runtime.py | 124 | CODE | |
| LOW | src/ouroboros/orchestrator/ac_runtime_handle_manager.py | 589 | CODE | |
| LOW | src/ouroboros/orchestrator/runtime_factory.py | 288 | CODE | |
| LOW | src/ouroboros/orchestrator/parallel_executor.py | 2625 | CODE | |
| LOW | src/ouroboros/orchestrator/parallel_executor.py | 3336 | CODE | |
| LOW | src/ouroboros/orchestrator/parallel_executor.py | 6485 | CODE | |
| LOW | src/ouroboros/orchestrator/parallel_executor.py | 7287 | CODE | |
| LOW | src/ouroboros/orchestrator/parallel_executor.py | 7861 | CODE | |
| LOW | src/ouroboros/orchestrator/codex_cli_runtime.py | 296 | CODE | |
| LOW | src/ouroboros/orchestrator/zcode_cli_runtime.py | 137 | CODE | |
| LOW | src/ouroboros/orchestrator/execution_authority.py | 2789 | CODE | |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_graceful_shutdown.py | 475 | # Set evaluator to track if it gets called (it shouldn't) | COMMENT |
| LOW⚡ | tests/integration/plugin/test_orchestration.py | 46 | # Set return_value to the async generator function | COMMENT |
| LOW | src/ouroboros/core/security.py | 446 | # Check if it's a prefixed key | COMMENT |
| LOW | src/ouroboros/core/security.py | 499 | # Check if field name indicates sensitivity | COMMENT |
| LOW | src/ouroboros/core/security.py | 503 | # Check if value looks sensitive | COMMENT |
| LOW | src/ouroboros/core/errors.py | 265 | # Check if field name suggests sensitive data | COMMENT |
| LOW | src/ouroboros/core/errors.py | 271 | # Check if value looks like a secret (starts with common prefixes) | COMMENT |
| LOW | src/ouroboros/config/loader.py | 283 | # Set permissions to owner read/write only (0o600) | COMMENT |
| LOW | src/ouroboros/config/loader.py | 330 | # Check if files exist | COMMENT |
| LOW | src/ouroboros/tui/components/progress.py | 502 | # Check if milestone already exists | COMMENT |
| LOW | src/ouroboros/providers/claude_code_adapter.py | 1025 | # Check if error is retryable | COMMENT |
| LOW | src/ouroboros/plugin/agents/pool.py | 516 | # Return result | COMMENT |
| LOW | src/ouroboros/plugin/skills/executor.py | 348 | # Check if there's an 'instructions' section | COMMENT |
| LOW | src/ouroboros/mcp/tools/job_handlers.py | 710 | # Check if already in a terminal state | COMMENT |
| LOW | src/ouroboros/mcp/tools/qa.py | 260 | # Check if this bullet is a dimension (e.g. "accuracy: 0.9") | COMMENT |
| LOW | src/ouroboros/mcp/server/security.py | 415 | # Check if user has required permissions | COMMENT |
| LOW | src/ouroboros/mcp/server/security.py | 425 | # Check if user has an allowed role (if roles are specified) | COMMENT |
| LOW | src/ouroboros/cli/commands/pm.py | 525 | # Check if this question was classified as skippable — | COMMENT |
| LOW | src/ouroboros/cli/commands/setup.py | 3102 | # Set runtime to Hermes. Do not rewrite llm.backend until Hermes also | COMMENT |
| LOW | src/ouroboros/observability/logging.py | 217 | # Check if field name indicates sensitivity | COMMENT |
| LOW | src/ouroboros/observability/logging.py | 222 | # Check if value looks sensitive | COMMENT |
| LOW | src/ouroboros/resilience/stagnation.py | 378 | # Check if all deltas are below epsilon | COMMENT |
| LOW | src/ouroboros/resilience/stagnation.py | 426 | # Check if all improvements are below threshold | COMMENT |
| LOW | src/ouroboros/persistence/checkpoint.py | 681 | # Check if error is due to no checkpoint (normal for first run) | COMMENT |
| LOW | src/ouroboros/persistence/brownfield.py | 259 | # Check if repo already exists | COMMENT |
| LOW | src/ouroboros/persistence/brownfield.py | 336 | # Check if already exists — preserve metadata | COMMENT |
| LOW | src/ouroboros/evaluation/pipeline.py | 178 | # Check if Stage 2 failed on compliance — but allow override | COMMENT |
| LOW | src/ouroboros/orchestrator/runner.py | 10857 | # Check if session can be resumed | COMMENT |
| LOW | src/ouroboros/orchestrator/mcp_config.py | 169 | # Check if world-readable | COMMENT |
| LOW | src/ouroboros/orchestrator/mcp_config.py | 175 | # Check if group-readable (less severe) | COMMENT |
| LOW | src/ouroboros/orchestrator/leaf_dispatcher.py | 891 | # Check if stall was detected (CancelScope ate the Cancelled) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/mcp/tools/test_pm_handler_snapshot.py | 105 | # Step 1: start without repos to create the session + pm_meta. | COMMENT |
| LOW | tests/unit/mcp/tools/test_pm_handler_snapshot.py | 116 | # Step 2: select repos — persisted + forwarded paths must be snapshots. | COMMENT |
| LOW⚡ | tests/unit/cli/test_init_pm_seed_detection.py | 531 | # Step 1: Detect | COMMENT |
| LOW⚡ | tests/unit/cli/test_init_pm_seed_detection.py | 536 | # Step 2: Select (single seed → confirm) | COMMENT |
| LOW⚡ | tests/unit/cli/test_init_pm_seed_detection.py | 541 | # Step 3: Load as context | COMMENT |
| LOW⚡ | tests/unit/bigbang/test_brownfield.py | 1334 | # Step 2: Simulate user selecting repo #2 | COMMENT |
| LOW⚡ | tests/unit/bigbang/test_brownfield.py | 1343 | # Step 3: Set default (toggle: /b is not default, so it gets added) | COMMENT |
| LOW | tests/unit/bigbang/test_brownfield.py | 1316 | # Step 1: Scan returns repos | COMMENT |
| LOW⚡ | src/ouroboros/mcp/tools/pm_handler.py | 1185 | # Step 2: select_repos (AC 4) | COMMENT |
| LOW⚡ | src/ouroboros/cli/commands/plugin.py | 269 | # Step 1: stage copy. Pass symlinks=True so symlinks are copied as | COMMENT |
| LOW⚡ | src/ouroboros/cli/commands/plugin.py | 286 | # Step 2: move existing dest aside. | COMMENT |
| LOW⚡ | src/ouroboros/cli/commands/plugin.py | 290 | # Step 3: promote staging into place. | COMMENT |
| LOW⚡ | src/ouroboros/cli/commands/plugin.py | 303 | # Step 4: cleanup backup. Failure here is non-fatal — the new install | COMMENT |
| LOW | src/ouroboros/cli/commands/init.py | 688 | # Step 1: Calculate ambiguity score | COMMENT |
| LOW | src/ouroboros/cli/commands/init.py | 778 | # Step 2: Generate Seed | COMMENT |
| LOW | src/ouroboros/cli/commands/init.py | 800 | # Step 3: Save Seed | COMMENT |
| LOW | src/ouroboros/evolution/loop.py | 684 | # Step 1: Replay events to reconstruct state | COMMENT |
| LOW | src/ouroboros/evolution/loop.py | 986 | # Step 3: Emit generation completed event (with seed_json). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/ouroboros/core/seed.py | 328 | summary: Auto-generated codebase summary from exploration. | STRING |
| HIGH | src/ouroboros/core/seed.py | 333 | summary: str = Field(default="", description="Auto-generated codebase summary") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backlog.md | 90 | | C9 | `core/security.py:418-450` | `validate_api_key_format` accepts any 10-char alphanumeric — `"placeholder"` validat | CODE |
| LOW⚡ | tests/unit/auto/test_safe_defaults_prompt_non_goals.py | 35 | return SeedDraftLedger.from_goal("placeholder") | CODE |
| LOW | tests/unit/auto/test_ledger_grading_answerer.py | 421 | ac=(AcceptanceCriterionSpec(description="placeholder", verify_command="true"),), | CODE |
| LOW | tests/unit/auto/test_ledger_grading_answerer.py | 450 | ac=(AcceptanceCriterionSpec(description="placeholder", verify_command="true"),), | CODE |
| LOW | tests/unit/auto/test_ledger_grading_answerer.py | 522 | ac=(AcceptanceCriterionSpec(description="placeholder", verify_command="true"),), | CODE |
| LOW⚡ | tests/unit/observability/test_logging.py | 1288 | log.info("user.action", name="John Doe", email="john@example.com") | CODE |
| LOW⚡ | tests/unit/observability/test_logging.py | 1292 | assert data["name"] == "John Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/orchestrator/test_effort_routed_event.py | 125 | CODE | |
| MEDIUM | tests/unit/orchestrator/test_runner_cancellation.py | 846 | CODE | |
| MEDIUM | tests/unit/orchestrator/test_process_local_authority.py | 2347 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_llm_response_fence_robustness.py | 54 | return f"```json\n{payload}\n```\nLet me know if you need anything else." | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/examples/mcp-config.yaml | 5 | # Usage: | COMMENT |