All in one plugin for Hermes Agent ⚚ the coding intelligence, a long-term memory system and model optimized workflow packages
This report summarizes scanner evidence for rlaope/oh-my-hermes, a Python project with 3,290 GitHub stars. SynthScan examined 979,533 lines of code across 2748 source files, recording 24146 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 24.4 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 20660 finding(s).
Are imports declared and package/API names verified? 3019 finding(s).
Are wrappers, guards, and repeated structures necessary? 19822 finding(s).
Which changes need focused human review? 24146 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 24146 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/web_qa_hermes_agent_browser_collector.py | 322 | def _verify_receipt_and_captures(plan: dict[str, object], receipt: object, output_dir: Path) -> None: | CODE |
| LOW | tools/web_qa_hermes_agent_browser_collector.py | 352 | def _absolute_nonsymlink_path(path: Path) -> Path: | CODE |
| LOW | tools/web_qa_hermes_agent_browser_collector.py | 362 | def _create_private_directory(path: Path) -> None: | CODE |
| LOW | tools/package_manager/metadata.py | 54 | def prepare_distribution_output(output: Path) -> Path: | CODE |
| LOW | tests/test_menubar_app.py | 34 | def test_install_materializes_exact_icon_bytes_and_passes_icon_path(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 89 | def test_valid_launch_agent_repairs_a_missing_managed_copy(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 117 | def test_operator_owned_directory_without_launch_agent_is_not_managed(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 131 | def test_symlinked_managed_paths_are_not_trusted(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 164 | def test_broken_launch_agent_symlink_is_not_managed(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 177 | def test_global_launch_agent_must_match_target_homes(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 208 | def test_launch_agent_path_resolves_node_shim_and_deduplicates_real_bin(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 230 | def test_setup_menubar_app_skips_unsupported_platform(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 242 | def test_setup_menubar_app_darwin_dry_run_reports_install_plan(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 263 | def test_menubar_install_cli_dry_run_uses_contract_payload(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 291 | def test_native_helper_requests_json_status_payload(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 307 | def test_native_helper_refreshes_off_the_main_thread_and_updates_the_open_menu(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 352 | def test_native_helper_keeps_sessions_table_header_visible(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 359 | def test_native_helper_bounds_table_values_without_truncating_tooltips(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 412 | def test_launch_agent_still_passes_the_active_interval(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 435 | def test_idle_interval_steps_one_rung_per_unchanged_reading(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 450 | def test_idle_ceiling_never_polls_faster_than_the_operator_asked(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 462 | def test_native_helper_backoff_ladder_is_substituted_not_retyped(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 485 | def test_native_helper_resets_the_ladder_when_the_menu_changes(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 506 | def test_native_helper_stats_watch_paths_without_reading_them(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 521 | def test_native_helper_never_overlaps_status_processes(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 533 | def test_watch_wake_is_floored_at_the_active_interval(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 554 | def test_scheduled_read_is_never_blocked_by_a_still_watch_list(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 568 | def test_native_helper_tick_routes_every_read_through_the_floor(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 594 | def test_native_helper_read_decision_matches_the_python_mirror(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 644 | def test_native_helper_backoff_matches_the_python_mirror(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 678 | def test_native_helper_swift_source_compiles_on_darwin(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 698 | def test_menubar_start_defaults_to_human_readable_output(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 727 | def test_menubar_stop_failure_is_readable_without_json(self) -> None: | CODE |
| LOW | tests/test_menubar_app.py | 750 | def test_custom_path_uninstall_does_not_touch_user_launch_agent(self) -> None: | CODE |
| LOW | tests/test_paired_run_budgets.py | 28 | def test_budget_counts_only_attempted_rows_across_full_matrix(self) -> None: | CODE |
| LOW | tests/test_paired_run_budgets.py | 99 | def test_budget_rejects_attempts_over_cap_in_builder_and_parser(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 128 | def test_clean_source_checkout_reports_its_commit_and_clean_state(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 148 | def test_dirty_checkout_reports_dirty_without_naming_changed_files(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 168 | def test_two_same_version_checkouts_at_different_commits_differ(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 189 | def test_detached_head_still_reports_the_revision(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 203 | def test_editable_install_of_the_checkout_is_labelled_editable(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 216 | def test_an_editable_install_of_another_checkout_does_not_relabel_this_one(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 227 | def test_identity_follows_the_package_source_not_the_caller_directory(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 254 | def test_installed_package_without_a_stamp_is_unavailable(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 272 | def test_installed_package_with_a_stamp_reports_the_stamped_revision(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 298 | def test_a_malformed_stamp_is_reported_rather_than_treated_as_absent(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 317 | def test_a_staged_wheel_beside_its_dist_info_is_an_installed_package(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 329 | def test_a_frozen_standalone_artifact_reports_its_own_install_kind(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 341 | def test_a_source_archive_without_git_metadata_is_unavailable(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 355 | def test_an_install_nested_in_an_unrelated_repository_borrows_no_revision(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 379 | def test_missing_git_binary_falls_back_to_refs_with_unknown_dirty_state(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 398 | def test_missing_git_binary_reads_a_packed_ref(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 414 | def test_missing_git_binary_reads_a_detached_head_directly(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 423 | def test_missing_git_binary_and_unreadable_refs_stay_unavailable(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 437 | def test_a_git_timeout_never_becomes_a_revision(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 456 | def test_a_confirmed_work_tree_with_an_unreadable_head_stays_unavailable(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 492 | def test_a_bare_command_name_resolves_through_the_path_lookup(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 502 | def test_a_bare_name_never_resolves_to_a_directory_in_the_working_dir(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 520 | def test_an_unresolvable_command_is_reported_as_unresolved(self) -> None: | CODE |
| LOW | tests/test_build_identity.py | 529 | def test_the_identity_carries_the_command_that_ran(self) -> None: | CODE |
| 19207 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | omh/__init__.py | 1 | CODE | |
| LOW | omh/__init__.py | 12 | CODE | |
| LOW | packaging/npm/bin/python_bridge.py | 9 | CODE | |
| LOW | tools/web_qa_hermes_agent_browser_collector.py | 8 | CODE | |
| LOW | tools/package_manager/render_homebrew.py | 9 | CODE | |
| LOW | tools/package_manager/metadata.py | 9 | CODE | |
| LOW | tools/package_manager/bump_version.py | 9 | CODE | |
| LOW | tools/package_manager/stage_npm.py | 9 | CODE | |
| LOW | tools/qa/seven_issues_release.py | 9 | CODE | |
| LOW | tools/qa/seven_issues_memory.py | 16 | CODE | |
| LOW | tools/qa/seven_issues_lifecycle.py | 9 | CODE | |
| LOW | tools/qa/orchestration_smoke_paired.py | 3 | CODE | |
| LOW | tools/qa/_projection_fixture_data.py | 3 | CODE | |
| LOW | tools/qa/_release_workflow_fixture.py | 2 | CODE | |
| LOW | tools/qa/seven_issues_observer.py | 10 | CODE | |
| LOW | tools/qa/orchestration_smoke_quality.py | 3 | CODE | |
| LOW | tools/qa/issue_1509_project_identity.py | 3 | CODE | |
| LOW | tools/qa/projection_contract_fixture.py | 4 | CODE | |
| LOW | tools/qa/seven_issues_loop.py | 9 | CODE | |
| LOW | tools/qa/_projection_fixture_privacy.py | 3 | CODE | |
| LOW | tools/qa/seven_issues_risk.py | 10 | CODE | |
| LOW | tools/qa/seven_issues_observer_native.py | 9 | CODE | |
| LOW | tools/qa/orchestration_contract_smoke.py | 4 | CODE | |
| LOW | tools/benchmarks/tracker_ingress.py | 4 | CODE | |
| LOW | tools/benchmarks/browser_trace_replay.py | 1 | CODE | |
| LOW | tools/benchmarks/browser_adapter.py | 8 | CODE | |
| LOW | tools/benchmarks/web_qa_observation_import.py | 16 | CODE | |
| LOW | tools/benchmarks/native_omh_egress_proof.py | 7 | CODE | |
| LOW | tools/benchmarks/working_tree_fingerprint.py | 4 | CODE | |
| LOW | tools/benchmarks/browser_skill_promotion.py | 9 | CODE | |
| LOW | …chmarks/web_qa_hermes_agent_browser_localhost_proof.py | 7 | CODE | |
| LOW | tools/benchmarks/egress_attempts.py | 9 | CODE | |
| LOW | tools/test_sharding/aggregate.py | 10 | CODE | |
| LOW | tools/test_sharding/plan.py | 8 | CODE | |
| LOW | tools/test_sharding/run.py | 15 | CODE | |
| LOW | tools/test_sharding/static_inventory.py | 3 | CODE | |
| LOW | tools/test_sharding/__init__.py | 3 | CODE | |
| LOW | tests/test_menubar_app.py | 1 | CODE | |
| LOW | tests/test_paired_run_budgets.py | 1 | CODE | |
| LOW | tests/_platform_golden.py | 3 | CODE | |
| LOW | tests/test_build_identity.py | 10 | CODE | |
| LOW | tests/test_show_shape.py | 1 | CODE | |
| LOW | tests/test_plugin_bundle_catalog_scan.py | 24 | CODE | |
| LOW | tests/test_subagent_graph_hud_bounds.py | 1 | CODE | |
| LOW | tests/test_github_issue_intake.py | 9 | CODE | |
| LOW | tests/test_paired_run_local_failures.py | 3 | CODE | |
| LOW | tests/test_quality_evidence_cli.py | 1 | CODE | |
| LOW | tests/test_secure_regular_file_windows.py | 1 | CODE | |
| LOW | tests/test_engagement_nudges.py | 19 | CODE | |
| LOW | tests/test_fanout_environment_preview.py | 1 | CODE | |
| LOW | tests/_platform_support.py | 21 | CODE | |
| LOW | tests/_platform_support.py | 28 | CODE | |
| LOW | tests/_platform_support.py | 35 | CODE | |
| LOW | tests/test_doctor_advisory.py | 1 | CODE | |
| LOW | tests/test_host_adapters.py | 2 | CODE | |
| LOW | tests/test_commit_pr_authoring.py | 1 | CODE | |
| LOW | tests/test_fanout_final_review_cli.py | 3 | CODE | |
| LOW | tests/test_mobile_release.py | 1 | CODE | |
| LOW | tests/test_adapter_quality.py | 1 | CODE | |
| LOW | tests/test_hud_fanout_cache.py | 12 | CODE | |
| 2819 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/benchmarks/browser_skill_promotion.py | 100 | action_js = "const el=document.getElementById(" + json.dumps(identifier) + ");if(!el)throw new Error('snapshot_t | CODE |
| HIGH | tools/test_sharding/run.py | 239 | os.dup2(null, 0) | CODE |
| HIGH | tools/test_sharding/run.py | 240 | os.close(null) | CODE |
| HIGH | tests/test_menubar_app.py | 329 | self.assertIn("if lastPayload != nil && consecutiveFailures < 3 {", source) | CODE |
| HIGH | tests/test_menubar_app.py | 574 | self.assertIn("return watchStampMoved && secondsSinceLastRead >= activeInterval", source) | CODE |
| HIGH⚡ | tests/test_hud_conversation_scope.py | 295 | if (tag.name === 'ActivityRow') lines.push(text); | CODE |
| HIGH⚡ | tests/test_hud_conversation_scope.py | 298 | return children.flat(Infinity).filter(x => x != null).join(''); | CODE |
| HIGH⚡ | tests/test_hud_conversation_scope.py | 300 | register({Box:'box', Text:'text', h, defineWidgetApp: app => {apps.push(app); return app}, openWidget:()=>{}, updateWidg | CODE |
| HIGH⚡ | tests/test_hud_conversation_scope.py | 309 | results.push({cols, scopes, lines:[...lines]}); | CODE |
| HIGH | tests/test_hud_conversation_scope.py | 344 | const h = (tag, props, ...children) => typeof tag === 'function' ? tag(props) : children.flat(Infinity).filter(x => x != | CODE |
| HIGH | tests/test_hud_conversation_scope.py | 345 | register({Box:'box', Text:'text', h, defineWidgetApp: app => {apps.push(app); return app}, openWidget:()=>{}, updateWidg | CODE |
| HIGH | tests/test_hud_conversation_scope.py | 406 | register({Box: 'box', Text: 'text', h: () => null, defineWidgetApp: x => x, | CODE |
| HIGH | tests/test_hud_conversation_scope.py | 407 | openWidget: () => null, updateWidget: () => null}); | CODE |
| HIGH | tests/test_hud_conversation_scope.py | 428 | const h = (tag, props, ...children) => typeof tag === 'function' ? tag(props) : children.flat(Infinity).filter(x => x != | CODE |
| HIGH | tests/test_hud_conversation_scope.py | 429 | register({Box:'box', Text:'text', h, defineWidgetApp: app => {apps.push(app); return app}, openWidget:()=>{}, updateWidg | CODE |
| HIGH⚡ | tests/test_fanout_dispatcher_git_fence.py | 446 | self._unit(confinement, worktree, "echo changed >> seed && echo new > created") | CODE |
| HIGH | tests/test_fanout_dispatcher_git_fence.py | 487 | self._unit(confinement, worktree, "echo changed >> seed && echo new > created") | CODE |
| HIGH⚡ | tests/test_remote_wait_nudge.py | 868 | self.assertEqual(remote_work_command("cd repo && git push"), "git push") | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 53 | if (node === null || node === undefined || node === false) return [] | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 56 | if (typeof node === 'object') return parts(node.children, node.props && node.props.color !== undefined ? node.props. | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 59 | const frame = app.render({ cols: Number(colsArg), rows: Number(rowsArg || 40), state, t: theme }) | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 60 | const children = frame && Array.isArray(frame.children) ? frame.children : [] | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 93 | if (node === null || node === undefined || node === false) return [] | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 96 | if (typeof node === 'object') return parts(node.children, node.props && node.props.color !== undefined ? node.props. | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 103 | if (node === null || node === undefined || node === false) return [] | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 108 | const frame = app.render({ cols: Number(colsArg), rows: Number(rowsArg || 40), state, t: theme }) | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 1756 | globalThis.setTimeout = (fn, ms) => { delays.push(ms); pending = fn; return { unref() {} } } | CODE |
| HIGH | tests/test_tui_widget_pack.py | 40 | defineWidgetApp: app => { apps.push(app); return app }, | CODE |
| HIGH | tests/test_tui_widget_pack.py | 80 | defineWidgetApp: app => { apps.push(app); return app }, | CODE |
| HIGH | tests/test_tui_widget_pack.py | 1768 | for (let i = 0; i < 400 && paints === 0; i += 1) await new Promise(resolve => realSetTimeout(resolve, 25)) | CODE |
| HIGH | tests/test_tui_widget_pack.py | 1776 | painted.push(paints > before) | CODE |
| HIGH⚡ | tests/test_tui_widget_pack.py | 627 | self.assertIn("const state = stuckState || dispatchState", widget) | STRING |
| HIGH⚡ | tests/test_tui_widget_pack.py | 647 | self.assertIn("if (Overlay && Dialog) {", widget) | STRING |
| HIGH | tests/test_tui_widget_pack.py | 459 | "if (!state.payload || state.payload.error || state.payload.privacy !== 'metadata_only') return null" | STRING |
| HIGH | tests/test_tui_widget_pack.py | 576 | "payload.activity && payload.activity.live && payload.activity.post_tool_call_observed", | STRING |
| HIGH | tests/test_tui_widget_pack.py | 587 | self.assertIn("const answerable = !!(payload.activity && payload.activity.post_tool_call_observed)", widget) | STRING |
| HIGH | tests/test_tui_widget_pack.py | 589 | "const live = answerable ? !!(payload.activity && payload.activity.live) : true", | STRING |
| HIGH | tests/test_tui_widget_pack.py | 726 | self.assertIn("if (!running && !blocked && done) return `${done} done`", widget) | STRING |
| HIGH | tests/test_tui_widget_pack.py | 745 | self.assertIn("(!phase && depthOf(item) > 0)", widget) | STRING |
| HIGH | tests/test_tui_widget_pack.py | 768 | "if (structural === lastStructural && Date.now() - lastPaintAt < METRICS_REPAINT_MS) return", | STRING |
| HIGH | tests/test_tui_widget_pack.py | 925 | self.assertIn("columns >= 100 && metrics.tokens", widget) | STRING |
| HIGH | tests/test_tui_widget_pack.py | 953 | self.assertIn("hasActive && live ? h(PlanPulse, { t }) : null", widget) | STRING |
| HIGH | tests/test_tui_widget_pack.py | 955 | "const live = answerable ? !!(payload.activity && payload.activity.live) : true", | STRING |
| HIGH | tests/test_tui_widget_pack.py | 975 | self.assertIn("payload.yolo && payload.yolo.status === 'observed'", widget) | STRING |
| HIGH | tests/test_fanout_failure_diagnostics.py | 354 | b'{broken}\n', b'{"type":"item.completed","item":{"type":"agent_message","text":null}}\n'): | CODE |
| HIGH⚡ | tests/test_model_contract_coverage.py | 524 | '{"models":null}', | CODE |
| HIGH⚡ | tests/test_model_contract_coverage.py | 525 | '{"available_models":null}', | CODE |
| HIGH⚡ | tests/test_model_contract_coverage.py | 526 | '{"model_discovery":null}', | CODE |
| HIGH⚡ | tests/test_model_contract_coverage.py | 531 | '{"models":[{"model_id":"gpt-6-astra","provider":null}]}', | CODE |
| HIGH⚡ | tests/test_model_contract_coverage.py | 532 | '{"models":[{"model_id":"gpt-6-astra","source":null}]}', | CODE |
| HIGH⚡ | tests/test_model_contract_coverage.py | 533 | '{"models":[{"model_id":"gpt-6-astra","status":null}]}', | CODE |
| HIGH | tests/test_delegate_route_tool.py | 970 | # null, ~, and ordinary tokens are PLAIN scalars, which YAML | COMMENT |
| HIGH | tests/test_runtime_paths.py | 182 | # Refusals, never a substitute store: blank and null; an inline | COMMENT |
| HIGH⚡ | tests/test_browser_adapter_boundaries.py | 208 | mutations.extend([json.dumps(state), "{", "[]", '{"schema_version":"browser_lease_store/v1","leases":null}']) | CODE |
| HIGH⚡ | tests/test_tui_model_widget.py | 53 | const held = { state: null, closed: false } | CODE |
| HIGH⚡ | tests/test_tui_model_widget.py | 58 | defineWidgetApp: app => { apps.push(app); return app }, | CODE |
| HIGH⚡ | tests/test_tui_model_widget.py | 60 | updateWidget: (app, fn) => { if (app && app.id === 'omh-model' && held.state) held.state = fn(held.state) }, | CODE |
| HIGH⚡ | tests/test_tui_model_widget.py | 67 | for (let i = 0; i < 800 && phases.includes(held.state.phase); i += 1) await new Promise(resolve => setTimeout(resolve, | CODE |
| HIGH⚡ | tests/test_tui_model_widget.py | 70 | const render = () => JSON.stringify(app.render({ cols: 120, rows: Number(rowsArg || 40), state: held.state, t: theme })) | CODE |
| HIGH⚡ | tests/test_tui_model_widget.py | 76 | if (next === null) { held.closed = true; break } | CODE |
| 74 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/qa/seven_issues_memory.py | 14 | # ────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 173 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 175 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 309 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 311 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 397 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 399 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 628 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 630 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 697 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 699 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 782 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 784 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 862 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_decision_gate.py | 864 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_test_resource_cleanup_policy.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_test_resource_cleanup_policy.py | 102 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_test_resource_cleanup_policy.py | 213 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_test_resource_cleanup_policy.py | 215 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_handoff_safety_contract_enforcement.py | 942 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_handoff_safety_contract_enforcement.py | 944 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 131 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 133 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 422 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 424 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 720 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 722 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 1482 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 1484 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 1806 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 1808 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 2010 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 2012 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 2170 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_handoff_safety_contract_enforcement.py | 2172 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 200 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/labels.yml | 246 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/omh/skins/omh.yaml | 106 | [#0B7E8A] ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝[/] | CODE |
| MEDIUM | src/omh/skins/omh-crimson.yaml | 110 | [#A32B18] ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝[/] | CODE |
| MEDIUM | src/omh/skins/omh-amber.yaml | 105 | [#A66C00] ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝[/] | CODE |
| MEDIUM | src/omh/skins/omh-mono.yaml | 108 | [#6E6E6E] ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝[/] | CODE |
| MEDIUM | src/workflows/runtime_learning_recap.py | 164 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/runtime_learning_recap.py | 781 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/runtime_learning_recap.py | 1107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/native_capability_quality_gate.py | 301 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/native_capability_quality_gate.py | 303 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/native_capability_quality_gate.py | 351 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/native_capability_quality_gate.py | 353 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/native_capability_quality_gate.py | 402 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/workflows/native_capability_quality_gate.py | 404 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/workflows/native_capability_quality_gate.py | 254 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/workflows/native_capability_quality_gate.py | 256 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/workflows/native_capability_quality_gate.py | 496 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/workflows/native_capability_quality_gate.py | 498 | # --------------------------------------------------------------------------- | COMMENT |
| 143 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/npm/bin/python_bridge.py | 129 | CODE | |
| LOW | packaging/npm/bin/python_bridge.py | 163 | CODE | |
| LOW | tools/package_manager/metadata.py | 201 | CODE | |
| LOW | tools/package_manager/stage_npm.py | 60 | CODE | |
| LOW | tools/qa/seven_issues_lifecycle.py | 97 | CODE | |
| LOW | tools/qa/_release_workflow_fixture.py | 53 | CODE | |
| LOW | tools/qa/seven_issues_observer_native.py | 29 | CODE | |
| LOW | tools/benchmarks/browser_skill_promotion.py | 128 | CODE | |
| LOW | tools/benchmarks/egress_attempts.py | 34 | CODE | |
| LOW | tools/test_sharding/static_inventory.py | 102 | CODE | |
| LOW | tests/test_secure_regular_file_windows.py | 20 | CODE | |
| LOW | tests/test_secure_regular_file_windows.py | 61 | CODE | |
| LOW | tests/test_host_adapters.py | 41 | CODE | |
| LOW | tests/test_host_adapters.py | 68 | CODE | |
| LOW | tests/test_host_adapters.py | 122 | CODE | |
| LOW | tests/test_host_adapters.py | 171 | CODE | |
| LOW | tests/test_host_adapters.py | 208 | CODE | |
| LOW | tests/test_category_maestro.py | 501 | CODE | |
| LOW | tests/test_distribution_packages.py | 183 | CODE | |
| LOW | tests/test_model_routing.py | 503 | CODE | |
| LOW | tests/test_reusable_behavior_map.py | 328 | CODE | |
| LOW | tests/test_reusable_behavior_map.py | 340 | CODE | |
| LOW | tests/test_reusable_behavior_map.py | 348 | CODE | |
| LOW | tests/test_reusable_behavior_map.py | 368 | CODE | |
| LOW | tests/test_memory_instruction_shaped_admission.py | 201 | CODE | |
| LOW | tests/test_workflow_composition.py | 143 | CODE | |
| LOW | tests/test_lifecycle_growth_configuration_edges.py | 43 | CODE | |
| LOW | tests/test_omh_resume_door.py | 470 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 82 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 179 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 311 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 377 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 414 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 444 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 478 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 564 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 639 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 795 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 858 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 899 | CODE | |
| LOW | tests/test_domain_intelligence_transactions.py | 971 | CODE | |
| LOW | tests/test_runtime_reader_filesystem_faults.py | 239 | CODE | |
| LOW | tests/domain_project_context_lock_mixin.py | 21 | CODE | |
| LOW | tests/domain_project_context_lock_mixin.py | 64 | CODE | |
| LOW | tests/domain_project_context_lock_mixin.py | 89 | CODE | |
| LOW | tests/test_cross_harness_benchmark.py | 100 | CODE | |
| LOW | tests/test_cross_harness_benchmark.py | 114 | CODE | |
| LOW | tests/test_five_issue_fixture_transport.py | 35 | CODE | |
| LOW | tests/test_memory_lifecycle.py | 73 | CODE | |
| LOW | tests/test_skill_registration_ambiguity.py | 67 | CODE | |
| LOW | tests/test_fanout_diagnostic_views.py | 170 | CODE | |
| LOW | tests/test_recurring_intents.py | 570 | CODE | |
| LOW | tests/test_model_recommendations.py | 61 | CODE | |
| LOW | tests/test_subset_skill_retirement.py | 202 | CODE | |
| LOW | tests/test_subset_skill_retirement.py | 219 | CODE | |
| LOW | tests/test_loop_driver_boundaries.py | 125 | CODE | |
| LOW | tests/test_domain_handoff_projection.py | 255 | CODE | |
| LOW | tests/test_domain_handoff_projection.py | 278 | CODE | |
| LOW | tests/test_remote_wait_nudge.py | 606 | CODE | |
| LOW | tests/test_skill_record.py | 61 | CODE | |
| 580 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 341 | # error several steps later. | COMMENT |
| LOW | install.sh | 401 | fi | COMMENT |
| LOW | pyproject.toml | 121 | # Initial static-analysis baseline (issue #638). Scoped to Pyflakes (F) — | COMMENT |
| LOW | pyproject.toml | 141 | # issue #652. | COMMENT |
| LOW | tools/qa/seven_issues_memory.py | 1 | #!/usr/bin/env -S uv run --script | COMMENT |
| LOW | tests/test_fanout_signal_safety.py | 341 | ) | COMMENT |
| LOW | tests/test_model_recommendations.py | 241 | # 2026-09-11): Fable 5, GLM 5.2 and its Ultrafast tier, DeepSeek | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 421 | check=True, | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 681 | self.assertIn("width: '100%'", widget) | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 721 | self.assertIn("if (!active) return 'ready'", widget) | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 781 | ): | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 801 | # whatever word the host wrote, never a vocabulary this surface | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 821 | self.assertNotIn(".replace(/\\.0$/, '')", widget) | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 921 | self.assertIn("if (!Number.isFinite(value) || value < 0) return ''", widget) | COMMENT |
| LOW | tests/test_tui_widget_pack.py | 961 | # status line onto the dock-top frame rule — the transcript's | COMMENT |
| LOW | tests/test_route_hint_trigger_packs.py | 321 | # `llm_hooks.pre_llm_call` carries one -- so a defaulted `source` here | COMMENT |
| LOW | tests/test_routing_language_policy.py | 41 | routing_language_support, | COMMENT |
| LOW | tests/test_routing_language_policy.py | 121 | "failure-signal-audit": 10, | COMMENT |
| LOW | tests/test_person_turn_precedence.py | 61 | COMMENT | |
| LOW | tests/test_catalog_deference_policy.py | 101 | # contracts: a new skill whose do_not_use_when points at a sibling adds a case | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 121 | # `native-debugging` points at `build-failure-triage`, `agent-debug`, `rust`, | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 141 | # `omh-docs` adds three measured mutation-deference cases and pairs, with | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 161 | # `deploy-and-monitor`, the actual send of a page, status-page update, or | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 181 | # `web-research` each lose the statement pointing at the lookup skill now | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 201 | # `build-failure-triage`, and `ultrawork`. Four cases, four pairs, one owner. | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 221 | # `iac-change` (#1566) defers to `deploy-and-monitor`, `release-cut`, | COMMENT |
| LOW | tests/test_catalog_deference_policy.py | 241 | COMMENT | |
| LOW | tests/test_memory_provider.py | 421 | # NO tools, which was true only while `register()` returned early on | COMMENT |
| LOW | tests/test_deep_interview_bounds.py | 21 | from omh.workflows.hermes_planning import _deep_interview_contract, _missing_decisions | COMMENT |
| LOW | tests/test_injected_context_pressure.py | 561 | # needs a plan of its own, or the reader returns nothing and no line | COMMENT |
| LOW | tests/test_runtime_binding_review.py | 301 | self.assertTrue(issubclass(paths.UnattributableSessionError, paths.RuntimeBindingError)) | COMMENT |
| LOW | tests/test_message_gate.py | 341 | gate = payload["chat_response"]["message_gate"] | COMMENT |
| LOW | tests/test_diagnostic_execution.py | 21 | # machine is. At two seconds a loaded CI runner failed one: the second worker | COMMENT |
| LOW | tests/test_diagnostic_execution.py | 41 | # The third failure (#1790: 60s, Linux, a branch touching nothing near this | COMMENT |
| LOW | tests/test_skill_context_cost.py | 21 | # 100,000 -> 104,000: the reply rule (the user's words, the host's | COMMENT |
| LOW | tests/test_model_contracts.py | 141 | # renderer and the ladder branch key on one exact spelling. A typo | COMMENT |
| LOW | tests/test_wrapper_contract.py | 4381 | # | COMMENT |
| LOW | tests/test_handoff_safety_contract_enforcement.py | 421 | COMMENT | |
| LOW | tests/test_handoff_safety_contract_enforcement.py | 441 | # What actually makes the live call sites acceptable is confinement, and | COMMENT |
| LOW | tests/test_handoff_safety_contract_enforcement.py | 481 | # an operator taken from a dict. No AST gate can follow a name that only | COMMENT |
| LOW | tests/test_handoff_safety_contract_enforcement.py | 1481 | COMMENT | |
| LOW | tests/test_handoff_safety_contract_enforcement.py | 1801 | f"{WINDOWS_JUNCTION_PLATFORM}. Remove the call, or widen the safety policy in " | COMMENT |
| LOW | tests/test_plugin_manifest_subset_corpus.py | 201 | "name\t: p\nprovides_hooks:\n - pre_tool_call\n", | COMMENT |
| LOW | tests/test_plugin_manifest_subset_corpus.py | 241 | # PyYAML reads both of these. `_KEY` excludes whitespace, so a key with a | COMMENT |
| LOW | tests/test_plugin_manifest_subset_corpus.py | 381 | ), | COMMENT |
| LOW | tests/test_plugin_manifest_subset_corpus.py | 421 | "provides_hooks: [pre_tool_call, post_tool_call]\n", | COMMENT |
| LOW | tests/test_dynamic_workflow.py | 441 | self.assertTrue((workflow_dir / "workflow.json").exists()) | COMMENT |
| LOW | tests/test_fanout_chaos.py | 181 | f"{label}: {unit_id} outcome {outcomes[unit_id]} vs entry", | COMMENT |
| LOW | tests/test_efficiency.py | 201 | # ceiling is set to restore roughly the ~18k headroom this gate carried at | COMMENT |
| LOW | tests/test_efficiency.py | 221 | # sentence that split `best-practice-research`'s boundary in two. Set to | COMMENT |
| LOW | tests/test_efficiency.py | 241 | # combined full profile to the exact release ratchet below 891k. | COMMENT |
| LOW | tests/test_efficiency.py | 261 | # research_and_ops skills' Workflow Lane lines). The ceiling restores | COMMENT |
| LOW | tests/test_efficiency.py | 281 | # are a reference file, counted below rather than here. The ceiling | COMMENT |
| LOW | tests/test_structural_search_guidance_neutrality.py | 21 | ) | COMMENT |
| LOW | tests/test_handoff_safety_contract.py | 121 | # delegation lane observes no baseline revision, so it has nothing to build | COMMENT |
| LOW | tests/test_hermes_child_receipts.py | 261 | def test_two_creators_at_one_home_read_the_same_whole_key(self) -> None: | COMMENT |
| LOW | tests/test_hud.py | 821 | self.assertNotIn("coding-agent:idle(ask)", stdout) | COMMENT |
| LOW | tests/test_hud.py | 2201 | # merely fails to resolve does NOT reopen it. | COMMENT |
| LOW | tests/test_router_content.py | 281 | # 20,800 -> 21,400: the `refactor-plan` catalog row (20,831 measured) | COMMENT |
| LOW | tests/test_router_content.py | 301 | # (27,904 measured); one line per new skill, ~2.8% headroom kept. | COMMENT |
| 478 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_fanout_scan_bounds.py | 91 | except (OSError, NotImplementedError): # pragma: no cover - restricted hosts | CODE |
| HIGH | tests/test_fanout_signal_safety.py | 258 | except (subprocess.SubprocessError, OSError): | CODE |
| HIGH | tests/test_fanout_signal_safety.py | 508 | except OSError: | CODE |
| HIGH | tests/test_fanout_signal_safety.py | 594 | except OSError: | CODE |
| HIGH | tests/test_setup_keyboard_input.py | 85 | except OSError: | CODE |
| HIGH | tests/test_setup_keyboard_input.py | 99 | except (OSError, ValueError): # the fd closed under an abandoned read | CODE |
| HIGH | tests/test_record_revision.py | 1508 | except WorkflowStateError: | CODE |
| HIGH | tests/test_jev_ask_tool.py | 819 | except StopIteration: | CODE |
| HIGH | tests/test_project_terms.py | 571 | except FileNotFoundError: | CODE |
| HIGH | script/qa/capture-hermes-tui.py | 59 | except ProcessLookupError: | CODE |
| HIGH | src/quality/hermes_state.py | 79 | except ValueError: | CODE |
| HIGH | src/quality/cross_harness_adapter_io.py | 127 | except FileNotFoundError: | CODE |
| HIGH | src/quality/cross_harness_adapter_io.py | 153 | except FileNotFoundError: | CODE |
| HIGH | src/wrapper/lifecycle.py | 338 | except (OSError, ValueError): | CODE |
| HIGH | src/runtime/generated_artifacts.py | 920 | except ValueError: | CODE |
| HIGH | src/workflows/web_qa_observation_store.py | 460 | except FileExistsError: | CODE |
| HIGH | src/workflows/domain_intelligence_store_writer.py | 614 | except FileExistsError: | CODE |
| HIGH | src/workflows/domain_intelligence_store_writer.py | 192 | except FileNotFoundError: | CODE |
| HIGH | src/workflows/domain_intelligence_store_writer.py | 314 | except FileNotFoundError: | CODE |
| HIGH | src/workflows/domain_intelligence_store_writer.py | 439 | except FileExistsError: | CODE |
| HIGH | src/workflows/domain_intelligence_store_security.py | 133 | except FileNotFoundError: | CODE |
| HIGH | src/workflows/web_visual_qa_captures.py | 178 | except FileExistsError: | CODE |
| HIGH | src/workflows/memory_evaluation.py | 925 | except (OSError, AttributeError): | CODE |
| HIGH | src/plugin_bundle/omh/memory_state_files.py | 67 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/host_compat.py | 53 | except (OSError, UnicodeError, ValueError): | CODE |
| HIGH | src/plugin_bundle/omh/cost_receipt.py | 502 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/live_session.py | 112 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/live_session.py | 176 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/hermes_delegation.py | 2226 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/hermes_delegation.py | 2233 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/hermes_delegation.py | 1137 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/host_observation.py | 289 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/host_observation.py | 373 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/host_observation.py | 398 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/host_observation.py | 384 | except (OSError, json.JSONDecodeError): | CODE |
| HIGH | src/plugin_bundle/omh/host_observation.py | 405 | except FileNotFoundError: | CODE |
| HIGH | src/plugin_bundle/omh/jev_ask_store.py | 177 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/__init__.py | 114 | except Exception: | CODE |
| HIGH | src/plugin_bundle/omh/delegation_routing.py | 352 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/delegation_routing.py | 237 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/kanban_board_reader.py | 230 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/kanban_board_reader.py | 293 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/kanban_board_reader.py | 389 | except sqlite3.Error: | CODE |
| HIGH | src/plugin_bundle/omh/runtime_reader.py | 237 | except FileNotFoundError: | CODE |
| HIGH | src/plugin_bundle/omh/kanban_readback.py | 597 | except (TypeError, ValueError): | CODE |
| HIGH | src/plugin_bundle/omh/awareness.py | 484 | except ImportError: # pragma: no cover - standalone plugin hosts keep the fallback above. | CODE |
| HIGH | src/plugin_bundle/omh/awareness.py | 546 | except ImportError: # pragma: no cover - standalone plugin hosts keep the fallback above. | CODE |
| HIGH | src/plugin_bundle/omh/awareness.py | 580 | except ImportError: # pragma: no cover - standalone plugin hosts keep the fallback above. | CODE |
| HIGH | src/plugin_bundle/omh/awareness.py | 652 | except ImportError: # pragma: no cover - standalone plugin hosts keep the fallback above. | CODE |
| HIGH | src/plugin_bundle/omh/awareness.py | 664 | except ImportError: # pragma: no cover - standalone plugin hosts keep the fallback above. | CODE |
| HIGH | src/plugin_bundle/omh/memory_blocks.py | 277 | except OSError: | CODE |
| HIGH | src/plugin_bundle/omh/hooks/session_hooks.py | 259 | except FileNotFoundError: | CODE |
| HIGH | src/coding/hermes_child_receipts.py | 149 | except FileExistsError: | CODE |
| HIGH | src/coding/_hermes_child_process.py | 64 | except OSError: | CODE |
| HIGH | src/coding/_hermes_child_process.py | 114 | except (BrokenPipeError, OSError, ValueError): | CODE |
| HIGH | src/coding/_hermes_child_process.py | 208 | except OSError: | CODE |
| HIGH | src/coding/_hermes_child_process.py | 380 | except ProcessLookupError: | CODE |
| HIGH | src/coding/_hermes_child_process.py | 120 | except OSError: | CODE |
| HIGH | src/coding/_hermes_child_process.py | 178 | except ProcessLookupError: | CODE |
| HIGH | src/coding/workspace_preflight.py | 290 | except OSError: | CODE |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_github_issue_intake.py | 131 | # Given/When: the harness registry | COMMENT |
| MEDIUM⚡ | tests/test_github_issue_intake.py | 694 | # When/Then: a boolean file-now request cannot elevate public authority | COMMENT |
| MEDIUM⚡ | tests/test_doctor_advisory.py | 167 | "# Ada\n\nAda is a meticulous release engineer who prizes reproducible " | STRING |
| MEDIUM⚡ | tests/test_tui_widget_pack.py | 1745 | # callback runs only when the harness calls it; between polls the harness | COMMENT |
| MEDIUM⚡ | tests/test_tui_widget_pack.py | 1747 | # kept for the harness's own wait on the first read. | COMMENT |
| MEDIUM | tests/test_tui_widget_pack.py | 28 | # about a row's content need not name one. The panel takes no input, so the harness needs no key | COMMENT |
| MEDIUM⚡ | tests/test_candidate_handoff.py | 152 | # (the lexical ranking leads with harness-session-inventory on | COMMENT |
| MEDIUM⚡ | tests/test_candidate_handoff.py | 153 | # "document-harness"); what holds is that nothing is dispatched. | COMMENT |
| MEDIUM | tests/test_catalog_deference_policy.py | 116 | # harness's own prompt cache, not the application), and `security-safety-review` | COMMENT |
| MEDIUM | tests/test_omh_live_model_benchmark.py | 140 | # The harness hands the CLI OS-native paths (str(Path(...))); | COMMENT |
| MEDIUM⚡ | tests/test_deep_interview_bounds.py | 142 | # The harness fallback used to prescribe the pre-change behavior (a bare direct | COMMENT |
| MEDIUM⚡ | tests/test_theme_picker.py | 232 | # The harness has no tty, which is the same shape as a pipe or CI. | COMMENT |
| MEDIUM⚡ | tests/test_message_gate.py | 260 | # The `oh-my-hermes` router skill's own harness is `coding-handling`, so | COMMENT |
| MEDIUM⚡ | tests/test_message_gate.py | 261 | # a harness-only condition gave this answer a `model — unknown` header | COMMENT |
| MEDIUM | tests/test_message_gate.py | 358 | # question -- the same false positive the harness clause was tightened | COMMENT |
| MEDIUM⚡ | tests/test_unit_prompt_protocol.py | 335 | # DeepSeek's own harness ships the exact-string editor contract the | COMMENT |
| MEDIUM⚡ | tests/test_unit_prompt_protocol.py | 336 | # family is post-trained on (deepseek-harness, 2026-08-13). Its | COMMENT |
| MEDIUM | tests/test_skill_context_cost.py | 33 | # stamped into every lane body, and the two without a declared harness | COMMENT |
| MEDIUM⚡ | tests/test_installer_skill_profile.py | 272 | # Mirrors the CLI setup/doctor harness pattern used in test_cli.py: run a | COMMENT |
| MEDIUM | tests/test_tui_model_widget.py | 258 | # harness home, so the absent served marks have their reason. | COMMENT |
| MEDIUM⚡ | tests/test_execution_wait_strategy.py | 509 | # harness that does not have it. | COMMENT |
| MEDIUM⚡ | tests/test_router_content.py | 3436 | # harness for, so its body names none. It used to name | COMMENT |
| MEDIUM⚡ | tests/test_router_content.py | 3439 | # (#1690). The rest of the harness discipline this test checks is the | COMMENT |
| MEDIUM⚡ | tests/test_router_content.py | 3440 | # part that does not depend on a harness having been chosen. | COMMENT |
| MEDIUM | tests/test_router_content.py | 1436 | # The harness contract and the rendered rules stay one maintained copy. | COMMENT |
| MEDIUM | tests/test_router_content.py | 3230 | # Changed on purpose: the owner made the Hermes coding harness with | COMMENT |
| MEDIUM | tests/test_router_content.py | 3305 | # The todo rule stays off the shared `planning` harness and off the lighter | COMMENT |
| MEDIUM | tests/test_router_content.py | 3307 | # share that harness and should not gain a HUD checklist obligation. Both | COMMENT |
| MEDIUM | tests/test_router_content.py | 3761 | self.assertIn(f"### {harness.name}", reference) | CODE |
| MEDIUM⚡ | tests/test_router_content.py | 5071 | """Issue #1113: the hermes-setup category owns its own harness. | STRING |
| MEDIUM | benchmarks/routing-questions/v1/lib/harness.py | 39 | # the harness to exhaust memory. | COMMENT |
| MEDIUM | benchmarks/routing-questions/v1/lib/prompts.py | 23 | # arm that declined to answer rather than a harness that cut the question off. | COMMENT |
| MEDIUM | benchmarks/live-model-tools/v1/adapters/fake_harness.py | 80 | # record's prompt_digest is proven to be what this harness received. | COMMENT |
| MEDIUM | benchmarks/live-model-tools/v1/lib/runner.py | 116 | # The offline harness has no route, so the condition prompt is | COMMENT |
| MEDIUM | benchmarks/live-model-tools/v1/lib/runner.py | 118 | # exact text this condition hands the harness. | COMMENT |
| MEDIUM | benchmarks/product-ab/v1/lib/grading.py | 271 | # verdict are still a red validator, not a harness fault; only a run that | COMMENT |
| MEDIUM | benchmarks/product-ab/v1/lib/lane.py | 132 | # the harness caused. Unpinned, set and dict iteration order changes per | COMMENT |
| MEDIUM | src/quality/chat_card_coverage.py | 697 | # These cases exist so the harness proves the reply is about the skill. | COMMENT |
| MEDIUM | src/quality/route_hint_alignment.py | 785 | # is the internal catalog key every harness and task-card lookup resolves | COMMENT |
| MEDIUM | src/quality/ulw_equivalence.py | 1220 | # The PR D captures pinned the pre-fold routing and harness legs; stage 5 | COMMENT |
| MEDIUM | src/quality/ulw_equivalence.py | 1222 | # `ulw-work` alias and the retired contracts left the primary-harness map -- | COMMENT |
| MEDIUM⚡ | src/wrapper/contract.py | 9161 | # The harness alone does NOT qualify. `coding-handling` is the harness of the | COMMENT |
| MEDIUM⚡ | src/wrapper/contract.py | 9165 | # the harness keeps the gate on replies about work someone is actually running. | COMMENT |
| MEDIUM | src/wrapper/contract.py | 9191 | # the same false positive the harness clause was tightened to remove. | COMMENT |
| MEDIUM | src/workflows/native_capability_blueprint.py | 357 | # An evidence-ladder step, in the shape the harness definitions already use. | COMMENT |
| MEDIUM⚡ | src/system/paths.py | 469 | # and `.document-harness` is a product's own evidence dir; continuity is | COMMENT |
| MEDIUM | src/system/paths.py | 826 | # like `document-harness`. Same-named checkouts share a label. | COMMENT |
| MEDIUM | src/plugin_bundle/omh/memory_store_io.py | 72 | # Perspective is honcho's peer paradigm reinterpreted deterministically: an | COMMENT |
| MEDIUM | src/coding/unit_prompt_protocol.py | 368 | # skill text, delegates less than a harness expects, and tests more | STRING |
| MEDIUM | src/coding/unit_prompt_protocol.py | 397 | # own harness adapter notes that the live API rejects an assistant turn | STRING |
| MEDIUM | src/coding/owner_retarget.py | 435 | # The payload-level harness quality, not the handoff's own copy: only the | COMMENT |
| MEDIUM | src/coding/hermes_harness.py | 200 | # status the builder can produce and the validator rejects is a harness that | COMMENT |
| MEDIUM | src/coding/orchestration_vocabulary.py | 48 | # The Hermes-harness-default wording, shared verbatim between the | COMMENT |
| MEDIUM⚡ | src/maintenance/release.py | 1491 | # 979758 -> 977649: fourteen skills the catalog declares no primary harness | COMMENT |
| MEDIUM⚡ | src/maintenance/release.py | 1493 | # harness for this skill: `coding-handling`" line plus an `omh runtime record | COMMENT |
| MEDIUM⚡ | src/maintenance/release.py | 1494 | # --harness coding-handling` command nobody chose -- the renderer read the | COMMENT |
| MEDIUM | src/maintenance/release.py | 319 | # sections of the skills that carry it (the coding-handling harness bar, the | COMMENT |
| MEDIUM | src/maintenance/release.py | 447 | # rendered harness line from fourteen skills, and the limit was still sitting | COMMENT |
| MEDIUM | src/maintenance/release.py | 651 | # Re-measured when the owner made the Hermes coding harness the default | COMMENT |
| MEDIUM | src/maintenance/release.py | 815 | # Hermes-owner harness line -- which told an engine that structurally cannot | COMMENT |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_work_artifact_show_shape_action.py | 32 | __all__ = [ | CODE |
| LOW | tests/test_working_tree_fingerprint.py | 33 | __all__ = [ | CODE |
| LOW | tests/test_plugin_omh_home_binding.py | 280 | def update_at(self, store: Path) -> None: | CODE |
| LOW | benchmarks/routing-questions/v1/lib/harness.py | 335 | __all__ = [ | CODE |
| LOW | benchmarks/routing-questions/v1/lib/prompts.py | 131 | __all__ = [ | CODE |
| LOW | benchmarks/routing-questions/v1/lib/external_answers.py | 135 | __all__ = [ | CODE |
| LOW | benchmarks/cross-harness/live/bench.py | 115 | __all__ = ["RECEIPT_SCHEMA", "build_parser", "main"] | CODE |
| LOW | src/omh/skill_pack.py | 32 | __all__ = [ | CODE |
| LOW | src/install/plugin_loader_observation.py | 152 | __all__ = ["observe_real_loader_registration"] | STRING |
| LOW | src/install/plugin_bundle_import_scan.py | 247 | __all__ = [ | CODE |
| LOW | src/capabilities/__init__.py | 3 | __all__ = [ | CODE |
| LOW | src/evidence/__init__.py | 23 | __all__ = [ | CODE |
| LOW | src/quality/paired_run_validation.py | 43 | __all__ = ["PairedRunValidationError", "parse_paired_run_decision"] | CODE |
| LOW | src/quality/routing_question_corpus.py | 1290 | __all__ = [ | CODE |
| LOW | src/quality/small_model_prompt_budget.py | 271 | __all__ = [ | CODE |
| LOW | src/quality/route_question_shadow_report.py | 416 | __all__ = [ | CODE |
| LOW | src/quality/reported_rate.py | 166 | __all__ = [ | CODE |
| LOW | src/quality/schema_overlap.py | 463 | __all__ = [ | CODE |
| LOW | src/quality/routing_log_calibration.py | 295 | __all__ = [ | CODE |
| LOW | src/workflows/plugin_catalog_snapshots.py | 416 | __all__ = [ | CODE |
| LOW | src/workflows/lifecycle_growth_contracts.py | 169 | __all__ = [ | CODE |
| LOW | src/workflows/loop_goal_observations.py | 17 | __all__ = [ | CODE |
| LOW | src/workflows/domain_intelligence.py | 27 | __all__ = [ | CODE |
| LOW | src/workflows/memory_store.py | 38 | __all__ = [ | CODE |
| LOW | src/workflows/self_improvement_routes.py | 186 | __all__ = [ | CODE |
| LOW | src/workflows/hermes_retained_context_catalog.py | 101 | __all__ = [ | CODE |
| LOW | src/workflows/design_direction_iterations.py | 28 | __all__ = [ | CODE |
| LOW | src/workflows/hermes_readiness.py | 164 | __all__ = [ | CODE |
| LOW | src/workflows/plugin_catalog_coverage.py | 507 | __all__ = [ | CODE |
| LOW | src/workflows/hermes_retained_context_provider.py | 69 | __all__ = ["ProviderSelection", "clean_config_scalar", "marker_exists_under", "provider_selection"] | CODE |
| LOW | src/workflows/memory_migration.py | 27 | __all__ = [ | CODE |
| LOW | src/workflows/loop_operations.py | 1221 | __all__ = [ | CODE |
| LOW | src/workflows/memory_provider_posture.py | 443 | __all__ = [ | CODE |
| LOW | src/workflows/hermes_retained_context.py | 127 | __all__ = [ | CODE |
| LOW | src/workflows/hermes_readiness_catalog.py | 317 | __all__ = [ | CODE |
| LOW | src/workflows/loop_phase_transitions.py | 128 | __all__ = [ | CODE |
| LOW | src/workflows/workflow_learning.py | 3921 | def _update_learning_index(paths: OmhPaths, record: dict[str, Any], kind: str) -> None: | CODE |
| LOW | src/workflows/browser_workflow_learning_store.py | 221 | if not isinstance(value, dict): raise ValueError("not object") | CODE |
| LOW | src/workflows/hermes_retained_context_probes.py | 271 | __all__ = ["retained_context_channels"] | CODE |
| LOW | src/workflows/memory_recall_incident.py | 31 | __all__ = ['RecallIncidentRequest', 'build_memory_recall_incident', | CODE |
| LOW | src/plugin_bundle/omh/activity_observer.py | 36 | __all__ = ["ActivityObserver", "opaque_ref"] | CODE |
| LOW | src/plugin_bundle/omh/memory_state_files.py | 78 | __all__ = ["STATE_LOCK_TIMEOUT_SECONDS", "state_file_lock", "write_text_atomic", "write_text_locked"] | CODE |
| LOW | src/plugin_bundle/omh/route_question_mode.py | 149 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/cost_receipt.py | 648 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/installed_skills.py | 102 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/host_observation.py | 377 | def _update_standalone_state(path: Path, record: dict[str, Any], runtime_readiness: str) -> None: | CODE |
| LOW | src/plugin_bundle/omh/memory_prefetch_receipt.py | 345 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/memory_governance.py | 14 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/jev_ask_store.py | 251 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/route_answer_store.py | 602 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/jev_consent.py | 513 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/loop_bridge.py | 295 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/memory_recall_support.py | 991 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/host_context.py | 21 | __all__ = ["active_main_agent_model", "record_active_main_agent_model"] | CODE |
| LOW | src/plugin_bundle/omh/memory_records.py | 472 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/memory_open_reminders.py | 211 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/skill_shortlist.py | 554 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/turn_budget.py | 136 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/jev_ask_client.py | 690 | __all__ = [ | CODE |
| LOW | src/plugin_bundle/omh/route_answerers.py | 310 | __all__ = [ | CODE |
| 46 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_plan_deferral.py | 0 | `items` is a list of `(text, state)` pairs, or `(text, state, blocked_reason)`. | STRING |
| HIGH | tests/test_person_turn_precedence.py | 0 | `items` is a list of `(text, state)` pairs, or `(text, state, blocked_reason)`. | STRING |
| HIGH | tests/test_plan_continuation_driver.py | 0 | `items` is a list of `(text, state)` pairs, or `(text, state, blocked_reason)`. | STRING |
| HIGH | tests/test_hook_manifest.py | 0 | 이번 sionic 작업에서 omh가 얼마나 관여했는지 사용성 평가하고, 왜 omh를 덜 썼는지 분석해서 라우터 강화 플랜으로 잡아줘. sionic은 마크다운 노트뿐 아니라 위키 페이지/site 생성도 포함했어. 결과 | STRING |
| HIGH | tests/test_plugin_capabilities.py | 0 | 이번 sionic 작업에서 omh가 얼마나 관여했는지 사용성 평가하고, 왜 omh를 덜 썼는지 분석해서 라우터 강화 플랜으로 잡아줘. sionic은 마크다운 노트뿐 아니라 위키 페이지/site 생성도 포함했어. 결과 | STRING |
| HIGH | tests/test_chat_router.py | 0 | 이번 sionic 작업에서 omh가 얼마나 관여했는지 사용성 평가하고, 왜 omh를 덜 썼는지 분석해서 라우터 강화 플랜으로 잡아줘. sionic은 마크다운 노트뿐 아니라 위키 페이지/site 생성도 포함했어. 결과 | STRING |
| HIGH | tests/test_workspace_binding_guard.py | 0 | the wiring: without it nothing in production ever runs these validators. | STRING |
| HIGH | tests/test_decision_gate.py | 0 | the wiring: without it nothing in production ever runs these validators. | STRING |
| HIGH | tests/test_run_lineage_checkpoint.py | 0 | the wiring: without it nothing in production ever runs these validators. | STRING |
| HIGH | tests/test_scroll_motion_reference.py | 0 | soft line wraps collapsed, for phrase assertions that span lines. | STRING |
| HIGH | tests/test_design_craft_references.py | 0 | soft line wraps collapsed, for phrase assertions that span lines. | STRING |
| HIGH | tests/test_frontend_design_references.py | 0 | soft line wraps collapsed, for phrase assertions that span lines. | STRING |
| HIGH | src/workflows/external_action_readiness.py | 0 | both directions: no key of the closed set missing, no key outside it. | STRING |
| HIGH | src/coding/owner_fit.py | 0 | both directions: no key of the closed set missing, no key outside it. | STRING |
| HIGH | src/coding/owner_retarget.py | 0 | both directions: no key of the closed set missing, no key outside it. | STRING |
| HIGH | src/coding/pre_handoff_readiness.py | 0 | both directions: no key of the closed set missing, no key outside it. | STRING |
| HIGH | src/workflows/external_effect_receipts.py | 0 | a closed-vocabulary field renders only what its vocabulary contains. rendering reads whatever is on disk, and a store ca | STRING |
| HIGH | src/workflows/approval_receipts.py | 0 | a closed-vocabulary field renders only what its vocabulary contains. rendering reads whatever is on disk, and a store ca | STRING |
| HIGH | src/system/append_only_store.py | 0 | a closed-vocabulary field renders only what its vocabulary contains. rendering reads whatever is on disk, and a store ca | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | DESIGN.md | 22 | ## Design-orchestration comparison | COMMENT |
| MEDIUM | .omh/plans/visual-engineering-design-skill-harness.md | 36 | ### Must NOT have (guardrails, anti-slop, scope boundaries) | COMMENT |
| MEDIUM | agent-skills/omh-frontend/references/tui-craft.md | 10 | ## Defaults are scaffolding | COMMENT |
| MEDIUM⚡ | tests/test_design_craft_references.py | 441 | # design-orchestration ships no references/ directory of its own, so | COMMENT |
| MEDIUM⚡ | tests/test_awareness_delivery.py | 530 | # The brief draws an orchestrating-engine hint (`ultrawork`) and a | COMMENT |
| MEDIUM | tests/test_router_content.py | 3568 | # The bare noun "project scaffolding" was removed after review: it | COMMENT |
| MEDIUM | tests/test_router_content.py | 4011 | # hermes-omh-terminal-orchestration.png (2026-08-25) and | COMMENT |
| MEDIUM | docs/SKILL-SOURCES.md | 170 | | `agent-evaluation` self-evaluation loops (issue #1263) | evaluation | https://github.com/github/awesome-copilot | `ski | CODE |
| MEDIUM | docs/SKILL-SOURCES.md | 170 | | `agent-evaluation` self-evaluation loops (issue #1263) | evaluation | https://github.com/github/awesome-copilot | `ski | CODE |
| MEDIUM | skills/omh-frontend/references/tui-craft.md | 10 | ## Defaults are scaffolding | COMMENT |
| MEDIUM | src/quality/routing_precision.py | 1338 | # bare noun "project scaffolding" occurs naturally inside questions about | COMMENT |
| MEDIUM | src/wrapper/contract.py | 10641 | # protects the supervising agent's context window, not a human | COMMENT |
| MEDIUM | src/plugin_bundle/omh/engagement_nudges.py | 122 | # single call and off this context window, which is the case the nudge exists | COMMENT |
| MEDIUM | src/plugin_bundle/omh/awareness.py | 7523 | # The engines that orchestrate other work (fan out, loop, or drive a plan to | COMMENT |
| MEDIUM | src/plugin_bundle/omh/awareness.py | 7525 | # retired ones fold into `ultrawork` and orchestrate the same way. The rest of | COMMENT |
| MEDIUM | src/plugin_bundle/omh/hooks/llm_hooks.py | 856 | # orchestration is in flight" condition -- no fixed keyword phrasing can | COMMENT |
| MEDIUM | src/plugin_bundle/omh/hooks/llm_hooks.py | 859 | # ordinary single-session work, not evidence of orchestration, so the | COMMENT |
| MEDIUM | src/coding/unit_prompt_protocol.py | 371 | # are not restated. No monitoring language, no chain-of-thought requests. | STRING |
| MEDIUM | src/maintenance/release.py | 741 | # design-quality-gate, and design-orchestration quality bars: the named | COMMENT |
| MEDIUM | src/maintenance/release.py | 789 | # 726847 -> 726824: the bare-noun "project scaffolding" trigger was dropped | COMMENT |
| MEDIUM | src/maintenance/release.py | 792 | # bootstrap/scaffold phrases remain); warranted shrink. | COMMENT |
| MEDIUM | src/maintenance/drift.py | 452 | # The router-misroute round adds eight: a filling context window and | COMMENT |
| MEDIUM | src/commands/common.py | 64 | # on every supervising-session context window. `--pretty`/OMH_JSON_PRETTY=1 | COMMENT |
| MEDIUM | src/skills/catalog_types.py | 433 | # so the only thing that can drop the orchestration thread is the model ending | COMMENT |
| MEDIUM | src/skills/render.py | 11120 | ## Defaults are scaffolding | COMMENT |
| MEDIUM | src/routing/recommend.py | 2798 | # The overflow phrasings `context-budget-review` needs -- "context window", | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_update_watch_recovery.py | 83 | CODE | |
| LOW | tests/test_rejected_decision_recall.py | 30 | CODE | |
| LOW | tests/test_product_discovery_validation.py | 93 | CODE | |
| LOW | tests/test_fanout_dispatch.py | 195 | CODE | |
| LOW | tests/production_readiness_test_support.py | 143 | CODE | |
| LOW | tests/test_critical_path_health.py | 20 | CODE | |
| LOW | tests/test_plugin_catalog_coverage.py | 73 | CODE | |
| LOW | benchmarks/cross-harness/live/lib/controller.py | 206 | CODE | |
| LOW | src/install/release_install_smoke.py | 19 | CODE | |
| LOW | src/install/release_install_smoke.py | 109 | CODE | |
| LOW | src/quality/language_diagnostic_evidence.py | 154 | CODE | |
| LOW | src/quality/cross_harness_adapter_sandbox.py | 262 | CODE | |
| LOW | src/quality/hermes_ux_quality.py | 21 | CODE | |
| LOW | src/wrapper/sessions.py | 146 | CODE | |
| LOW | src/wrapper/sessions.py | 540 | CODE | |
| LOW | src/wrapper/message_gate.py | 116 | CODE | |
| LOW | src/wrapper/lifecycle.py | 54 | CODE | |
| LOW | src/wrapper/contract.py | 4662 | CODE | |
| LOW | src/workflows/visual_generation_receipts.py | 265 | CODE | |
| LOW | src/workflows/paper_learning.py | 214 | CODE | |
| LOW | src/workflows/paper_learning.py | 387 | CODE | |
| LOW | src/workflows/paper_learning.py | 480 | CODE | |
| LOW | src/workflows/memory.py | 513 | CODE | |
| LOW | src/workflows/memory.py | 1142 | CODE | |
| LOW | src/workflows/memory.py | 2672 | CODE | |
| LOW | src/workflows/web_visual_qa.py | 45 | CODE | |
| LOW | src/workflows/materials.py | 52 | CODE | |
| LOW | src/workflows/temporal_source_receipts.py | 241 | CODE | |
| LOW | src/workflows/goal_ledger.py | 416 | CODE | |
| LOW | src/workflows/goal_loop.py | 543 | CODE | |
| LOW | src/workflows/goal_loop.py | 1321 | CODE | |
| LOW | src/workflows/goal_loop.py | 2058 | CODE | |
| LOW | src/workflows/operations.py | 58 | CODE | |
| LOW | src/workflows/recurring_intents.py | 296 | CODE | |
| LOW | src/workflows/recurring_intents.py | 422 | CODE | |
| LOW | src/workflows/recurring_intents.py | 601 | CODE | |
| LOW | src/workflows/product_evidence_loop.py | 41 | CODE | |
| LOW | src/workflows/realtime_voice_trial_receipts.py | 427 | CODE | |
| LOW | src/workflows/realtime_voice_trial_receipts.py | 495 | CODE | |
| LOW | src/workflows/research_department.py | 114 | CODE | |
| LOW | src/workflows/workflow_learning.py | 1134 | CODE | |
| LOW | src/workflows/long_document.py | 198 | CODE | |
| LOW | src/workflows/visual_summary.py | 667 | CODE | |
| LOW | src/workflows/research_briefing.py | 301 | CODE | |
| LOW | src/workflows/source_finder.py | 195 | CODE | |
| LOW | src/workflows/memory_retrieval_fixtures.py | 57 | CODE | |
| LOW | src/workflows/memory_retrieval_fixtures.py | 184 | CODE | |
| LOW | src/system/record_revision.py | 344 | CODE | |
| LOW | src/plugin_bundle/omh/memory_dreaming.py | 181 | CODE | |
| LOW | src/plugin_bundle/omh/memory_dreaming.py | 293 | CODE | |
| LOW | src/plugin_bundle/omh/route_answer_store.py | 182 | CODE | |
| LOW | src/plugin_bundle/omh/memory_records.py | 176 | CODE | |
| LOW | src/plugin_bundle/omh/memory_records.py | 214 | CODE | |
| LOW | src/plugin_bundle/omh/runtime_reader.py | 665 | CODE | |
| LOW | src/plugin_bundle/omh/runtime_reader.py | 817 | CODE | |
| LOW | src/plugin_bundle/omh/memory_admission.py | 216 | CODE | |
| LOW | src/plugin_bundle/omh/memory_admission.py | 875 | CODE | |
| LOW | src/plugin_bundle/omh/delegation_route_restore.py | 442 | CODE | |
| LOW | src/plugin_bundle/omh/delegation_route_restore.py | 580 | CODE | |
| LOW | src/plugin_bundle/omh/memory_recall_selector.py | 284 | CODE | |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 255 | except Exception: | CODE |
| LOW | tools/test_sharding/run.py | 204 | except Exception as exc: # noqa: BLE001 - every test of the unit is reported as an error | CODE |
| LOW | tests/test_workspace_binding_guard.py | 321 | except Exception as exc: # reported on the main thread, never dropped | CODE |
| LOW | tests/_standalone_bundle.py | 114 | except Exception as error: # noqa: BLE001 - any failure to import is the finding | CODE |
| LOW | tests/test_append_only_store.py | 173 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| LOW | tests/test_append_only_store.py | 229 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| LOW | tests/test_domain_bound_store_security.py | 31 | except Exception as exc: | CODE |
| LOW | tests/test_approval_receipts.py | 550 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| LOW | tests/test_approval_receipts.py | 584 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| LOW | tests/test_external_effect_receipts.py | 1027 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| LOW | tests/test_external_effect_receipts.py | 1065 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| LOW | tests/test_external_effect_receipts.py | 1505 | except Exception as exc: # reported on the main thread, never silently dropped | CODE |
| MEDIUM | tests/test_web_qa_observation_store.py | 344 | def publish() -> None: | CODE |
| LOW | tests/test_web_qa_observation_store.py | 266 | except Exception as exc: # asserted below from both workers | CODE |
| LOW | tests/test_web_qa_observation_store.py | 349 | except Exception as exc: # surfaced after joining the publisher | CODE |
| LOW | tests/native/test_review_native.py | 330 | except Exception as exc: | CODE |
| LOW | tests/five_issue_cases/kanban_native.py | 444 | except Exception as error: | STRING |
| LOW | benchmarks/live-model-tools/v1/lib/validation.py | 84 | except Exception: | CODE |
| LOW | src/install/plugin_pack.py | 691 | except Exception as exc: | CODE |
| LOW | src/install/plugin_pack.py | 779 | except Exception as exc: # noqa: BLE001 - classified below, never a pass | CODE |
| LOW | src/workflows/web_qa_observation_store.py | 320 | except Exception: | CODE |
| LOW | src/workflows/browser_skill_promotion_native_probe.py | 41 | except Exception as exc: | CODE |
| LOW | src/workflows/browser_skill_promotion_native_probe.py | 210 | except Exception: | CODE |
| MEDIUM | src/workflows/browser_skill_promotion_native_probe.py | 34 | def main() -> None: | CODE |
| LOW | src/workflows/memory_store.py | 236 | except Exception: | CODE |
| LOW | src/workflows/web_qa_comparison.py | 320 | except Exception: | CODE |
| LOW | src/mcp/bridge.py | 401 | except Exception as exc: # pragma: no cover - defensive transport boundary | CODE |
| LOW | src/plugin_bundle/omh/host_observation.py | 226 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/jev_ask_store.py | 147 | except Exception: # noqa: BLE001 - classified: availability probe fails closed to "none", and the tool stays hidden | CODE |
| LOW | src/plugin_bundle/omh/__init__.py | 114 | except Exception: | CODE |
| LOW | src/plugin_bundle/omh/engagement_nudges.py | 243 | except Exception as exc: # noqa: BLE001 - see module docstring: the host | CODE |
| LOW⚡ | src/plugin_bundle/omh/engagement_nudges.py | 288 | except Exception as exc: # noqa: BLE001 - classified in the policy gate | CODE |
| LOW | src/plugin_bundle/omh/remote_wait_nudge.py | 496 | except Exception as exc: # noqa: BLE001 - see module docstring: the host | CODE |
| LOW | src/plugin_bundle/omh/remote_wait_nudge.py | 657 | except Exception as exc: # noqa: BLE001 - the host swallows and | CODE |
| LOW⚡ | src/plugin_bundle/omh/context_brief.py | 165 | except Exception: | CODE |
| LOW⚡ | src/plugin_bundle/omh/context_brief.py | 173 | except Exception as exc: | CODE |
| MEDIUM | src/plugin_bundle/omh/context_brief.py | 116 | def _capability_family_cards() -> list[dict[str, object]]: | CODE |
| LOW | src/plugin_bundle/omh/jev_ask_client.py | 314 | except Exception: # noqa: BLE001 - classified: a transport failure OMH does not name is a network_error, never | CODE |
| LOW | src/plugin_bundle/omh/approval_bypass.py | 99 | except Exception: | CODE |
| LOW | src/plugin_bundle/omh/memory_provider.py | 886 | except Exception: # noqa: BLE001 - host callback; the memory hook must survive it | CODE |
| LOW | src/plugin_bundle/omh/awareness.py | 6619 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/awareness.py | 7418 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/chat_tool.py | 150 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/recommend_tool.py | 122 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/recommend_tool.py | 143 | except Exception: | CODE |
| LOW | src/plugin_bundle/omh/tools/context_tool.py | 86 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/memory_tool.py | 151 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/memory_tool.py | 245 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/memory_tool.py | 301 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/tools/team_tool.py | 171 | except Exception: | CODE |
| LOW | src/plugin_bundle/omh/tools/jev_ask_tool.py | 229 | except Exception: # noqa: BLE001 - classified: an unbound home keeps the tool hidden rather than failing registrati | CODE |
| LOW | src/plugin_bundle/omh/dashboard/plugin_api.py | 145 | except Exception as exc: # the failure becomes the record the pane shows | CODE |
| LOW | src/plugin_bundle/omh/hooks/tool_hooks.py | 106 | except Exception as exc: # noqa: BLE001 - classified in tests/test_broad_exception_policy.py | CODE |
| LOW | src/plugin_bundle/omh/hooks/llm_hooks.py | 819 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/hooks/llm_hooks.py | 838 | except Exception as exc: | CODE |
| LOW | src/plugin_bundle/omh/hooks/session_hooks.py | 59 | except Exception as exc: # noqa: BLE001 - swallowed upstream either way; | CODE |
| LOW | src/coding/paired_run_execution.py | 138 | except Exception as exc: | CODE |
| LOW | src/coding/paired_run_execution.py | 158 | except Exception as exc: | CODE |
| LOW | src/coding/fanout_confinement.py | 579 | except Exception: # noqa: BLE001 - containment is the point: never let this escape to _unconfined | CODE |
| LOW | src/coding/fanout_dispatch.py | 371 | except Exception: | CODE |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_model_contracts.py | 283 | # still a no-authority passthrough, never "supported as requested". | COMMENT |
| HIGH | tests/test_model_contracts.py | 881 | # The effort is kept as requested; only the record names the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_completion_integrity.py | 178 | for value in ("", " ", "TBD", "todo", "N/A", "placeholder", "stub", "-"): | CODE |
| LOW | tests/test_dynamic_workflow.py | 106 | self.assertNotIn("user@example.com", serialized) | CODE |
| LOW | tests/test_dynamic_workflow.py | 333 | self.assertNotIn("user@example.com", serialized) | CODE |
| LOW | src/quality/completion_integrity.py | 112 | _STUB_COMMENT_WORDS: Final = ("stub", "placeholder", "unimplemented", "not implemented") | CODE |
| LOW | src/quality/completion_integrity.py | 125 | "placeholder", "todo", "tbd", "n/a", "na", "none", "nil", "stub", "-", "?", "pending", | CODE |
| LOW | src/maintenance/advisory.py | 72 | "placeholder", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | INSTALL_FOR_AGENTS.md | 41 | ## Step 1: Install OMH | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 142 | ## Step 2: Verify | COMMENT |
| LOW⚡ | tests/test_distribution_surfaces.py | 247 | protocol = protocol.split("## Step 1: Install OMH", 1)[1] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_hud_fanout_cache.py | 155 | CODE | |
| MEDIUM | src/routing/chat.py | 5689 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/labels.yml | 3 | # This file is the source of truth for the repository's label set and for the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/quality/skill_density.py | 57 | "as mentioned earlier", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_distribution_surfaces.py | 247 | protocol = protocol.split("## Step 1: Install OMH", 1)[1] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_handoff_input_manifest.py | 114 | self.workspace.write("src/helper.py", "def helper():\n return 2\n") | CODE |