Julep — durable, composable AI agents. Flows that crash and resume, retry safely, and explain every step.
This report summarizes scanner evidence for julep-ai/julep, a Python project with 6,573 GitHub stars. SynthScan examined 189,663 lines of code across 627 source files, recording 4074 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 22.0 (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? 3081 finding(s).
Are imports declared and package/API names verified? 689 finding(s).
Are wrappers, guards, and repeated structures necessary? 3231 finding(s).
Which changes need focused human review? 4074 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 4074 distinct pattern matches across 14 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 | README.md | 128 | def load_live_memory_tools_snapshot( | CODE |
| LOW | tests/test_require_tool_call.py | 19 | def test_require_tool_call_reasks_after_text_then_accepts_tool_call() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 57 | def test_require_tool_call_halts_after_two_reasks() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 85 | def test_require_tool_call_allows_finish_after_successful_tool_call() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 113 | def test_require_tool_call_does_not_suppress_escalate() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 134 | def test_agent_facade_require_tool_call_max_rounds_with_tool_call_is_success() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 166 | def test_agent_facade_without_require_tool_call_keeps_max_rounds_failure() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 187 | def test_require_tool_call_absent_preserves_text_finish_behavior() -> None: | CODE |
| LOW | tests/test_require_tool_call.py | 208 | def test_agent_config_require_tool_call_json_round_trips() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 45 | def test_episode_summary_loads_canonical_model_and_split() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 60 | def test_episode_summary_env_overrides_model() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 74 | def test_execute_require_tool_call_and_yglu_max_rounds() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 87 | def test_cluster_label_response_format_and_bare_hash_header() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 110 | def test_anchor_choose_single_file_frontmatter_and_defaults() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 128 | def test_prompt_loading_never_executes_eval() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 139 | def test_load_ctx_evals_episode_summary_module() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 159 | def test_load_ctx_evals_execute_eval_yaml() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 180 | def test_sibling_repo_supported_prompts_all_load() -> None: | CODE |
| LOW | tests/test_memmcp_compat.py | 216 | def test_brief_draft_activates_one_skill_without_inlining_it() -> None: | CODE |
| LOW | tests/test_e2e_temporal_session.py | 109 | def _make_timeout_session_flow(): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 114 | def _make_nonfatal_session_flow(): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 159 | def _expected_echo_event_contract(reason="done"): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 171 | async def _collect_two_turn_contract(handle): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 347 | async def _carrier_survives_continue_as_new(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 422 | async def _recv_timeout_keeps_session_alive(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 576 | async def _facade_ack_lags_delivery(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 631 | async def _facade_event_contract_matches_local(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 657 | async def _facade_close_flushes_in_flight_turn(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 687 | async def _facade_close_returns_after_quiescence(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 713 | async def _facade_events_single_consumer(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 732 | async def _facade_output_capacity_progresses_with_event_ack(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 777 | async def _facade_carried_event_log_is_deterministic(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 840 | async def _facade_nonfatal_turn_error_books_and_proceeds(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 882 | async def _facade_fatal_turn_error_appends_closed(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 918 | def test_session_rehydrate_restamps_pre_rehydrate_pending_items(): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 960 | async def _facade_max_calls_denies_second_turn(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 1004 | async def _facade_budget_closes_over_budget(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 1038 | async def _facade_ungranted_tool_denied_at_open(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 1117 | async def _flowworkflow_rejects_loop(env): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 1150 | async def _flowworkflow_rejects_nested_loop(env): | CODE |
| LOW | tests/test_dispatch.py | 24 | def test_dedup_workflow_id_is_canonical_opaque_and_bounded() -> None: | CODE |
| LOW | tests/test_dispatch.py | 51 | def test_dedup_workflow_id_rejects_ambiguous_inputs() -> None: | CODE |
| LOW | tests/test_dispatch.py | 62 | def test_batch_window_reports_empty_wait_quiet_and_cap() -> None: | CODE |
| LOW | tests/test_dispatch.py | 107 | def test_batch_window_uses_max_wait_when_it_is_earlier() -> None: | CODE |
| LOW | tests/test_dispatch.py | 131 | def test_batch_window_validates_configuration(window: Any, message: str) -> None: | CODE |
| LOW | tests/test_dispatch.py | 137 | def test_build_debounce_request_keys_by_configuration_not_item() -> None: | CODE |
| LOW | tests/test_dispatch.py | 177 | def test_signal_with_start_executes_managed_dedup_policies() -> None: | CODE |
| LOW | tests/test_dispatch.py | 214 | def test_signal_with_start_rejects_managed_option_override() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 23 | def test_register_pure_from_source_round_trip() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 34 | def test_register_pure_from_source_keeps_shipped_text_inspectable() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 48 | def test_register_pure_from_source_same_source_is_noop() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 58 | def test_equal_hash_baked_pure_is_promoted_to_wasm_not_left_native() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 93 | def test_register_pure_from_source_collision_names_both_hashes_and_keeps_original() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 110 | def test_plain_exec_register_pure_uses_wrong_qualname_fallback_but_source_api_does_not() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 132 | def test_default_registry_register_pure_from_source_shim_forwards() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 145 | def test_register_pure_from_source_decorator_name_mismatch_errors_clearly() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 155 | def test_register_pure_from_source_failure_restores_pures_in_place() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 174 | def test_register_pure_from_source_newline_less_source_errors_clearly() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 182 | def test_baked_pure_is_native_tier_and_get_pure_returns_native_fn() -> None: | CODE |
| LOW | tests/test_register_pure_from_source.py | 196 | def test_registry_executor_of_reports_source_tiers_and_unknowns() -> None: | CODE |
| 2758 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tooling/eks-cad-demo/publish.py | 19 | CODE | |
| LOW | tooling/k3d-flow-demo/flow_worker.py | 10 | CODE | |
| LOW | tooling/k3d-flow-demo/drive_flow.py | 12 | CODE | |
| LOW | tooling/k3d-llm-demo/drive_llm.py | 8 | CODE | |
| LOW | tooling/k3d-llm-demo/llm_weather_agent.py | 20 | CODE | |
| LOW | tooling/k3d-llm-demo/session_demo_worker.py | 15 | CODE | |
| LOW | tooling/k3d-llm-demo/session_demo_worker.py | 23 | CODE | |
| LOW | tooling/k3d-cad-demo/drive.py | 12 | CODE | |
| LOW | tooling/k3d-cad-demo/publish.py | 14 | CODE | |
| LOW | tests/test_require_tool_call.py | 1 | CODE | |
| LOW | tests/test_memmcp_compat.py | 19 | CODE | |
| LOW | tests/test_e2e_temporal_session.py | 12 | CODE | |
| LOW | tests/test_dispatch.py | 1 | CODE | |
| LOW | tests/test_register_pure_from_source.py | 1 | CODE | |
| LOW | tests/test_redaction_config.py | 3 | CODE | |
| LOW | tests/test_effects_extraction.py | 2 | CODE | |
| LOW | tests/test_projection.py | 3 | CODE | |
| LOW | tests/test_session_activities.py | 17 | CODE | |
| LOW | tests/test_e2e_temporal.py | 11 | CODE | |
| LOW | tests/test_coalesce.py | 1 | CODE | |
| LOW | tests/test_e2e_dbos_agent.py | 8 | CODE | |
| LOW | tests/test_projection_egress.py | 3 | CODE | |
| LOW | tests/test_phase3_acceptance.py | 16 | CODE | |
| LOW | tests/test_payload_encryption.py | 3 | CODE | |
| LOW | tests/conftest.py | 7 | CODE | |
| LOW | tests/test_env_builder.py | 1 | CODE | |
| LOW | tests/test_llm_skills.py | 3 | CODE | |
| LOW | tests/test_agent_controller_provider_fields.py | 1 | CODE | |
| LOW | tests/test_dotctx_rich.py | 9 | CODE | |
| LOW | tests/test_mcp_auth.py | 1 | CODE | |
| LOW | tests/test_run_principal.py | 8 | CODE | |
| LOW | tests/test_gc.py | 1 | CODE | |
| LOW | tests/test_executor_selection_policy.py | 19 | CODE | |
| LOW | tests/test_artifact_store.py | 1 | CODE | |
| LOW | tests/test_transcript_native_tools.py | 3 | CODE | |
| LOW | tests/test_batch_provider.py | 1 | CODE | |
| LOW | tests/test_trajectory_determinism.py | 7 | CODE | |
| LOW | tests/test_cma_session.py | 3 | CODE | |
| LOW | tests/test_declarations.py | 1 | CODE | |
| LOW | tests/test_delay.py | 2 | CODE | |
| LOW | tests/test_blobstore.py | 7 | CODE | |
| LOW | tests/test_resilient_llm.py | 7 | CODE | |
| LOW | tests/test_llm.py | 8 | CODE | |
| LOW | tests/test_dbos_api_spike.py | 22 | CODE | |
| LOW | tests/test_deploy_derive.py | 1 | CODE | |
| LOW | tests/test_trajectory_stitch.py | 22 | CODE | |
| LOW | tests/test_env_cache.py | 1 | CODE | |
| LOW | tests/test_resilience.py | 3 | CODE | |
| LOW | tests/test_each.py | 4 | CODE | |
| LOW | tests/test_worker_activity_registration.py | 13 | CODE | |
| LOW | tests/test_dotctx_evals.py | 11 | CODE | |
| LOW | tests/test_define_acceptance.py | 1 | CODE | |
| LOW | tests/test_local_pipeline.py | 1 | CODE | |
| LOW | tests/test_pure_objects.py | 1 | CODE | |
| LOW | tests/test_agent_manifest_helpers.py | 5 | CODE | |
| LOW | tests/test_cma.py | 3 | CODE | |
| LOW | tests/test_bundle_worker.py | 1 | CODE | |
| LOW | tests/test_worker_store.py | 1 | CODE | |
| LOW | tests/test_bundle_dep_pure_e2e.py | 1 | CODE | |
| LOW | tests/test_dbos_pure.py | 3 | CODE | |
| 628 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/session_demo.py | 234 | except (StopAsyncIteration, asyncio.TimeoutError): | CODE |
| HIGH | julep/gc.py | 81 | except FileNotFoundError: | CODE |
| HIGH | julep/gc.py | 292 | except OSError: | CODE |
| HIGH | julep/registry.py | 349 | except (OSError, TypeError): | CODE |
| HIGH | julep/local.py | 309 | except RuntimeError: | CODE |
| HIGH | julep/local.py | 341 | except RuntimeError: | CODE |
| HIGH | julep/mcp_snapshot.py | 334 | except RuntimeError: | CODE |
| HIGH | julep/artifact_store.py | 83 | except FileNotFoundError: | CODE |
| HIGH | julep/server/auth.py | 195 | except (OSError, ValueError): | CODE |
| HIGH | julep/server/local.py | 923 | except asyncio.CancelledError: | CODE |
| HIGH | julep/cli/keygen.py | 134 | except OSError: | CODE |
| HIGH | julep/cli/keygen.py | 110 | except OSError: | CODE |
| HIGH | julep/cli/dev.py | 459 | except Exception: # noqa: BLE001 - continue cleaning the remaining children. | CODE |
| HIGH | julep/cli/dev.py | 474 | except Exception: # noqa: BLE001 - no remaining cleanup avenue. | CODE |
| HIGH | julep/cli/dev.py | 479 | except Exception: # noqa: BLE001 - no remaining cleanup avenue. | CODE |
| HIGH | julep/cli/main.py | 1455 | except Exception: # noqa: BLE001 - older Typer reuses the real click package | CODE |
| HIGH | julep/execution/effects.py | 1332 | except KeyError: | CODE |
| HIGH | julep/execution/harness.py | 1339 | except asyncio.TimeoutError: | CODE |
| HIGH | julep/execution/harness.py | 3811 | except asyncio.TimeoutError: | CODE |
| HIGH | julep/execution/harness.py | 3898 | except Exception: | CODE |
| HIGH | julep/execution/cma_session.py | 280 | except Exception: | CODE |
| HIGH | julep/execution/serve.py | 499 | except (NotImplementedError, RuntimeError): | CODE |
| HIGH | julep/execution/blobstore.py | 239 | except BlobNotFound: | CODE |
| HIGH | julep/execution/blobstore.py | 271 | except FileNotFoundError: | CODE |
| HIGH | julep/execution/reasoner_batch.py | 256 | except asyncio.TimeoutError: | CODE |
| HIGH | julep/execution/wasm_executor.py | 322 | except Exception: | CODE |
| HIGH | julep/execution/wasm_executor.py | 315 | except Exception: | CODE |
| HIGH | julep/execution/debounce.py | 139 | except asyncio.TimeoutError: | CODE |
| HIGH | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 455 | except ImportError: | CODE |
| HIGH | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 504 | except KeyError: | CODE |
| HIGH | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 638 | except _FirstSetError: | CODE |
| HIGH | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 710 | except ValueError: | CODE |
| HIGH | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 1327 | except ValueError: | CODE |
| HIGH | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 302 | except KeyError: | CODE |
| HIGH | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 313 | except KeyError: | CODE |
| HIGH | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 4393 | except _FirstSetError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_memmcp_compat.py | 202 | except Exception as exc: | CODE |
| MEDIUM | tests/test_e2e_temporal_session.py | 376 | def _parked_on_recv(): | CODE |
| MEDIUM | tests/test_e2e_temporal_session.py | 395 | def _all_done(): | CODE |
| LOW | tests/test_e2e_temporal_session.py | 379 | except Exception: | CODE |
| LOW | tests/test_e2e_temporal_session.py | 398 | except Exception: | CODE |
| LOW | tests/test_e2e_temporal_session.py | 507 | except Exception as exc: # pragma: no cover - update rejection class varies | CODE |
| LOW | tests/test_projection_egress.py | 332 | except Exception as exc: # pragma: no cover - depends on download/network | CODE |
| MEDIUM | tests/test_projection_egress.py | 329 | def _run_all() -> None: | CODE |
| LOW | tests/test_mcp_snapshot.py | 68 | except Exception as exc: | CODE |
| LOW | tests/cli/test_schedule.py | 484 | except Exception as exc: # noqa: BLE001 - local Temporal binary may be unavailable | CODE |
| LOW | docs/plans/2026-06-29-ws1-ca-pure-registry-fix.md | 162 | except Exception as exc: # noqa: BLE001 - surface runtime errors in the outcome. | CODE |
| LOW | docs/plans/2026-06-29-ws1-ca-pure-registry-fix.md | 469 | except Exception as exc: # noqa: BLE001 - serialize run failure for the parent. | STRING |
| LOW | docs/plans/2026-06-07-agent-loop-as-turn.md | 423 | except Exception as exc: # noqa: BLE001 — re-raised after attempts | CODE |
| LOW | …/2026-07-01-mem-mcp-adoption-phase1-llm-prompt-core.md | 520 | except Exception as exc: | CODE |
| LOW | …/2026-07-01-mem-mcp-adoption-phase1-llm-prompt-core.md | 666 | except Exception as exc: | CODE |
| LOW | docs/plans/2026-07-04-ca-eval-memmcp-parity.md | 363 | except Exception as exc: # noqa: BLE001 - user eval.py score() code -> setup error (exit 4) | STRING |
| LOW | docs/plans/2026-07-04-ca-eval-memmcp-parity.md | 508 | except Exception as exc: # noqa: BLE001 - user eval.py sample() code -> setup error (exit 4) | STRING |
| LOW | docs/superpowers/plans/2026-07-27-dotctx-skills.md | 265 | except Exception as exc: | CODE |
| LOW | docs/superpowers/plans/2026-07-27-dotctx-skills.md | 2292 | except Exception as exc: | CODE |
| LOW | docs/superpowers/plans/2026-06-23-ca-cli-v1.md | 615 | except Exception: # noqa: BLE001 — a bad module shouldn't kill resolution of others | STRING |
| LOW | docs/superpowers/plans/2026-06-23-ca-cli-v1.md | 1274 | except Exception as exc: # noqa: BLE001 — surface runtime errors as outcome, not crash | STRING |
| LOW | spikes/wasm_pure/src/executor_component.py | 28 | except Exception as exc: | CODE |
| LOW | spikes/langfuse_otlp/spike.py | 125 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | examples/multi_provider_agent.py | 130 | except Exception as exc: # noqa: BLE001 - a demo: one provider's failure shouldn't hide the rest | CODE |
| LOW | examples/episode_summarizer/harness.py | 230 | except Exception: | CODE |
| LOW | julep/turn.py | 367 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | julep/turn.py | 460 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | julep/turn.py | 495 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | julep/turn.py | 527 | except Exception as exc: # noqa: BLE001 — re-raised after attempts | CODE |
| LOW | julep/dsl.py | 70 | except Exception: | CODE |
| LOW | julep/deploy.py | 438 | except Exception as exc: | CODE |
| LOW | julep/skills.py | 105 | except Exception as exc: | CODE |
| LOW | julep/local.py | 666 | except Exception as exc: | CODE |
| LOW | julep/mcp_auth.py | 535 | except Exception as error: | CODE |
| LOW | julep/mcp_auth.py | 672 | except Exception as error: | CODE |
| LOW | julep/mcp_auth.py | 739 | except Exception as error: | CODE |
| MEDIUM | julep/mcp_auth.py | 76 | def private_key(self) -> Ed25519PrivateKey: | CODE |
| LOW | julep/session.py | 39 | except Exception: | CODE |
| LOW | julep/session.py | 1047 | except Exception as exc: | CODE |
| LOW | julep/session.py | 1067 | except Exception as exc: | CODE |
| LOW | julep/llm.py | 198 | except Exception: | CODE |
| LOW | julep/llm.py | 361 | except Exception as exc: | CODE |
| LOW | julep/trajectory.py | 193 | except Exception: | CODE |
| LOW | julep/trajectory.py | 234 | except Exception: | CODE |
| LOW | julep/trajectory.py | 840 | except Exception as exc: | CODE |
| LOW | julep/dotctx.py | 134 | except Exception as exc: | CODE |
| LOW | julep/worker_store.py | 491 | except Exception as e: | CODE |
| LOW | julep/agent.py | 183 | except Exception: | CODE |
| LOW | julep/dotctx_evals.py | 376 | except Exception as e: | CODE |
| LOW | julep/artifact_store.py | 142 | except Exception as e: | CODE |
| LOW | julep/artifact_store.py | 161 | except Exception as e: | CODE |
| LOW | julep/app_deploy.py | 807 | except Exception as exc: # noqa: BLE001 - retrieval failures are reported, not raised | CODE |
| LOW | julep/server/temporal.py | 136 | except Exception as exc: | CODE |
| LOW | julep/server/local.py | 674 | except Exception as exc: | CODE |
| LOW | julep/server/local.py | 792 | except Exception as exc: # noqa: BLE001 - persist a terminal local run | CODE |
| MEDIUM | julep/server/local.py | 598 | def _restore_process_state(self) -> None: | CODE |
| LOW | julep/server/app.py | 41 | except Exception as exc: | CODE |
| LOW | julep/server/app.py | 102 | except Exception as exc: | CODE |
| LOW | julep/server/routes/health.py | 33 | except Exception as exc: | CODE |
| LOW⚡ | julep/server/routes/health.py | 46 | except Exception as exc: | CODE |
| 103 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_declarations.py | 224 | CODE | |
| LOW | spikes/flow_spike/core.py | 158 | CODE | |
| LOW | examples/grade_scores_flow.py | 40 | CODE | |
| LOW | examples/episode_summarizer/harness.py | 257 | CODE | |
| LOW | examples/episode_summarizer/harness.py | 447 | CODE | |
| LOW | examples/episode_summarizer/harness.py | 669 | CODE | |
| LOW | julep/turn.py | 128 | CODE | |
| LOW | julep/turn.py | 187 | CODE | |
| LOW | julep/bundle.py | 223 | CODE | |
| LOW | julep/deps.py | 43 | CODE | |
| LOW | julep/deploy.py | 84 | CODE | |
| LOW | julep/deploy.py | 97 | CODE | |
| LOW | julep/deploy.py | 904 | CODE | |
| LOW | julep/deploy.py | 358 | CODE | |
| LOW | julep/define.py | 1464 | CODE | |
| LOW | julep/define.py | 188 | CODE | |
| LOW | julep/define.py | 294 | CODE | |
| LOW | julep/gc.py | 252 | CODE | |
| LOW | julep/registry.py | 150 | CODE | |
| LOW | julep/registry.py | 342 | CODE | |
| LOW | julep/mcp_auth.py | 570 | CODE | |
| LOW | julep/dotctx_rich.py | 639 | CODE | |
| LOW | julep/dotctx_rich.py | 761 | CODE | |
| LOW | julep/dotctx_rich.py | 967 | CODE | |
| LOW | julep/dag.py | 306 | CODE | |
| LOW | julep/dag.py | 543 | CODE | |
| LOW | julep/dag.py | 771 | CODE | |
| LOW | julep/dag.py | 866 | CODE | |
| LOW | julep/session.py | 688 | CODE | |
| LOW | julep/session.py | 1022 | CODE | |
| LOW | julep/std.py | 83 | CODE | |
| LOW | julep/dotctx.py | 131 | CODE | |
| LOW | julep/flow_adapters.py | 61 | CODE | |
| LOW | julep/validate.py | 69 | CODE | |
| LOW | julep/validate.py | 226 | CODE | |
| LOW | julep/validate.py | 380 | CODE | |
| LOW | julep/validate.py | 720 | CODE | |
| LOW | julep/validate.py | 836 | CODE | |
| LOW | julep/validate.py | 884 | CODE | |
| LOW | julep/validate.py | 82 | CODE | |
| LOW | julep/worker_store.py | 109 | CODE | |
| LOW | julep/secrets.py | 512 | CODE | |
| LOW | julep/capabilities.py | 436 | CODE | |
| LOW | julep/capabilities.py | 235 | CODE | |
| LOW | julep/capabilities.py | 459 | CODE | |
| LOW | julep/agent.py | 451 | CODE | |
| LOW | julep/app.py | 333 | CODE | |
| LOW | julep/errors.py | 106 | CODE | |
| LOW | julep/derived.py | 251 | CODE | |
| LOW | julep/app_deploy.py | 464 | CODE | |
| LOW | julep/server/auth.py | 72 | CODE | |
| LOW | julep/server/settings.py | 227 | CODE | |
| LOW | julep/server/routes/releases.py | 70 | CODE | |
| LOW | julep/server/routes/runs.py | 491 | CODE | |
| LOW | julep/server/routes/runs.py | 624 | CODE | |
| LOW | julep/cli/config.py | 409 | CODE | |
| LOW | julep/cli/config.py | 440 | CODE | |
| LOW | julep/cli/config.py | 556 | CODE | |
| LOW | julep/cli/artifact.py | 290 | CODE | |
| LOW | julep/cli/discover.py | 19 | CODE | |
| 56 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_worker_store.py | 764 | def set_worker_level_failure_exception_types(self, types) -> None: | CODE |
| LOW | examples/episode_summarizer/harness.py | 976 | __all__ = [ | CODE |
| LOW | julep/turn.py | 533 | __all__ = [ | CODE |
| LOW | julep/dsl.py | 46 | def set_source_capture(enabled: bool) -> None: | CODE |
| LOW | julep/_payload_encryption.py | 65 | __all__ = [ | CODE |
| LOW | julep/deploy.py | 1075 | __all__ = ["Deployment", "WorkflowStartOptions", "deploy", "snapshot_from_listings"] | CODE |
| LOW | julep/define.py | 1687 | __all__ = [ | CODE |
| LOW | julep/transcript.py | 265 | __all__ = [ | CODE |
| LOW | julep/registry.py | 535 | def set_pure_env_hash(self, name: str, env_hash: str) -> None: | CODE |
| LOW | julep/local.py | 738 | __all__ = [ | CODE |
| LOW | julep/dispatch.py | 388 | __all__ = [ | CODE |
| LOW | julep/client.py | 775 | __all__ = [ | CODE |
| LOW | julep/agent_loop.py | 886 | __all__ = [ | CODE |
| LOW | julep/dotctx_rich.py | 1266 | __all__ = [ | CODE |
| LOW | julep/llm.py | 405 | __all__ = [ | CODE |
| LOW | julep/model_slugs.py | 51 | __all__ = ["EFFORT_LEVELS", "ModelSlug", "normalize_model_slug"] | CODE |
| LOW | julep/flow_adapters.py | 92 | __all__ = ["AnyEdge", "any_edges", "as_type", "expect"] | CODE |
| LOW | julep/secrets.py | 682 | __all__ = [ | CODE |
| LOW | julep/ctx_pipeline.py | 161 | __all__ = ["CtxPipelineConfig", "normalize_tool_bindings", "pipeline_spec_from_ctx"] | CODE |
| LOW | julep/app.py | 602 | __all__ = [ | CODE |
| LOW | julep/mcp_snapshot.py | 397 | __all__ = [ | CODE |
| LOW | julep/dotctx_yglu.py | 59 | def set_default_env(env: Optional[Mapping[str, str]]) -> None: | CODE |
| LOW | julep/dotctx_yglu.py | 247 | __all__ = ["default_env", "has_yglu_tags", "load_settings", "set_default_env"] | CODE |
| LOW | julep/prompt.py | 164 | __all__ = [ | CODE |
| LOW | julep/_specload.py | 30 | __all__ = ["resolve_spec"] | CODE |
| LOW | julep/embedded.py | 58 | __all__ = [ | CODE |
| LOW | julep/_env.py | 113 | __all__ = [ | CODE |
| LOW | julep/resilience.py | 289 | __all__ = [ | CODE |
| LOW | julep/derived.py | 48 | __all__ = [ | CODE |
| LOW | julep/mcp_surface.py | 230 | __all__ = [ | CODE |
| LOW | julep/dotctx_evals.py | 599 | __all__ = [ | CODE |
| LOW | julep/declarations.py | 598 | __all__ = ["DeclarationError", "declarations_blob", "load_declarations"] | CODE |
| LOW | julep/app_deploy.py | 1174 | __all__ = [ | CODE |
| LOW | julep/server/auth.py | 293 | __all__ = [ | CODE |
| LOW | julep/server/store.py | 11 | __all__ = ["ExecutionStore", "InMemoryExecutionStore", "PostgresExecutionStore"] | CODE |
| LOW | julep/server/temporal.py | 216 | __all__ = [ | CODE |
| LOW | julep/server/local.py | 1038 | __all__ = ["LocalExecutionGateway", "create_local_app"] | CODE |
| LOW | julep/server/__init__.py | 29 | __all__ = [ | CODE |
| LOW | julep/server/sse.py | 154 | __all__ = [ | CODE |
| LOW | julep/server/settings.py | 644 | __all__ = ["ServerSettings"] | CODE |
| LOW | julep/server/app.py | 158 | __all__ = ["create_app"] | CODE |
| LOW | julep/server/routes/health.py | 93 | __all__ = ["router"] | CODE |
| LOW | julep/server/routes/__init__.py | 52 | __all__ = [ | CODE |
| LOW | julep/server/routes/releases.py | 167 | __all__ = ["load_release", "normalize_release_hash", "rehydrate_release", "router"] | CODE |
| LOW | julep/server/routes/secrets.py | 149 | __all__ = ["router"] | CODE |
| LOW | julep/server/routes/deployments.py | 139 | __all__ = ["router"] | CODE |
| LOW | julep/server/routes/artifacts.py | 63 | __all__ = ["router"] | CODE |
| LOW | julep/server/routes/runs.py | 671 | __all__ = ["reconcile_runs_once", "router"] | CODE |
| LOW | julep/cli/evalrun.py | 703 | __all__ = [ | CODE |
| LOW | julep/cli/ledger.py | 11 | __all__ = [ | CODE |
| LOW | julep/cli/__init__.py | 5 | __all__ = ["main"] | CODE |
| LOW | julep/cli/ctxrun.py | 117 | __all__ = ["CtxRunOutcome", "run_ctx_local"] | CODE |
| LOW | julep/cli/application.py | 1081 | __all__ = [ | CODE |
| LOW | julep/cli/temporal_run.py | 18 | __all__ = [ | CODE |
| LOW | julep/cli/keygen.py | 139 | __all__ = ["generate_dev_environment", "render_dev_environment", "write_private_file"] | CODE |
| LOW | julep/cli/dev.py | 560 | __all__ = [ | CODE |
| LOW | julep/execution/cma.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | julep/execution/cma.py | 426 | __all__ = [ | CODE |
| LOW | julep/execution/worker.py | 335 | __all__ = [ | CODE |
| LOW | julep/execution/anthropic_batch.py | 182 | __all__ = ["AnthropicBatchProvider"] | CODE |
| 25 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tooling/k3d-llm-demo/llm_weather_agent.py | 0 | get the current weather for a city (celsius + conditions). | STRING |
| HIGH | examples/multi_provider_agent.py | 0 | get the current weather for a city (celsius + conditions). | STRING |
| HIGH | examples/cma_managed_agent.py | 0 | get the current weather for a city (celsius + conditions). | STRING |
| HIGH | tests/test_run_principal.py | 0 | raised by the fake continue_as_new to capture the next segment's input. | STRING |
| HIGH | tests/test_trajectory_stitch.py | 0 | raised by the fake continue_as_new to capture the next segment's input. | STRING |
| HIGH | tests/test_transcripts.py | 0 | raised by the fake continue_as_new to capture the next segment's input. | STRING |
| HIGH | tests/test_llm.py | 0 | an ``acompletion`` stand-in that records kwargs and replays a script. | STRING |
| HIGH | tests/test_llm_native_tools.py | 0 | an ``acompletion`` stand-in that records kwargs and replays a script. | STRING |
| HIGH | tests/test_llm_prompt_cache.py | 0 | an ``acompletion`` stand-in that records kwargs and replays a script. | STRING |
| HIGH | tests/cli/conftest.py | 0 | from composable_agents import flow, think, tool, agent @tool(effect="read", idempotent=true) def lookup(ticket: str) -> | STRING |
| HIGH | tests/cli/test_status.py | 0 | from composable_agents import flow, think, tool, agent @tool(effect="read", idempotent=true) def lookup(ticket: str) -> | STRING |
| HIGH | tests/cli/test_deploy_cmd.py | 0 | from composable_agents import flow, think, tool, agent @tool(effect="read", idempotent=true) def lookup(ticket: str) -> | STRING |
| HIGH | docs/superpowers/plans/2026-06-23-ca-cli-v1.md | 0 | from composable_agents import flow, think, tool, agent @tool(effect="read", idempotent=true) def lookup(ticket: str) -> | STRING |
| HIGH | docs/plans/2026-06-29-ws1-ca-pure-registry-fix.md | 0 | import the user's module in a subprocess and return the agent's serialized ir. | STRING |
| HIGH | docs/superpowers/plans/2026-06-23-ca-cli-v1.md | 0 | import the user's module in a subprocess and return the agent's serialized ir. | STRING |
| HIGH | julep/cli/resolve.py | 0 | import the user's module in a subprocess and return the agent's serialized ir. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_define_acceptance.py | 165 | CODE | |
| LOW | tests/test_define_acceptance.py | 170 | CODE | |
| LOW | tests/test_define_acceptance.py | 240 | CODE | |
| LOW | tests/test_define_frontend.py | 270 | CODE | |
| LOW | tests/test_define_frontend.py | 320 | CODE | |
| LOW | tests/test_define_frontend.py | 372 | CODE | |
| LOW | tests/test_define_frontend.py | 478 | CODE | |
| LOW | tests/test_define_frontend.py | 495 | CODE | |
| LOW | tests/test_define_frontend.py | 1015 | CODE | |
| LOW | tests/test_define_frontend.py | 1160 | CODE | |
| LOW | tests/test_define_frontend.py | 1165 | CODE | |
| LOW | tests/test_define_frontend.py | 1170 | CODE | |
| LOW | tests/test_define_frontend.py | 1185 | CODE | |
| LOW | tests/test_define_frontend.py | 1190 | CODE | |
| LOW | tests/test_define_frontend.py | 1200 | CODE | |
| LOW | tests/test_define_frontend.py | 1205 | CODE | |
| LOW | tests/test_define_frontend.py | 1328 | CODE | |
| LOW | tests/test_define_frontend.py | 1333 | CODE | |
| LOW | tests/test_define_frontend.py | 1338 | CODE | |
| LOW | tests/test_define_frontend.py | 1343 | CODE | |
| LOW | tests/test_define_frontend.py | 1365 | CODE | |
| LOW | tests/test_define_frontend.py | 1385 | CODE | |
| LOW | tests/test_define_frontend.py | 1426 | CODE | |
| LOW | tests/test_define_frontend.py | 1446 | CODE | |
| LOW | tests/test_define_frontend.py | 1507 | CODE | |
| LOW | tests/test_define_frontend.py | 1622 | CODE | |
| LOW | tests/test_define_frontend.py | 1645 | CODE | |
| LOW | tests/test_define_frontend.py | 1789 | CODE | |
| LOW | tests/test_define_frontend.py | 1811 | CODE | |
| LOW | tests/test_define_frontend.py | 1819 | CODE | |
| LOW | tests/test_define_frontend.py | 1844 | CODE | |
| LOW | tests/test_define_frontend.py | 1852 | CODE | |
| LOW | tests/test_define_frontend.py | 1876 | CODE | |
| LOW | tests/test_define_frontend.py | 1908 | CODE | |
| LOW | tests/test_define_frontend.py | 1946 | CODE | |
| LOW | tests/test_define_frontend.py | 1971 | CODE | |
| LOW | tests/test_define_frontend.py | 1995 | CODE | |
| LOW | tests/test_define_frontend.py | 2016 | CODE | |
| LOW | tests/test_define_frontend.py | 2021 | CODE | |
| LOW | tests/test_define_frontend.py | 2045 | CODE | |
| LOW | tests/test_define_frontend.py | 2070 | CODE | |
| LOW | tests/test_define_frontend.py | 2085 | CODE | |
| LOW | tests/test_define_frontend.py | 767 | CODE | |
| LOW | tests/test_define_frontend.py | 902 | CODE | |
| LOW | tests/test_define_frontend.py | 989 | CODE | |
| LOW | tests/test_define_frontend.py | 1237 | CODE | |
| LOW | tests/test_define_frontend.py | 1378 | CODE | |
| LOW | tests/test_define_frontend.py | 1398 | CODE | |
| LOW | tests/test_define_frontend.py | 1439 | CODE | |
| LOW | tests/test_define_frontend.py | 1459 | CODE | |
| LOW | tests/test_define_frontend.py | 1495 | CODE | |
| LOW | tests/test_define_frontend.py | 1520 | CODE | |
| LOW | tests/test_define_frontend.py | 1540 | CODE | |
| LOW | tests/test_define_frontend.py | 1635 | CODE | |
| LOW | tests/test_define_frontend.py | 1658 | CODE | |
| LOW | tests/test_define_frontend.py | 1988 | CODE | |
| LOW | tests/test_define_frontend.py | 2009 | CODE | |
| LOW | tests/test_define_frontend.py | 2029 | CODE | |
| LOW | tests/test_define_frontend.py | 2037 | CODE | |
| LOW | tests/test_define_frontend.py | 2057 | CODE | |
| 49 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_dbos_api_spike.py | 18 | # - Runtime harness correction: DBOS async methods set the current event loop's | COMMENT |
| MEDIUM⚡ | tests/test_dotctx_evals.py | 208 | # Recursive .output wrapper (eval harness result objects) | STRING |
| MEDIUM | tests/test_transcripts.py | 720 | # Temporal harness: plan in workflow code, summary across continue-as-new. | COMMENT |
| MEDIUM | tests/test_trajectory_capture.py | 84 | # robust to context wiring and so teardown can disable capture cleanly. | COMMENT |
| MEDIUM⚡ | tests/test_trajectory_capture.py | 370 | # An effect input carrying no run identity (the legacy/harness path that only | COMMENT |
| MEDIUM | tests/cli/test_queue_lanes.py | 22 | # execution.harness imports temporalio at module level; the CI temporal=off | COMMENT |
| MEDIUM | julep/turn.py | 198 | # Transcript rounds mirror the Temporal harness contract: the | COMMENT |
| MEDIUM | julep/agent_loop.py | 68 | # non-terminal reask decisions recorded in turn.py / harness.py. | COMMENT |
| MEDIUM | julep/agent_loop.py | 294 | # §6 seam: after this many rounds, the durable harness calls continue_as_new | COMMENT |
| MEDIUM | julep/agent_loop.py | 583 | # Budget + continue-as-new policy (pure predicates the harness consults). | COMMENT |
| MEDIUM⚡ | julep/ir.py | 26 | # Reserved native tool: the harness turns a call to this into a human signal-wait | COMMENT |
| MEDIUM⚡ | julep/ir.py | 30 | # Reserved native tool: the harness turns a call to this into a durable timer | COMMENT |
| MEDIUM⚡ | julep/ir.py | 35 | # Reserved native tool: the harness turns a call to this into a blocking channel receive | COMMENT |
| MEDIUM⚡ | julep/ir.py | 39 | # Reserved native tool: the harness turns a call to this into a durable, seq'd output append | COMMENT |
| MEDIUM | julep/projection.py | 261 | # Emitter: the thin API the interceptor / harness calls. | COMMENT |
| MEDIUM | julep/cli/evalrun.py | 165 | # extract_llm_content). The terminal harness dict nests the final reply | COMMENT |
| MEDIUM | julep/execution/dbos_backend.py | 570 | # (harness._TemporalEnv.run_agent): node config supplies budget/rounds | COMMENT |
| MEDIUM | julep/execution/dbos_backend.py | 1016 | # §6 seam, POST-action exactly like the Temporal harness: a top-of-loop | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 21 | # The authoring + compile path (DSL, freeze, validate, capabilities, deploy, the | COMMENT |
| LOW | pyproject.toml | 161 | line-length = 100 | COMMENT |
| LOW | tooling/eks-cad-demo/worker.yaml | 1 | # Generic code-as-data worker on EKS, zero docker in the per-flow loop. | COMMENT |
| LOW | tooling/sandbox-k8s/worker.yaml | 21 | - name: TEMPORAL_TASK_QUEUE | COMMENT |
| LOW | tooling/k3d-cad-demo/worker-keda.yaml | 1 | # Optional autoscaling layer. Apply AFTER worker.yaml to hand replica control to | COMMENT |
| LOW | infra/terraform/envs/demo/main.tf | 721 | # Temporal UI access | COMMENT |
| LOW | infra/k8s/temporal-ui-ingress.yaml | 1 | # Internal ALB for the Temporal web UI on EKS Auto Mode. | COMMENT |
| LOW | infra/helm/julep-worker/values.yaml | 21 | # record-quality, record-execute | COMMENT |
| LOW | tests/test_dbos_api_spike.py | 1 | """dbos>=2.18 API conformance: every dbos API the backend uses, exercised raw. | COMMENT |
| LOW | examples/dotctx/ticket_triage/settings.yaml | 1 | # A dotctx: a directory that describes ONE model call. `load_dotctx(<dir>)` reads | COMMENT |
| LOW | julep/agent_loop.py | 61 | # excludes reask trace entries. The prompt path renders it as a trailing user | COMMENT |
| LOW | julep/cli/evalrun.py | 441 | base_value = dict(sample.input) if isinstance(sample.input, dict) else sample.input | COMMENT |
| LOW | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 1 | # | COMMENT |
| LOW | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 1 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | infra/terraform/envs/demo/.terraform.lock.hcl | 1 | # This file is maintained automatically by "terraform init". | COMMENT |
| MEDIUM | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 644 | # Create the PatternObject. | COMMENT |
| MEDIUM | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 676 | # This function is called by the _regex module. | COMMENT |
| MEDIUM | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 261 | # Define the opcodes in a namespace. | STRING |
| MEDIUM | …execution/_wasm/wasi_wheels/regex/regex/_regex_core.py | 4401 | # Create the PatternObject. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | infra/terraform/envs/demo/main.tf | 720 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | infra/terraform/envs/demo/main.tf | 730 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 246 | # -------------------------------------------------------------------- | STRING |
| MEDIUM | julep/execution/_wasm/wasi_wheels/regex/regex/regex.py | 414 | # -------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_dotctx_reply.py | 98 | '{"model":"openai:gpt-4o","name":"reply.none","replySchema":null,' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs-site/content/docs/deploy/embedded.md | 272 | ### (b) Julep owns the orchestration: `run_flow_dbos` | COMMENT |