AI-powered virtual executive team — a single coherent executive persona backed by 8 specialist agents (FastAPI + Next.js).
This report summarizes scanner evidence for SenteLabsAI/OpenExecutive, a Python project with 5,579 GitHub stars. SynthScan examined 395,796 lines of code across 1321 source files, recording 10417 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 32.3 (High 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? 7364 finding(s).
Are imports declared and package/API names verified? 933 finding(s).
Are wrappers, guards, and repeated structures necessary? 8997 finding(s).
Which changes need focused human review? 10417 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 10417 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 | packages/ui/src/app/council/page.tsx | 70 | function modelSupportsDeepReasoning(model: string): boolean { | CODE |
| LOW | …/ui/src/components/company-profile/ProfileSections.tsx | 421 | function ExternalDependenciesSection({ profile, saving, onSave, pending, copy }: SectionComponentProps) { | CODE |
| LOW | packages/ui/src/lib/api.ts | 1789 | export async function forgetHistoryConversation(id: number): Promise<number> { | CODE |
| LOW | packages/ui/src/lib/api.ts | 2463 | export function sendWorkflowDesignerMessage( | CODE |
| LOW | packages/ui/src/lib/api.ts | 2474 | export function forceWorkflowDesignerDraft(sessionId: string): Promise<WorkflowDesignerTurn> { | CODE |
| LOW | packages/ui/src/lib/api.ts | 2478 | export async function getWorkflowDesignerSession( | CODE |
| LOW | packages/core/tests/conftest.py | 59 | def _no_background_open_loop_pass(monkeypatch: pytest.MonkeyPatch): | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 24 | def test_persona_includes_exec_email_identity(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 34 | def test_google_account_guidance_only_when_google_is_connected( | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 47 | def test_persona_uses_default_when_no_override() -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 57 | def test_persona_applies_persona_override_parameter() -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 72 | def test_identity_addendum_uses_default_display_name() -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 78 | def test_identity_addendum_honors_exec_display_name_env( | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 89 | def test_identity_addendum_forbids_impersonation() -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 102 | def test_persona_holds_the_line_on_followups() -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 115 | def test_identity_addendum_reinforced_in_inbound_email_section() -> None: | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 123 | def test_persona_has_single_authoritative_length_rule() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_cache_manager_persona.py | 142 | def test_persona_forbids_closing_offers() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_cache_manager_persona.py | 152 | def test_persona_brevity_never_suppresses_a_hedge() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_cache_manager_persona.py | 161 | def test_persona_follow_up_loop_is_bounded() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_cache_manager_persona.py | 170 | def test_persona_instructions_appended_inside_block_zero() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_cache_manager_persona.py | 180 | def test_blank_persona_instructions_keep_block_zero_byte_identical() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_cache_manager_persona.py | 190 | def test_tool_building_guidance_follows_the_chat_scripts_setting( | CODE |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 204 | def test_no_tool_building_guidance_without_the_sandbox(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_email_poller_microsoft.py | 72 | def test_known_sender_routes_to_executive_with_outlook_reply_block() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_email_poller_microsoft.py | 92 | def test_unrostered_sender_still_routes() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_email_poller_microsoft.py | 97 | def test_self_sent_and_automated_senders_are_skipped() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_email_poller_microsoft.py | 106 | def test_display_name_cannot_smuggle_into_from_addr() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_email_poller_microsoft.py | 114 | def test_error_payload_is_not_routed() -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_email_poller_microsoft.py | 120 | def test_mark_read_goes_through_the_microsoft_tool() -> None: | CODE |
| LOW | packages/core/tests/unit/test_email_poller_microsoft.py | 131 | def test_poll_once_lists_the_inbox_and_handles_each_ref() -> None: | CODE |
| LOW | …es/core/tests/unit/test_executive_peer_memory_kwarg.py | 57 | def test_stream_chat_skips_prefetch_when_peer_memory_context_provided() -> None: | CODE |
| LOW | …es/core/tests/unit/test_executive_peer_memory_kwarg.py | 95 | def test_stream_chat_still_prefetches_when_context_not_provided() -> None: | CODE |
| LOW | …es/core/tests/unit/test_executive_peer_memory_kwarg.py | 130 | def test_stream_chat_committee_skips_prefetch_when_provided() -> None: | CODE |
| LOW | …es/core/tests/unit/test_executive_peer_memory_kwarg.py | 176 | def test_chat_wrapper_forwards_peer_memory_context_kwarg() -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 135 | async def test_system_prompt_is_the_constant_and_cached(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 148 | async def test_tools_are_constant_and_sorted(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 176 | async def test_tool_choice_flips_only_at_budget_or_force( | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 187 | async def test_transcript_budget_forces_emit(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 195 | async def test_context_block_goes_in_first_user_turn(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 211 | async def test_previous_draft_goes_in_latest_user_turn(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 230 | async def test_trailing_assistant_turn_gets_continue_prompt(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 239 | async def test_options_are_clamped_not_rejected(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 255 | async def test_invalid_definition_gets_one_repair(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 275 | async def test_saved_custom_name_triggers_repair( | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 298 | async def test_editing_keeps_the_saved_name_without_a_repair( | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 323 | def test_edit_note_names_the_workflow() -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 330 | async def test_two_bad_drafts_raise_fixed_error(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 343 | async def test_server_owned_fields_are_reset(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 360 | async def test_question_while_forced_retries_then_fails(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 374 | async def test_forced_retry_never_sends_an_empty_assistant_turn( | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 393 | async def test_provider_error_is_fixed_string(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 415 | async def test_empty_transcript_is_rejected(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 421 | def test_context_block_lists_specialists_roster_and_taken_names( | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 439 | def test_context_block_flattens_and_bounds_roster_text( | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 459 | def test_context_block_survives_a_broken_roster(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 470 | def test_agent_is_in_council_but_not_consultable() -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 523 | async def test_search_is_answered_within_the_same_turn(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 550 | async def test_search_budget_per_turn(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 565 | async def test_endless_searching_is_a_fixed_error(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| 6784 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/ui/src/app/company-profile/page.tsx | 27 | // ── page ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/ui/src/components/company-profile/ProfileSections.tsx | 17 | // ── helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/ui/src/components/company-profile/ProfileSections.tsx | 30 | // ── Ask OE plumbing ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/ui/src/components/company-profile/ProfileSections.tsx | 91 | // ── sub-components ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/ui/src/components/company-profile/ProfileSections.tsx | 254 | // ── section components ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/ui/src/components/company-profile/ProfileSections.tsx | 618 | // ── composed section list ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/components/briefing/SoloPanels.tsx | 29 | // ── Your projects ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/components/briefing/SoloPanels.tsx | 138 | // ── Due soon ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/components/briefing/SoloPanels.tsx | 226 | // ── This week's review ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/components/briefing/SoloPanels.tsx | 287 | // ── Top three today ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 340 | // ── conversational onboarding (/onboard/interview/*) ───────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 3461 | // ── Fixtures ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 3579 | // ── Generated fixtures (LLM-authored) ─────────────────────────────────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 4751 | // ── Client-company slots (fractional / multi-client mode) ────────────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 4904 | // ── Practice layer: engagement metadata + cross-client cockpit ───────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 4961 | // ── Take the lead (Delegate → Take the lead) ──────────────── | COMMENT |
| MEDIUM | packages/ui/src/lib/api.ts | 5144 | // ── Custom tools (Settings → Advanced → Custom tools) ─────────────────────── | COMMENT |
| MEDIUM⚡ | …/core/tests/unit/test_openrouter_provider_lifecycle.py | 40 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/core/tests/unit/test_openrouter_provider_lifecycle.py | 42 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …kages/core/tests/unit/test_specialist_company_stage.py | 107 | # ── router: where the stage comes from ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …kages/core/tests/unit/test_specialist_company_stage.py | 243 | # ── the prompts themselves ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_take_the_lead.py | 54 | # ── the switches and rules ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_take_the_lead.py | 109 | # ── the gate ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_take_the_lead.py | 187 | # ── acting under the gate ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_take_the_lead.py | 502 | # ── what unattended passes get ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_take_the_lead.py | 712 | # ── waking on what comes in ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_take_the_lead.py | 880 | # ── in training ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_take_the_lead.py | 532 | # ── approving and declining ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_take_the_lead.py | 601 | # ── the routes ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_take_the_lead.py | 665 | # ── as you ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_take_the_lead.py | 801 | # ── the leading pass finds and uses the deployment's tools ─────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_sales_specialist.py | 59 | # ── the agent and its registration ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_sales_specialist.py | 109 | # ── knowledge domain wiring ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_sales_specialist.py | 143 | # ── retrieval, against a real ChromaDB store ───────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_sales_specialist.py | 200 | # ── eval scenarios ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/core/tests/unit/test_delegation_evals.py | 107 | # ── The inbox watcher's scenarios (type: inbox) ───────────────────────────── | STRING |
| MEDIUM⚡ | packages/core/tests/unit/test_web_search_tool.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_web_search_tool.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_web_search_tool.py | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_web_search_tool.py | 119 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_web_search_tool.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_web_search_tool.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/core/tests/unit/test_web_search_tool.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/core/tests/unit/test_web_search_tool.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 118 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 120 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 199 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 316 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 318 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 355 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 357 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 369 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 371 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_openrouter_translator.py | 17 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_openrouter_translator.py | 19 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_openrouter_translator.py | 432 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_openrouter_translator.py | 434 | # -------------------------------------------------------------------------- | COMMENT |
| 756 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/run_evals.py | 99 | except Exception: | CODE |
| LOW | evals/run_evals.py | 175 | except Exception: | CODE |
| LOW | evals/run_evals.py | 325 | except Exception as e: | CODE |
| LOW | evals/run_evals.py | 339 | except Exception as e: | CODE |
| LOW | evals/run_evals.py | 357 | except Exception as e: | CODE |
| LOW | evals/run_evals.py | 375 | except Exception as e: | CODE |
| LOW | evals/judges/triage_judge.py | 113 | except Exception: | STRING |
| LOW | scripts/mint-google-token.py | 120 | except Exception as exc: # noqa: BLE001 — surface, then keep waiting | CODE |
| LOW | packages/core/tests/unit/test_saved_tools.py | 279 | except Exception: | CODE |
| MEDIUM | packages/core/tests/unit/test_review_store.py | 689 | def _boot() -> None: | CODE |
| LOW | packages/core/tests/unit/test_review_store.py | 692 | except Exception as exc: # pragma: no cover - only on regression | CODE |
| LOW | packages/core/openexecutive/config.py | 1417 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/clients/cockpit.py | 98 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/cockpit.py | 178 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 664 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 670 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 678 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 687 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 696 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 766 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 775 | except Exception: | CODE |
| LOW⚡ | packages/core/openexecutive/clients/slots.py | 780 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 222 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 262 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 277 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 601 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 610 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 643 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 801 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 932 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 957 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 970 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 1047 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 1066 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 147 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 158 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 173 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 255 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 268 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 281 | except Exception: | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 364 | except Exception: | CODE |
| LOW | packages/core/openexecutive/evals/runner.py | 266 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/evals/runner.py | 365 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/evals/runner.py | 452 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/evals/runner.py | 557 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/evals/judges.py | 204 | except Exception: | CODE |
| LOW | packages/core/openexecutive/evals/judges.py | 254 | except Exception: | CODE |
| LOW | packages/core/openexecutive/evals/judges.py | 317 | except Exception: | CODE |
| LOW | packages/core/openexecutive/evals/judges.py | 397 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/style.py | 357 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/style.py | 535 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/style.py | 721 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/attunement/style.py | 768 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/style.py | 828 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 311 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 692 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 738 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 807 | except Exception: | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 888 | except Exception as exc: | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 1129 | except Exception: | CODE |
| 900 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/run_evals.py | 7 | CODE | |
| LOW | evals/judges/triage_judge.py | 7 | CODE | |
| LOW | evals/judges/executive_quality_judge.py | 2 | CODE | |
| LOW | docker/honcho/embed_server.py | 22 | CODE | |
| LOW | scripts/connect-own-outlook.py | 30 | CODE | |
| LOW | scripts/pr_checks.py | 30 | CODE | |
| LOW | scripts/connect-own-gmail.py | 24 | CODE | |
| LOW | scripts/mint-google-token.py | 20 | CODE | |
| LOW | scripts/make-caller-keys.py | 20 | CODE | |
| LOW | scripts/mint-caller-assertion.py | 20 | CODE | |
| LOW | scripts/changed_tests.py | 13 | CODE | |
| LOW | packages/core/tests/conftest.py | 1 | CODE | |
| LOW | packages/core/tests/unit/test_cache_manager_persona.py | 2 | CODE | |
| LOW | packages/core/tests/unit/test_email_poller_microsoft.py | 8 | CODE | |
| LOW | …es/core/tests/unit/test_executive_peer_memory_kwarg.py | 6 | CODE | |
| LOW | packages/core/tests/unit/test_workflow_designer.py | 9 | CODE | |
| LOW | packages/core/tests/unit/test_document_tools.py | 2 | CODE | |
| LOW | packages/core/tests/unit/test_workflow_run_tools.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_chat_route_alert_trust.py | 12 | CODE | |
| LOW | …/core/tests/unit/test_openrouter_provider_lifecycle.py | 8 | CODE | |
| LOW | packages/core/tests/unit/_fake_store.py | 14 | CODE | |
| LOW | packages/core/tests/unit/test_session_ownership.py | 7 | CODE | |
| LOW | packages/core/tests/unit/test_extraction_gate.py | 12 | CODE | |
| LOW | packages/core/tests/unit/test_briefing_narrative.py | 9 | CODE | |
| LOW | …kages/core/tests/unit/test_specialist_company_stage.py | 9 | CODE | |
| LOW | packages/core/tests/unit/test_delegation_drafts.py | 3 | CODE | |
| LOW | packages/core/tests/unit/test_department_tools.py | 7 | CODE | |
| LOW | packages/core/tests/unit/test_briefing_context.py | 2 | CODE | |
| LOW | packages/core/tests/unit/test_take_the_lead.py | 3 | CODE | |
| LOW | packages/core/tests/unit/test_drive_sync.py | 3 | CODE | |
| LOW | packages/core/tests/unit/test_departments_route.py | 5 | CODE | |
| LOW | …kages/core/tests/unit/test_executive_briefing_block.py | 4 | CODE | |
| LOW | packages/core/tests/unit/test_sales_specialist.py | 10 | CODE | |
| LOW | packages/core/tests/unit/test_delegation_evals.py | 3 | CODE | |
| LOW | packages/core/tests/unit/test_decision_tools.py | 4 | CODE | |
| LOW | packages/core/tests/unit/test_outbound_context_store.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_target_validation.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_mail_lock_window.py | 5 | CODE | |
| LOW | packages/core/tests/unit/test_sessions_route_scoping.py | 7 | CODE | |
| LOW | packages/core/tests/unit/test_chat_scripts.py | 10 | CODE | |
| LOW | packages/core/tests/unit/test_web_search_tool.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_health_route.py | 7 | CODE | |
| LOW | packages/core/tests/unit/test_audit_context.py | 14 | CODE | |
| LOW | packages/core/tests/unit/test_guide_prebuilt.py | 6 | CODE | |
| LOW | packages/core/tests/unit/test_specialist_fanout_cap.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_delegation_card_drafts.py | 3 | CODE | |
| LOW | packages/core/tests/unit/test_artifact_delivery.py | 12 | CODE | |
| LOW | …ages/core/tests/unit/test_email_poller_no_committee.py | 9 | CODE | |
| LOW | packages/core/tests/unit/test_channel_context.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_mail_named_contact.py | 3 | CODE | |
| LOW | …es/core/tests/unit/test_chat_route_parallel_context.py | 8 | CODE | |
| LOW | packages/core/tests/unit/test_alerts_routes.py | 2 | CODE | |
| LOW | packages/core/tests/unit/test_top_three.py | 4 | CODE | |
| LOW | packages/core/tests/unit/test_discord_roster_hold.py | 8 | CODE | |
| LOW | …ages/core/tests/unit/test_mcp_gateway_email_context.py | 11 | CODE | |
| LOW | packages/core/tests/unit/test_briefing_ranking.py | 2 | CODE | |
| LOW | packages/core/tests/unit/test_solo_executive.py | 7 | CODE | |
| LOW | …ckages/core/tests/unit/test_dynamic_workflow_resume.py | 7 | CODE | |
| LOW | packages/core/tests/unit/test_tool_catalog.py | 4 | CODE | |
| LOW | packages/core/tests/unit/test_watchlist_routes.py | 3 | CODE | |
| 799 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/tests/unit/test_narrative_refresh_tick.py | 33 | def _settings(monkeypatch: pytest.MonkeyPatch, minutes: int = 10) -> None: | CODE |
| LOW | packages/core/tests/unit/test_today_route.py | 25 | def _setup_isolated_db(db: Path, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | …s/core/tests/unit/test_workspace_timezone_consumers.py | 25 | def _set_zone(zone: str | None) -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_authority_gate.py | 47 | def _set_dept_level(slug: str, level: AuthorityLevel) -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_setup_checks.py | 711 | def set_beat(started: datetime | None, tick: tuple[datetime, str] | None = None) -> None: | CODE |
| LOW | packages/core/tests/unit/test_slack_lifespan.py | 35 | def _settings_with_slack(monkeypatch: pytest.MonkeyPatch, **overrides: Any) -> None: | CODE |
| LOW | packages/core/tests/unit/test_slack_handler_async.py | 115 | def update_session_timestamp(self, session_id: str, **_kw: Any) -> None: | CODE |
| LOW⚡ | …ckages/core/tests/unit/test_onboarding_wizard_route.py | 139 | def _set_mode(monkeypatch: pytest.MonkeyPatch, mode: str) -> None: | CODE |
| LOW | packages/core/tests/unit/test_principal_briefs.py | 21 | def _setup_isolated_db(db: Path, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_executive_reflection.py | 32 | def _setup_isolated_db(db: Path, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_onboarding_interview.py | 309 | def _set_mode(monkeypatch: pytest.MonkeyPatch, mode: str, **role: Any) -> None: | CODE |
| LOW | packages/core/tests/unit/test_workflow_routes.py | 575 | def _set_mode(mode: str) -> None: | CODE |
| LOW | …ckages/core/tests/integration/test_scheduler_runner.py | 125 | def _set_profile_active(monkeypatch: pytest.MonkeyPatch, *, active: bool) -> None: | CODE |
| LOW | packages/core/openexecutive/guide/__init__.py | 13 | __all__ = [ | CODE |
| LOW | packages/core/openexecutive/clients/cockpit.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/clients/slots.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/clients/__init__.py | 21 | __all__ = [ | CODE |
| LOW | packages/core/openexecutive/clients/rotation.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/evals/runner.py | 67 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/attunement/style.py | 61 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/attunement/open_loops.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/attunement/outcomes.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/facts.py | 60 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/facts.py | 443 | def set_needs_approval(person_id: int, on: bool, db_path: Path | None = None) -> None: | CODE |
| LOW | packages/core/openexecutive/memory/facts.py | 796 | __all__ = [ | CODE |
| LOW | …core/openexecutive/memory/initiatives_consolidation.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/decision_ledger.py | 47 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/history_drafts.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/history_drafts.py | 61 | __all__ = ["notes_for_draft"] | CODE |
| LOW | packages/core/openexecutive/memory/history_chat.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/history_notes.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/episodic.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/history_brief.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/drive_reads.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ckages/core/openexecutive/memory/workspace_settings.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/honcho_client.py | 54 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/honcho_client.py | 390 | def set_active_workspace_id(workspace_id: str, *, fixture_name: str | None = None) -> None: | CODE |
| LOW | packages/core/openexecutive/memory/session_store.py | 39 | def update_session_title(session_id: str, title: str, db_path: Path = DB_PATH) -> None: | CODE |
| LOW | packages/core/openexecutive/memory/session_store.py | 44 | def update_session_timestamp(session_id: str, db_path: Path = DB_PATH) -> None: | CODE |
| LOW | packages/core/openexecutive/memory/history_reminders.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/history_reminders.py | 126 | __all__ = ["maybe_remind", "remind_due", "reminder_text"] | CODE |
| LOW | packages/core/openexecutive/memory/conversations.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/memory/history.py | 62 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ages/core/openexecutive/providers/openai_compatible.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ges/core/openexecutive/providers/openrouter_catalog.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/providers/__init__.py | 20 | __all__ = [ | CODE |
| LOW | packages/core/openexecutive/providers/translator.py | 447 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/resumer.py | 78 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/wait_for_human.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/playbooks.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/step_script.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/gate_delivery.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/gate_delivery.py | 255 | __all__ = ["DeliveryStatus", "deliver_gate_question"] | CODE |
| LOW | packages/core/openexecutive/workflows/python_job.py | 65 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/quick.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | …kages/core/openexecutive/workflows/inbound_resolver.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/morning_brief.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/core/openexecutive/workflows/morning_brief.py | 425 | __all__ = ["BRIEF_KIND", "MorningBriefWorkflow", "MorningBriefInput"] | CODE |
| LOW | packages/core/openexecutive/workflows/__init__.py | 146 | __all__ = [ | CODE |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 48 | logger = logging.getLogger(__name__) | CODE |
| 242 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/workspace-mcp-launch.sh | 1 | #!/usr/bin/env sh | COMMENT |
| LOW | docker/workspace-mcp-launch.sh | 41 | # string "all " — which is not equal to "all", so the branch below passed | COMMENT |
| LOW | docker/ms365-mcp-launch.sh | 1 | #!/usr/bin/env sh | COMMENT |
| LOW | docker/ms365-mcp-launch.sh | 61 | # `--access-token` (the only argument it may come with) prints an access | COMMENT |
| LOW | docker/ms365-mcp-launch.sh | 81 | # server's account tools (login, logout, verify-login, list-accounts, | COMMENT |
| LOW | docker/docker-compose.yml | 1 | services: | COMMENT |
| LOW | docker/honcho/config.toml | 1 | # Honcho server config baked into the Open Executive Docker image. | COMMENT |
| LOW | docker/honcho/config.toml | 21 | # A `base_url` written directly under `[…model_config]` is silently | COMMENT |
| LOW | docker/honcho/config.toml | 101 | [dream.induction_model_config] | COMMENT |
| LOW | docs/confluence_sync_setup.md | 61 | ``` | COMMENT |
| LOW | packages/ui/next.config.ts | 1 | import path from "node:path"; | COMMENT |
| LOW | packages/ui/next.config.ts | 21 | // (POST /documents, 50 MB) with room for the multipart envelope, so a | COMMENT |
| LOW | packages/ui/src/middleware.ts | 1 | // Gate every page + non-auth API route. The decision, and the response a | COMMENT |
| LOW | packages/ui/src/auth.ts | 201 | // hardcoded `true`: that would trust the host on any real deployment | COMMENT |
| LOW | packages/ui/src/auth.ts | 221 | // Never both: local login is only ever on while neither Google nor SSO is | COMMENT |
| LOW | packages/ui/src/app/page.tsx | 141 | // flag is cleared either way, so the Agent Activity panel never sticks. | COMMENT |
| LOW | packages/ui/src/app/onboard/page.tsx | 21 | // workspace mode and role, and then asks only about what is still missing | COMMENT |
| LOW | packages/ui/src/app/audit/session/[id]/page.tsx | 221 | // Auto-layout via @dagrejs/dagre. | COMMENT |
| LOW | packages/ui/src/components/Message.tsx | 21 | isStreaming?: boolean; | COMMENT |
| LOW | packages/ui/src/components/Chat.tsx | 41 | initialMessages?: ChatMessage[]; | COMMENT |
| LOW | packages/ui/src/components/Chat.tsx | 241 | }; | COMMENT |
| LOW | packages/ui/src/components/RepliesWaiting.tsx | 21 | sendQuestion, | COMMENT |
| LOW | packages/ui/src/components/Briefing.tsx | 121 | const [loading, setLoading] = useState(true); | COMMENT |
| LOW | packages/ui/src/components/settings/HandleItCard.tsx | 21 | type LeadRule, | COMMENT |
| LOW | packages/ui/src/components/shell/PageSideNav.tsx | 1 | "use client"; | COMMENT |
| LOW | packages/ui/src/components/briefing/ProposalCard.tsx | 241 | proposal.routed_to_person_id != null | COMMENT |
| LOW | packages/ui/src/components/memories/CadenceSection.tsx | 21 | formatRunAt, | COMMENT |
| LOW | packages/ui/src/lib/allowlist.ts | 1 | // Who may sign in. Two ADDITIVE sources, never one overriding the other | COMMENT |
| LOW | packages/ui/src/lib/crossSite.ts | 1 | // Refuses state-changing requests to the backend proxy that another site made | COMMENT |
| LOW | packages/ui/src/lib/markdownImages.ts | 1 | // Whether an image in the Executive's reply may load inline. A reply can quote | COMMENT |
| LOW | packages/ui/src/lib/use-stoppable-turn.ts | 1 | "use client"; | COMMENT |
| LOW | packages/ui/src/lib/api.ts | 21 | link?: string | null; | COMMENT |
| LOW | packages/ui/src/lib/api.ts | 161 | committeeReview?: boolean; | COMMENT |
| LOW | packages/ui/src/lib/api.ts | 1021 | COMMENT | |
| LOW | packages/ui/src/lib/api.ts | 4221 | // external/watchlist signal was pulled into the action lane by its severity | COMMENT |
| LOW | packages/ui/src/lib/api.ts | 4301 | people: PersonBriefItem[]; | COMMENT |
| LOW | packages/ui/src/lib/handled.ts | 1 | // Pure logic behind the briefing's handled rail (HandledOvernightPanel in | COMMENT |
| LOW | packages/ui/src/lib/turn-id.ts | 1 | // Client-minted id for one chat turn. The client needs an id *before* the | COMMENT |
| LOW | packages/ui/src/lib/turnStatus.ts | 1 | // What the chat shows while a turn is running, so that a long turn never | COMMENT |
| LOW | packages/ui/src/lib/localLogin.ts | 1 | // Local login: running Open Executive on your own computer without setting | COMMENT |
| LOW | packages/ui/src/lib/briefing-memory.ts | 1 | // Most briefing handoff seeds quote the Executive's own card (an artifact's | COMMENT |
| LOW | packages/ui/src/lib/oidc.ts | 1 | // SSO sign-in: any OpenID Connect identity provider (Keycloak, Okta, Auth0, | COMMENT |
| LOW | packages/core/tests/conftest.py | 21 | # retrieval tests hard-code distances either side of the 0.55 default. Because | COMMENT |
| LOW | …s/core/tests/unit/test_chat_route_seen_channel_refs.py | 161 | # --------------------------------------------------------------------- # | COMMENT |
| LOW | packages/core/tests/unit/test_honcho_department.py | 641 | monkeypatch: pytest.MonkeyPatch, | COMMENT |
| LOW | packages/core/tests/unit/test_episodic.py | 561 | COMMENT | |
| LOW | packages/core/openexecutive/config.py | 101 | env_ignore_empty=True, | COMMENT |
| LOW | packages/core/openexecutive/config.py | 141 | # per-collection chunk counts can be tuned without code edits — and so a | COMMENT |
| LOW | packages/core/openexecutive/config.py | 161 | # Telegram, Discord, Google Chat). The closest matches are kept first. | COMMENT |
| LOW | packages/core/openexecutive/config.py | 181 | # Toggle that routes Claude calls through OpenRouter (so usage is | COMMENT |
| LOW | packages/core/openexecutive/config.py | 261 | # Enabling the toggle without a key would silently 401 every call. | COMMENT |
| LOW | packages/core/openexecutive/config.py | 281 | # ROUTING_MODEL=llama3.3 | COMMENT |
| LOW | packages/core/openexecutive/config.py | 301 | # Anthropic request schema. A plain self-hosted server (Ollama, vLLM) or | COMMENT |
| LOW | packages/core/openexecutive/config.py | 361 | # GET /version asks GitHub for the latest Open Executive release (at most | COMMENT |
| LOW | packages/core/openexecutive/config.py | 381 | # Hard ceiling on the prefetch call so a Honcho outage can't stall the | COMMENT |
| LOW | packages/core/openexecutive/config.py | 401 | def _validate_honcho(self) -> "Settings": | COMMENT |
| LOW | packages/core/openexecutive/config.py | 421 | # Extra wall-clock allowance added to chat_stream_timeout_s when a request | COMMENT |
| LOW | packages/core/openexecutive/config.py | 541 | return "complete" if not raw or raw.startswith("$") else raw | COMMENT |
| LOW | packages/core/openexecutive/config.py | 581 | # one-line pointer left behind in the channel) — except when the | COMMENT |
| LOW | packages/core/openexecutive/config.py | 641 | COMMENT | |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 87 | │ │ ├── knowledge/ # ChromaDB store + RAG pipeline | CODE |
| MEDIUM | evals/run_evals.py | 252 | # The chat path's RAG layer reads ``review_items`` from the shared | COMMENT |
| MEDIUM | docs/architecture.md | 20 | │ │ ├── knowledge/ # ChromaDB store + RAG pipeline | CODE |
| MEDIUM | packages/core/tests/conftest.py | 20 | # The RAG distance gates are read by retrieve() at call time and several | COMMENT |
| MEDIUM | packages/core/tests/unit/test_engagement_intake.py | 144 | # …and was appended to the bundle as a company doc for RAG indexing. | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_inbound_hydration.py | 208 | assert strip(quoted) == quoted # content, not scaffolding | CODE |
| MEDIUM⚡ | packages/core/tests/unit/test_inbound_hydration.py | 212 | assert strip(unterminated) == unterminated # keep scaffolding over eating the message | CODE |
| MEDIUM⚡ | packages/core/tests/unit/test_channel_tool_filter.py | 210 | # Static scaffolding must survive the refactor. | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_channel_tool_filter.py | 239 | # Static scaffolding must survive the refactor. | COMMENT |
| MEDIUM | packages/core/tests/unit/test_monitoring_pipeline.py | 235 | # Scan orchestration — the heart of the pipeline | COMMENT |
| MEDIUM | packages/core/tests/unit/test_router_retrieval.py | 88 | # Each agent receives its own RAG block, not the other specialist's. | COMMENT |
| MEDIUM | packages/core/tests/unit/test_honcho_client.py | 920 | # --- prompt scaffolding never becomes the person's words -------------------- | COMMENT |
| MEDIUM | packages/core/tests/unit/test_dynamic_workflow_run.py | 81 | # placeholder rendered into the goal, RAG fetched | COMMENT |
| MEDIUM | packages/core/openexecutive/config.py | 138 | # ---- Knowledge retrieval (RAG) tuning ------------------------------ | COMMENT |
| MEDIUM | packages/core/openexecutive/config.py | 142 | # RAG ablation run can disable builtin retrieval by setting | COMMENT |
| MEDIUM | packages/core/openexecutive/config.py | 176 | # silently fanning out (each specialist call carries its own RAG + memory | COMMENT |
| MEDIUM | …core/openexecutive/memory/initiatives_consolidation.py | 124 | # Track ids already claimed by an emitted cluster so an LLM hallucination | COMMENT |
| MEDIUM | packages/core/openexecutive/memory/honcho_client.py | 1809 | # session too, so the same scaffolding rule as sync_turn applies. | COMMENT |
| MEDIUM | packages/core/openexecutive/providers/translator.py | 655 | # whose thinking was dropped; other vendors lose their chain of thought). | COMMENT |
| MEDIUM | packages/core/openexecutive/workflows/mbr.py | 167 | async def run( # noqa: C901 — linear orchestration | CODE |
| MEDIUM | …s/core/openexecutive/workflows/executive_reflection.py | 70 | # multi-turn agentic loop. The fifth leaves room for a search_knowledge | COMMENT |
| MEDIUM | packages/core/openexecutive/workflows/dynamic.py | 218 | # No synthetic content — just blank scaffolding the user fills in. | COMMENT |
| MEDIUM | …ges/core/openexecutive/workflows/executive_research.py | 721 | # recall it via RAG. Separate collection, clearly labelled at | COMMENT |
| MEDIUM | packages/core/openexecutive/workflows/board_prep.py | 190 | async def run( # noqa: C901 — orchestration sequence is intentionally linear | CODE |
| MEDIUM⚡ | packages/core/openexecutive/scheduler/nudge_engine.py | 590 | # Scan orchestration | COMMENT |
| MEDIUM | packages/core/openexecutive/integrations/attachments.py | 334 | # This is a systemic risk shared with any RAG system that ingests | COMMENT |
| MEDIUM | …ages/core/openexecutive/architecture/prebuilt/api.json | 4 | "markdown": "The FastAPI surface lives in `openexecutive.api.main`, which mounts one router per topic. A shared-secret | CODE |
| MEDIUM | …ore/openexecutive/architecture/prebuilt/workflows.json | 4 | "markdown": "Workflows are deterministic, multi-step orchestrations. The built-ins are registered in `openexecutive.wo | CODE |
| MEDIUM | …ore/openexecutive/architecture/prebuilt/lifecycle.json | 4 | "markdown": "A single chat message makes a full round-trip through the API, the orchestrator's tool-use loop, a parall | CODE |
| MEDIUM | …/openexecutive/architecture/prebuilt/integrations.json | 4 | "markdown": "External channels connect callers to the Executive. Each inbound adapter resolves the sender to a Person | CODE |
| MEDIUM | …ore/openexecutive/architecture/prebuilt/scheduler.json | 4 | "markdown": "The scheduler is an asyncio task started in the FastAPI lifespan (`openexecutive.scheduler.runner.run_sch | CODE |
| MEDIUM | packages/core/openexecutive/audit/logger.py | 69 | "knowledge_retrieval", # RAG retrieve() — chunks, scores, source files | CODE |
| MEDIUM⚡ | packages/core/openexecutive/knowledge/retriever.py | 30 | # Minimum character length for RAG to fire. Below this we treat the | COMMENT |
| MEDIUM⚡ | packages/core/openexecutive/knowledge/retriever.py | 34 | # bypass RAG for meaningful Chinese/Japanese queries. Threshold sits | COMMENT |
| MEDIUM | packages/core/openexecutive/knowledge/retriever.py | 279 | # "we considered RAG and gated it out". Longer-but-tangential queries | COMMENT |
| MEDIUM⚡ | packages/core/openexecutive/knowledge/retriever.py | 297 | # take effect on the next call — this is the lever the RAG ablation | COMMENT |
| MEDIUM⚡ | packages/core/openexecutive/knowledge/retriever.py | 298 | # harness toggles (KNOWLEDGE_BUILTIN_N_RESULTS=0 disables builtin RAG). | COMMENT |
| MEDIUM | packages/core/openexecutive/knowledge/retriever.py | 327 | # lever the RAG ablation harness flips). Skip the query rather than | COMMENT |
| MEDIUM⚡ | packages/core/openexecutive/api/routes/knowledge.py | 536 | # Search — diagnostic "what would RAG retrieve for this question" endpoint. | COMMENT |
| MEDIUM | packages/core/openexecutive/api/routes/knowledge.py | 698 | # that advertises itself as showing "what RAG would surface" must drop | COMMENT |
| MEDIUM | packages/core/openexecutive/monitoring/pipeline.py | 355 | # Scan orchestration | COMMENT |
| MEDIUM | packages/core/openexecutive/orchestrator/executive.py | 943 | # flow chart show "what the agent saw" without re-running RAG. | COMMENT |
| MEDIUM | packages/core/openexecutive/orchestrator/executive.py | 1301 | # Callers can pre-resolve this in parallel with RAG and episodic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/run_evals.py | 211 | CODE | |
| LOW | scripts/pr_checks.py | 298 | CODE | |
| LOW | scripts/changed_tests.py | 49 | CODE | |
| LOW | packages/core/tests/unit/test_artifact_routes.py | 485 | CODE | |
| LOW | packages/core/tests/unit/test_mail_touched_lockdown.py | 315 | CODE | |
| LOW | packages/core/tests/unit/test_mail_touched_lockdown.py | 383 | CODE | |
| LOW | packages/core/tests/unit/test_confluence_sync.py | 100 | CODE | |
| LOW | packages/core/tests/unit/test_delegation_reply_send.py | 371 | CODE | |
| LOW | packages/core/openexecutive/clients/rotation.py | 91 | CODE | |
| LOW | packages/core/openexecutive/evals/runner.py | 285 | CODE | |
| LOW | packages/core/openexecutive/evals/runner.py | 380 | CODE | |
| LOW | packages/core/openexecutive/evals/runner.py | 392 | CODE | |
| LOW | …core/openexecutive/memory/initiatives_consolidation.py | 85 | CODE | |
| LOW | …core/openexecutive/memory/initiatives_consolidation.py | 155 | CODE | |
| LOW | packages/core/openexecutive/memory/episodic.py | 164 | CODE | |
| LOW | packages/core/openexecutive/memory/episodic.py | 2567 | CODE | |
| LOW | packages/core/openexecutive/memory/session_store.py | 223 | CODE | |
| LOW | packages/core/openexecutive/memory/conversations.py | 148 | CODE | |
| LOW | packages/core/openexecutive/providers/feature_gate.py | 157 | CODE | |
| LOW | packages/core/openexecutive/providers/translator.py | 132 | CODE | |
| LOW | packages/core/openexecutive/providers/translator.py | 242 | CODE | |
| LOW | packages/core/openexecutive/providers/translator.py | 256 | CODE | |
| LOW | packages/core/openexecutive/providers/translator.py | 354 | CODE | |
| LOW | packages/core/openexecutive/workflows/saved_tools.py | 86 | CODE | |
| LOW | packages/core/openexecutive/workflows/resumer.py | 735 | CODE | |
| LOW | packages/core/openexecutive/workflows/persistence.py | 58 | CODE | |
| LOW | packages/core/openexecutive/workflows/step_script.py | 368 | CODE | |
| LOW | packages/core/openexecutive/workflows/step_script.py | 593 | CODE | |
| LOW | packages/core/openexecutive/workflows/python_job.py | 324 | CODE | |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 331 | CODE | |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 604 | CODE | |
| LOW | packages/core/openexecutive/workflows/dynamic.py | 771 | CODE | |
| LOW | packages/core/openexecutive/workflows/dynamic.py | 552 | CODE | |
| LOW | packages/core/openexecutive/workflows/dynamic_store.py | 28 | CODE | |
| LOW | packages/core/openexecutive/workflows/designer.py | 458 | CODE | |
| LOW | packages/core/openexecutive/workflows/dynamic_models.py | 248 | CODE | |
| LOW | packages/core/openexecutive/workflows/dynamic_models.py | 293 | CODE | |
| LOW | packages/core/openexecutive/workflows/dynamic_models.py | 461 | CODE | |
| LOW | packages/core/openexecutive/workflows/action_step.py | 559 | CODE | |
| LOW | packages/core/openexecutive/workflows/action_step.py | 815 | CODE | |
| LOW | packages/core/openexecutive/workflows/action_step.py | 484 | CODE | |
| LOW | …ges/core/openexecutive/workflows/executive_research.py | 794 | CODE | |
| LOW | …ges/core/openexecutive/workflows/executive_research.py | 1033 | CODE | |
| LOW | …ges/core/openexecutive/workflows/executive_research.py | 1243 | CODE | |
| LOW | …ges/core/openexecutive/workflows/executive_research.py | 1472 | CODE | |
| LOW | packages/core/openexecutive/workflows/tool_catalog.py | 219 | CODE | |
| LOW | packages/core/openexecutive/scheduler/runner.py | 215 | CODE | |
| LOW | packages/core/openexecutive/scheduler/runner.py | 356 | CODE | |
| LOW | packages/core/openexecutive/scheduler/runner.py | 1902 | CODE | |
| LOW | packages/core/openexecutive/scheduler/runner.py | 2052 | CODE | |
| LOW | packages/core/openexecutive/departments/prompt_block.py | 185 | CODE | |
| LOW | packages/core/openexecutive/cli/fixture_loader.py | 711 | CODE | |
| LOW | packages/core/openexecutive/cli/fixture_loader.py | 1701 | CODE | |
| LOW | packages/core/openexecutive/delegation/replies.py | 122 | CODE | |
| LOW | packages/core/openexecutive/delegation/action_cards.py | 249 | CODE | |
| LOW | packages/core/openexecutive/delegation/action_cards.py | 439 | CODE | |
| LOW | packages/core/openexecutive/delegation/action_cards.py | 560 | CODE | |
| LOW | packages/core/openexecutive/delegation/voice.py | 327 | CODE | |
| LOW | packages/core/openexecutive/delegation/outlook.py | 385 | CODE | |
| LOW | packages/core/openexecutive/delegation/reply_send.py | 183 | CODE | |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/pr_checks.py | 349 | except OSError: | CODE |
| HIGH | packages/core/tests/unit/test_attachment_isolation.py | 237 | except RuntimeError: | CODE |
| HIGH | packages/core/tests/unit/test_company_profile.py | 130 | except OSError: | CODE |
| HIGH | packages/core/tests/unit/test_phase8_hardening.py | 214 | except asyncio.CancelledError: | CODE |
| HIGH | packages/core/openexecutive/clients/slots.py | 262 | except Exception: | CODE |
| HIGH | packages/core/openexecutive/workflows/persistence.py | 411 | except ValueError: | CODE |
| HIGH | packages/core/openexecutive/workflows/python_job.py | 417 | except (OSError, ValueError, IndexError): | CODE |
| HIGH | packages/core/openexecutive/workflows/python_job.py | 208 | except OSError: | CODE |
| HIGH | …es/core/openexecutive/workflows/department_check_in.py | 343 | except Exception: # noqa: BLE001 - mirror must not break the workflow. | CODE |
| HIGH | packages/core/openexecutive/workflows/_synthesis.py | 113 | except (ValueError, TypeError): | CODE |
| HIGH | packages/core/openexecutive/scheduler/runner.py | 624 | except Exception: | CODE |
| HIGH | packages/core/openexecutive/departments/store.py | 666 | except Exception: # noqa: BLE001 - mirror must never break the SQL path. | CODE |
| HIGH | packages/core/openexecutive/cli/fixture_loader.py | 324 | except Exception: | CODE |
| HIGH | …ckages/core/openexecutive/integrations/telegram_bot.py | 104 | except (ValueError, TypeError, AttributeError): | CODE |
| HIGH | packages/core/openexecutive/integrations/discord_bot.py | 1669 | except (ValueError, TypeError, AttributeError): | CODE |
| HIGH | packages/core/openexecutive/knowledge/store.py | 240 | except Exception: | CODE |
| HIGH | packages/core/openexecutive/knowledge/isolated.py | 251 | except (ImportError, ValueError, OSError): | CODE |
| HIGH | packages/core/openexecutive/api/routes/documents.py | 351 | except (TypeError, ValueError): | CODE |
| HIGH | packages/core/openexecutive/api/routes/chat.py | 314 | except (asyncio.CancelledError, StopAsyncIteration): | CODE |
| HIGH | packages/core/openexecutive/monitoring/sources/query.py | 264 | except (TypeError, ValueError): | CODE |
| HIGH | …kages/core/openexecutive/orchestrator/take_the_lead.py | 1150 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/core/tests/unit/test_extraction_gate.py | 1140 | """The model wrote JSON null, not the word "None"; the prompt must not | STRING |
| HIGH | packages/core/tests/unit/test_today_route.py | 158 | # (narrative null) and its background task populates the cache, so | COMMENT |
| HIGH⚡ | packages/core/tests/unit/test_onedrive_sync.py | 577 | try {{ await m.accessToken({{ scopes, authManager: fake }}); out.push("allowed"); }} | CODE |
| HIGH⚡ | packages/core/tests/unit/test_onedrive_sync.py | 578 | catch (e) {{ out.push("refused"); }} | CODE |
| HIGH⚡ | packages/core/tests/unit/test_onedrive_sync.py | 580 | try {{ await m.accessToken({{ scopes: ["Files.Read.All"], authManager: {{ ...fake, getCurrentAccount: async () => null } | CODE |
| HIGH⚡ | packages/core/tests/unit/test_onedrive_sync.py | 581 | catch (e) {{ out.push(e.errorCode); }} | CODE |
| HIGH | packages/core/tests/unit/test_architecture_generator.py | 69 | _text_delta('lo", "mermaid": null}'), | CODE |
| HIGH⚡ | packages/core/tests/unit/test_architecture_generator.py | 86 | assert deltas == ['{"markdown": "Hel', 'lo", "mermaid": null}'] # non-text skipped | CODE |
| HIGH⚡ | packages/core/tests/unit/test_architecture_generator.py | 93 | raw = '```json\n{"markdown": "x", "mermaid": null}\n```' | CODE |
| HIGH⚡ | packages/core/tests/unit/test_architecture_generator.py | 99 | raw = '{"markdown":"hi\x01there","mermaid":null}' | CODE |
| HIGH | packages/core/tests/unit/test_python_job.py | 188 | hog = "from pyodide.code import run_js\nrun_js('let a=[]; for(let i=0;i<8;i++){const b=new Uint8Array(2**30); b.fill | CODE |
| HIGH | packages/core/tests/unit/test_action_step.py | 305 | assert not act.looks_like_error('{"values": [1], "error": null}') | CODE |
| HIGH | packages/core/openexecutive/utils/prebuilt_store.py | 9 | ``markdown``, ``mermaid`` (string or null), and ``generated_at`` (ISO-8601). | STRING |
| HIGH | packages/core/openexecutive/api/routes/today.py | 2002 | anyone else gets null, since it is about the owner's channels.""" | STRING |
| HIGH | …ckages/core/openexecutive/orchestrator/people_tools.py | 181 | "person_id=null). The person must already exist in the roster — call " | CODE |
| HIGH | …ages/core/openexecutive/orchestrator/artifact_tools.py | 132 | "strings, numbers, booleans or null; text is always " | CODE |
| HIGH | …ages/core/openexecutive/orchestrator/schedule_tools.py | 1301 | "(string / number / boolean / null) or lists of those — no " | CODE |
| HIGH | …ckages/core/openexecutive/orchestrator/debug_events.py | 40 | # `turn_id` is always present (possibly null) so client-side types are stable. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …es/core/tests/unit/test_executive_peer_memory_kwarg.py | 0 | keep this module's audit rows out of the default `./episodic_memory.db`. a committee turn schedules episodic extraction | STRING |
| HIGH | packages/core/tests/unit/test_web_search_tool.py | 0 | keep this module's audit rows out of the default `./episodic_memory.db`. a committee turn schedules episodic extraction | STRING |
| HIGH | packages/core/tests/unit/test_committee_debug_events.py | 0 | keep this module's audit rows out of the default `./episodic_memory.db`. a committee turn schedules episodic extraction | STRING |
| HIGH | packages/core/openexecutive/guide/prebuilt.py | 0 | return the authored content dict for one section, or ``none`` if the file is absent or malformed. | STRING |
| HIGH | packages/core/openexecutive/utils/prebuilt_store.py | 0 | return the authored content dict for one section, or ``none`` if the file is absent or malformed. | STRING |
| HIGH | packages/core/openexecutive/architecture/prebuilt.py | 0 | return the authored content dict for one section, or ``none`` if the file is absent or malformed. | STRING |
| HIGH | …ckages/core/openexecutive/knowledge/confluence_sync.py | 0 | everything the network phase of a tick learned, ready to apply locally. | STRING |
| HIGH | packages/core/openexecutive/knowledge/notion_sync.py | 0 | everything the network phase of a tick learned, ready to apply locally. | STRING |
| HIGH | packages/core/openexecutive/knowledge/drive_sync.py | 0 | everything the network phase of a tick learned, ready to apply locally. | STRING |
| HIGH | …ckages/core/openexecutive/knowledge/confluence_sync.py | 0 | local write phase — the caller must hold ``_fixture_op_lock``. | STRING |
| HIGH | packages/core/openexecutive/knowledge/onedrive_sync.py | 0 | local write phase — the caller must hold ``_fixture_op_lock``. | STRING |
| HIGH | packages/core/openexecutive/knowledge/drive_sync.py | 0 | local write phase — the caller must hold ``_fixture_op_lock``. | STRING |
| HIGH | …ckages/core/openexecutive/knowledge/confluence_sync.py | 0 | keep a short, user-facing reason the last tick failed (never a trace). | STRING |
| HIGH | packages/core/openexecutive/knowledge/notion_sync.py | 0 | keep a short, user-facing reason the last tick failed (never a trace). | STRING |
| HIGH | packages/core/openexecutive/knowledge/drive_sync.py | 0 | keep a short, user-facing reason the last tick failed (never a trace). | STRING |
| HIGH | packages/core/openexecutive/knowledge/onedrive_sync.py | 0 | one sync tick. returns counts: seen / updated / skipped / failed / purged / capped (plus ``busy`` when another tick is a | STRING |
| HIGH | packages/core/openexecutive/knowledge/notion_sync.py | 0 | one sync tick. returns counts: seen / updated / skipped / failed / purged / capped (plus ``busy`` when another tick is a | STRING |
| HIGH | packages/core/openexecutive/knowledge/drive_sync.py | 0 | one sync tick. returns counts: seen / updated / skipped / failed / purged / capped (plus ``busy`` when another tick is a | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/ui/src/components/company-profile/ProfileSections.tsx | 304 | <div><FieldLabel>Name</FieldLabel><Input value={name} onChange={setName} placeholder="Acme Corp" /></div> | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 119 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 133 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 147 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 163 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 173 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 184 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 264 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 279 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 301 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 306 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW⚡ | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 321 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 355 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW | …s/core/tests/unit/test_lookup_person_and_discord_dm.py | 408 | mock_get.return_value.discord_bot_token = "fake-token" | CODE |
| LOW | …s/core/tests/unit/test_executive_research_scheduler.py | 288 | target="Acme Corp", | CODE |
| LOW⚡ | packages/core/tests/unit/test_client_slots.py | 91 | def _seed_live_company(env: SimpleNamespace, name: str = "Acme Corp") -> None: | CODE |
| LOW⚡ | packages/core/tests/unit/test_client_slots.py | 101 | _seed_live_company(env, "Acme Corp") | CODE |
| LOW⚡ | packages/core/tests/unit/test_client_slots.py | 104 | env.settings, display_name="Acme Corp", source="current" | CODE |
| LOW | packages/core/tests/unit/test_client_slots.py | 125 | _seed_live_company(env, "Acme Corp") | CODE |
| LOW | packages/core/tests/unit/test_client_slots.py | 144 | await create_client_slot(env.settings, display_name="Acme Corp", source="current") | CODE |
| LOW⚡ | packages/core/tests/unit/test_clients_route.py | 67 | "/clients", json={"display_name": "Acme Corp", "source": "current"} | CODE |
| LOW⚡ | packages/core/tests/unit/test_fixtures_generator.py | 71 | {"headline": "Competitor raised", "routed_to_person": "Jane Doe"} | CODE |
| LOW⚡ | packages/core/tests/unit/test_fixtures_generator.py | 120 | d["people"][1]["full_name"] = "Jane Doe" # collide with the principal | CODE |
| LOW⚡ | packages/core/tests/unit/test_fixtures_generator.py | 160 | jane = next(p for p in people if p["full_name"] == "Jane Doe") | CODE |
| LOW | packages/core/tests/unit/test_fixtures_generator.py | 28 | "full_name": "Jane Doe", | CODE |
| LOW | packages/core/tests/unit/test_fixtures_generator.py | 45 | "head_person_name": "Jane Doe", | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 184 | # A profile ticker that belongs to someone else lends nothing to "Acme Corp". | COMMENT |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 185 | other = _proposal(slug="stock-msft", signal_type="stock", target="MSFT", grounding_entity="Acme Corp") | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 187 | "name": "Sente Labs", "competitive_landscape": {"primary_competitors": ["Acme Corp"]}, | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 239 | p = _proposal(slug="q-acme", signal_type="query", target="Acme Corp pricing", grounding_entity="Acme Corp") | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 287 | p2 = _proposal(slug="stock-msft", signal_type="stock", target="MSFT", grounding_entity="Acme Corp") | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 570 | p = _proposal(target="https://totally-unrelated.attacker.net/feed", grounding_entity="Acme Corp") | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 582 | p = _proposal(target="https://news.example.com/acme-feed.xml", grounding_entity="Acme Corp") | CODE |
| LOW⚡ | packages/core/tests/unit/test_watch_policy.py | 1163 | strong = _proposal(slug="rss-strong", grounding_entity="Acme Corp") # same target, direct | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 74 | "competitive_landscape": {"primary_competitors": ["Acme Corp", "Globex"]}, | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 97 | "grounding_entity": "Acme Corp", "rationale": "Competitor pricing moves", | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 432 | "grounding_entity": "Acme Corp", "rationale": "y", "certainty": "confident", | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 439 | "grounding_entity": "Acme Corp", "rationale": "y", "certainty": "confident", "finding_index": 0, | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 733 | finance = _department("finance", "Finance", watched=["Brex", "Acme Corp"], | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 935 | assert wp.entity_names("Acme" + " " * 100000 + "Corp — x").names == ["Acme Corp"] | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 952 | assert wp.entity_names("Acme Corp (ACME, acme.com)") == (["Acme Corp"], ["ACME"], ["acme.com"]) | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 1067 | nowhere = _proposal(slug="rss-else", target="https://elsewhere.com/feed", grounding_entity="Acme Corp", | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 1090 | grounding_entity="Acme Corp", finding_index=0)], findings, ctx, db_path=db) | CODE |
| LOW | packages/core/tests/unit/test_watch_policy.py | 1122 | feed = _proposal(slug="rss-acme-ir", target="https://acme.com/ir/feed", grounding_entity="Acme Corp", | CODE |
| LOW⚡ | packages/core/tests/unit/test_company_profile.py | 16 | profile = CompanyProfile(name="Acme Corp", industry="B2B SaaS", stage="Series A") | CODE |
| LOW⚡ | packages/core/tests/unit/test_company_profile.py | 19 | assert "Acme Corp" in block | CODE |
| LOW | packages/core/tests/unit/test_fixtures_store.py | 23 | display_name="Acme Inc", | CODE |
| LOW | packages/core/tests/unit/test_fixtures_store.py | 53 | assert row["display_name"] == "Acme Inc" | CODE |
| LOW | packages/core/tests/unit/test_google_chat.py | 82 | headers={"Authorization": "Bearer fake-token"}, | CODE |
| LOW⚡ | packages/core/tests/unit/test_onboarding_interview.py | 679 | {"full_name": "Jane Doe", "role": "Advisor"}, | CODE |
| LOW⚡ | packages/core/tests/unit/test_onboarding_commit.py | 493 | PersonDraft(full_name="Jane Doe", role="Advisor"), | CODE |
| LOW | …core/openexecutive/monitoring/research/watch_policy.py | 733 | # tracks for someone else (MSFT) says nothing about "Acme Corp"; the | COMMENT |
| LOW | …core/openexecutive/monitoring/research/watch_policy.py | 626 | Token containment both ways, so "Acme Corp" matches "Acme" and "Acme" | STRING |
| LOW | …core/openexecutive/monitoring/research/watch_policy.py | 627 | matches "Acme Corp"; single-token matches must be a whole token.""" | STRING |
| LOW | …core/openexecutive/monitoring/research/watch_policy.py | 676 | "Acme Corp" is named by "Acme pricing review" (corp is a stopword) but | STRING |
| LOW | packages/core/openexecutive/onboarding/interview.py | 394 | # A case-sensitive check let "JANE DOE" and "Jane Doe" both through, and the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/ui/package-lock.json | 8922 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| LOW⚡ | packages/core/tests/unit/test_find_alerts.py | 335 | # 25 per call bounds nothing if the model can simply call again. | COMMENT |
| MEDIUM | packages/core/tests/unit/test_monitoring_pipeline.py | 41 | # Test harness | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_eval_ablation.py | 67 | # run_scenarios harness). Not executed here — it makes paid LLM calls. | COMMENT |
| MEDIUM | packages/core/openexecutive/evals/ablation.py | 152 | # Restore exactly — including absence — so the harness leaves no trace. | COMMENT |
| MEDIUM | …enexecutive/evals/_scenarios/decision_outcome_001.yaml | 5 | # Recording case for decision outcomes, as the eval harness sees it. Only the | COMMENT |
| MEDIUM | …utive/evals/_scenarios/department_goal_update_005.yaml | 9 | # Creation case for chat-driven goals, as the eval harness sees it. Only the | COMMENT |
| MEDIUM | packages/core/openexecutive/agents/base.py | 185 | # leaves room for nuanced reasoning while being ~3x faster. | COMMENT |
| MEDIUM⚡ | packages/core/openexecutive/knowledge/retriever.py | 298 | # harness toggles (KNOWLEDGE_BUILTIN_N_RESULTS=0 disables builtin RAG). | COMMENT |
| MEDIUM | packages/core/openexecutive/knowledge/retriever.py | 327 | # lever the RAG ablation harness flips). Skip the query rather than | COMMENT |
| MEDIUM | packages/core/openexecutive/monitoring/pipeline.py | 258 | # makes them robust to the model's tendency to skim long bodies. | COMMENT |
| MEDIUM | …es/core/openexecutive/monitoring/research/scheduler.py | 131 | # (and any future multi-DB harness) actually takes effect. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/openexecutive/memory/honcho_client.py | 604 | # Step 1: drain sessions. Bounded by its own per-session timeout, so | COMMENT |
| LOW | packages/core/openexecutive/memory/honcho_client.py | 619 | # Step 2: delete the (now-empty) workspace. | COMMENT |
| LOW | packages/core/openexecutive/workflows/morning_brief.py | 164 | # Step 1: gather context | COMMENT |
| LOW | packages/core/openexecutive/workflows/morning_brief.py | 345 | # Step 2: synthesize | COMMENT |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 613 | # Step 1: gather signals | COMMENT |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 693 | # Step 2: decide (LLM + tool use) | COMMENT |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 973 | # Step 3: emit artifact | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 111 | # Step 1: Load context | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 161 | # Step 2: Goal status | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 238 | # Step 3: Blockers | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 268 | # Step 4: Proposed actions (gated) | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 303 | # Step 5: Assemble | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 476 | # Step 1: gather_context | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 541 | # Step 2: research_specialists (parallel) | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 605 | # Step 3: dedup | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 665 | # Step 4: executive_synthesis (LLM + tool-use loop) | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 703 | # Step 5: emit_artifact | COMMENT |
| LOW⚡ | packages/core/openexecutive/departments/store.py | 236 | # Step 1: add period_type column if missing. NOT NULL with DEFAULT means | STRING |
| LOW⚡ | packages/core/openexecutive/departments/store.py | 244 | # Step 2: rename `quarter` → `period_value` if needed. | STRING |
| LOW⚡ | packages/core/openexecutive/departments/store.py | 250 | # Step 3: drop the old index (carries an outdated name even after table | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/openexecutive/memory/honcho_client.py | 604 | # Step 1: drain sessions. Bounded by its own per-session timeout, so | COMMENT |
| LOW | packages/core/openexecutive/memory/honcho_client.py | 619 | # Step 2: delete the (now-empty) workspace. | COMMENT |
| LOW | packages/core/openexecutive/workflows/morning_brief.py | 164 | # Step 1: gather context | COMMENT |
| LOW | packages/core/openexecutive/workflows/morning_brief.py | 345 | # Step 2: synthesize | COMMENT |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 613 | # Step 1: gather signals | COMMENT |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 693 | # Step 2: decide (LLM + tool use) | COMMENT |
| LOW | …s/core/openexecutive/workflows/executive_reflection.py | 973 | # Step 3: emit artifact | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 111 | # Step 1: Load context | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 161 | # Step 2: Goal status | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 238 | # Step 3: Blockers | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 268 | # Step 4: Proposed actions (gated) | COMMENT |
| LOW | …es/core/openexecutive/workflows/department_check_in.py | 303 | # Step 5: Assemble | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 476 | # Step 1: gather_context | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 541 | # Step 2: research_specialists (parallel) | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 605 | # Step 3: dedup | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 665 | # Step 4: executive_synthesis (LLM + tool-use loop) | COMMENT |
| LOW⚡ | …ges/core/openexecutive/workflows/executive_research.py | 703 | # Step 5: emit_artifact | COMMENT |
| LOW⚡ | packages/core/openexecutive/departments/store.py | 236 | # Step 1: add period_type column if missing. NOT NULL with DEFAULT means | STRING |
| LOW⚡ | packages/core/openexecutive/departments/store.py | 244 | # Step 2: rename `quarter` → `period_value` if needed. | STRING |
| LOW⚡ | packages/core/openexecutive/departments/store.py | 250 | # Step 3: drop the old index (carries an outdated name even after table | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/tests/unit/test_provider_registry.py | 159 | CODE | |
| LOW | packages/core/tests/unit/test_router_retrieval.py | 22 | CODE | |
| LOW | …kages/core/tests/unit/test_router_department_memory.py | 30 | CODE | |
| LOW | packages/core/openexecutive/memory/facts.py | 254 | CODE | |
| LOW | packages/core/openexecutive/memory/episodic.py | 1138 | CODE | |
| LOW | …ages/core/openexecutive/providers/openai_compatible.py | 96 | CODE | |
| LOW | packages/core/openexecutive/providers/translator.py | 747 | CODE | |
| LOW | packages/core/openexecutive/agents/overrides.py | 186 | CODE | |
| LOW | packages/core/openexecutive/agents/base.py | 67 | CODE | |
| LOW | packages/core/openexecutive/departments/store.py | 536 | CODE | |
| LOW | packages/core/openexecutive/departments/store.py | 708 | CODE | |
| LOW | packages/core/openexecutive/alerts/store.py | 148 | CODE | |
| LOW | packages/core/openexecutive/integrations/discord_bot.py | 680 | CODE | |
| LOW | packages/core/openexecutive/briefing/narrative.py | 336 | CODE | |
| LOW | packages/core/openexecutive/briefing/narrative.py | 600 | CODE | |
| LOW | packages/core/openexecutive/audit/logger.py | 759 | CODE | |
| LOW | packages/core/openexecutive/audit/logger.py | 367 | CODE | |
| LOW | packages/core/openexecutive/audit/logger.py | 493 | CODE | |
| LOW | packages/core/openexecutive/audit/logger.py | 559 | CODE | |
| LOW | packages/core/openexecutive/knowledge/retriever.py | 244 | CODE | |
| LOW | packages/core/openexecutive/people/store.py | 296 | CODE | |
| LOW | packages/core/openexecutive/people/store.py | 907 | CODE | |
| LOW | packages/core/openexecutive/prompts/cache_manager.py | 32 | CODE | |
| LOW | packages/core/openexecutive/api/routes/audit.py | 592 | CODE | |
| LOW | packages/core/openexecutive/monitoring/store.py | 326 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/executive.py | 1014 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/executive.py | 1151 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/executive.py | 1506 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/executive.py | 1999 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/executive.py | 3146 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/executive.py | 2834 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/router.py | 172 | CODE | |
| LOW | packages/core/openexecutive/orchestrator/router.py | 374 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | packages/core/tests/unit/test_people_tools.py | 302 | # Create a principal directly in the store (bypassing the chat tool gate | COMMENT |
| MEDIUM⚡ | packages/core/tests/unit/test_phase8_hardening.py | 271 | # Create a person to cover all scopes | COMMENT |
| MEDIUM | …ore/openexecutive/architecture/architecture-facts.yaml | 3 | # This file is the highest-trust source of truth fed into the LLM when | COMMENT |
| MEDIUM | packages/core/openexecutive/api/routes/decisions.py | 391 | # Create the actual calendar event. Contacts on the invite only when the | COMMENT |
| MEDIUM | …ckages/core/openexecutive/orchestrator/people_tools.py | 1041 | # Create the head persona override row first when assigning a head. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/core/tests/unit/test_resumer.py | 672 | CODE | |
| MEDIUM | packages/core/tests/unit/test_chat_stream_step.py | 45 | CODE | |
| MEDIUM | packages/core/tests/unit/test_principal_role.py | 555 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ages/core/openexecutive/architecture/prebuilt/api.json | 4 | "markdown": "The FastAPI surface lives in `openexecutive.api.main`, which mounts one router per topic. A shared-secret | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ckages/core/openexecutive/guide/prebuilt/settings.json | 4 | "markdown": "**What it is:** The settings that live outside the day-to-day nav: whether the Executive is running and h | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/core/openexecutive/departments/authority.py | 153 | # Check if the assignee is reachable RIGHT NOW. `next_available_window` | COMMENT |