GenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.
This report summarizes scanner evidence for Canner/WrenAI, a Python project with 17,839 GitHub stars. SynthScan examined 120,839 lines of code across 595 source files, recording 2648 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 31.8 (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? 1893 finding(s).
Are imports declared and package/API names verified? 201 finding(s).
Are wrappers, guards, and repeated structures necessary? 2288 finding(s).
Which changes need focused human review? 2648 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 2648 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren-core-py/tests/test_modeling_core.py | 162 | def test_get_available_functions(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 232 | def test_extractor_with_invalid_manifest(value, expected_error, error_message): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 252 | def test_resolve_used_table_names(sql, expected): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 456 | def test_backward_compatible_check(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 561 | def test_case_sensitive_without_quote(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 600 | def test_concurrent_calls_from_threads(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 642 | def test_fork_child_gets_working_runtime(): | CODE |
| LOW | …re/wren-core-py/tests/test_same_context_concurrency.py | 251 | def test_same_context_concurrent_engine_calls(tmp_path): | CODE |
| LOW | core/wren-core-py/tests/test_physical_tables.py | 73 | def test_register_before_load_mdl_queryable_via_semantic_layer(tmp_path): | CODE |
| LOW | core/wren-core-py/tests/test_physical_tables.py | 91 | def test_register_after_exec_ctx_visible_without_reload(tmp_path): | CODE |
| LOW | core/wren-core-py/tests/test_physical_tables.py | 115 | def test_register_after_exec_ctx_then_load_mdl_resolves_model(tmp_path): | CODE |
| LOW | core/wren-core-py/tests/test_cube.py | 111 | def test_time_dimension_with_date_range(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 164 | def test_unknown_measure_error(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 170 | def test_invalid_cube_query_json(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 175 | def test_invalid_manifest_json(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 181 | def test_order_by_uses_native_selected_ordinals_without_a_wrapper(): | CODE |
| LOW | core/wren-core-py/tests/test_cube.py | 217 | def test_order_by_rejects_unknown_and_duplicate_members(order_by, message): | CODE |
| LOW | core/wren-core-py/tests/test_cube.py | 230 | def test_order_by_rejects_non_lowercase_direction(): | CODE |
| LOW | core/wren-core-py/tests/test_cube.py | 243 | def test_order_by_without_selected_members_is_rejected(): | CODE |
| LOW | core/wren-core-py/tests/test_query_ipc_schema.py | 61 | def test_query_returns_correct_rows_when_mdl_types_differ_from_physical(tmp_path): | CODE |
| LOW | core/wren-core-py/tests/test_query_ipc_schema.py | 75 | def test_empty_result_schema_matches_nonempty_result_schema(tmp_path): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 43 | def test_form_contains_datasource_options(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 51 | def test_form_omits_connection_url_datasource(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 63 | def test_form_has_save_button(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 72 | def test_fields_endpoint_postgres(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 83 | def test_fields_endpoint_password_type(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 89 | def test_fields_endpoint_bigquery_file_input(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 99 | def test_fields_with_variant_bigquery_project(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 106 | def test_fields_with_variant_bigquery_dataset(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 114 | def test_fields_variant_selector_rendered(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 123 | def test_fields_no_variant_selector_for_postgres(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 129 | def test_fields_empty_datasource_returns_empty(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 136 | def test_fields_duckdb_url_label(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 142 | def test_fields_duckdb_format_hidden(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 149 | def test_fields_snowflake_schema_label(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 160 | def test_save_creates_profile(isolated_profiles): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 186 | def test_save_populates_result_dict(isolated_profiles): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 198 | def test_save_missing_datasource(client): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 206 | def test_save_with_json_fallback(isolated_profiles): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 228 | def test_save_invalid_json_returns_error(client): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 266 | def test_save_skips_empty_fields(isolated_profiles): | CODE |
| LOW⚡ | core/wren/tests/test_cli_memory_detection.py | 32 | def test_import_cli_does_not_pull_heavy_ml_stack(): | CODE |
| LOW⚡ | core/wren/tests/test_cli_memory_detection.py | 40 | def test_memory_subcommand_registered_when_extra_present(): | CODE |
| LOW⚡ | core/wren/tests/test_cli_memory_detection.py | 47 | def test_memory_subcommand_always_registered(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 61 | def test_selectable_datasources_sorted(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 69 | def test_get_fields_returns_field_defs(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 76 | def test_get_fields_postgres_names(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 94 | def test_auto_derive_password(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 104 | def test_auto_derive_placeholder_from_examples(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 112 | def test_ui_override_bigquery_credentials(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 122 | def test_datasource_override_duckdb_url(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 130 | def test_datasource_override_duckdb_format_hidden(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 138 | def test_datasource_override_local_file_url(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 168 | def test_get_fields_bigquery_default_variant(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 178 | def test_get_fields_bigquery_project_variant(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 186 | def test_no_missing_overrides_sf_schema(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 193 | def test_no_missing_overrides_trino_schema(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 200 | def test_snowflake_sf_schema_alias(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 206 | def test_hidden_discriminator_fields(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 230 | def test_fields_match_mcp_web_ui_postgres(): | CODE |
| 1668 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | core/wren-core-wasm/examples/csv-quickstart.html | 146 | // ── 1. Standard CSV with inferred schema ───────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren-core-wasm/examples/csv-quickstart.html | 151 | // ── 2. TSV: tab delimiter ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren-core-wasm/examples/csv-quickstart.html | 156 | // ── 3. Headerless CSV with explicit Arrow schema ──────────────── | COMMENT |
| MEDIUM | core/wren-core-wasm/src/lib.rs | 1114 | // ── register_csv ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_web.py | 33 | # ── GET / ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_web.py | 69 | # ── GET /fields ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_web.py | 157 | # ── POST /save ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile.py | 85 | # ── Sensitive field masking ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile.py | 118 | # ── resolve_connection ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile.py | 277 | # ── from-file import helpers (used by CLI) ──────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile.py | 23 | # ── CRUD ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile.py | 148 | # ── resolve_profile_for_project ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile.py | 236 | # ── Round-trip persistence ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_cli.py | 63 | # ── add ─────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_cli.py | 190 | # ── import dbt ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_cli.py | 434 | # ── add --validate ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile_cli.py | 35 | # ── list ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile_cli.py | 357 | # ── switch ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile_cli.py | 381 | # ── rm ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/test_profile_cli.py | 398 | # ── debug ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_canner.py | 82 | # ── helper-level unit tests ─────────────────────────────────────────────── | STRING |
| MEDIUM | core/wren/tests/connectors/test_canner.py | 203 | # ── end-to-end testcontainer test ───────────────────────────────────────── | STRING |
| MEDIUM | core/wren/tests/connectors/test_trino.py | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_trino.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_trino.py | 104 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_trino.py | 107 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 141 | # ---------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 143 | # ---------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 311 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 313 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 428 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 435 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 214 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 216 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 102 | # ── Unit: WREN block extraction ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 138 | # ── Unit: extract_wren_config — precedence ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 178 | # ── Unit: _parse_source ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 216 | # ── Unit: _pick_expression ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 277 | # ── Unit: _is_calculated_expression ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 295 | # ── Integration: build_manifest_from_osi on minimal fixture ────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 369 | # ── Integration: build_json_from_osi (camelCase + layoutVersion) ────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 396 | # ── Integration: TPC-DS full fixture (exercises every warning path) ─────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 465 | # ── Integration: ref_sql source detection ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 481 | # ── Integration: multi semantic_model requires selection ────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 504 | # ── Integration: lint_osi_file ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_osi.py | 525 | # ── Regression: malformed inputs surface as ValidationError ────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_osi.py | 25 | # ── Fixtures ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_osi.py | 34 | # ── Unit: parse_osi / select_semantic_model ─────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_osi.py | 600 | # ── CLI integration ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_osi.py | 805 | # ── CLI: init --from-osi (one-way migration) ───────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_bigquery_adc.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | core/wren/tests/unit/test_bigquery_adc.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_skills_cli.py | 58 | # ── Ticket 1b: all bundled skills + --full + --script ─────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 69 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 71 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 100 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 102 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 114 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 116 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_engine.py | 173 | # ------------------------------------------------------------------ | COMMENT |
| 379 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/spodbtify_ab/run_eval.py | 9 | CODE | |
| LOW | core/wren/tests/test_profile_web.py | 3 | CODE | |
| LOW | core/wren/tests/test_cli_memory_detection.py | 4 | CODE | |
| LOW | core/wren/tests/test_field_registry.py | 3 | CODE | |
| LOW | core/wren/tests/test_profile.py | 3 | CODE | |
| LOW | core/wren/tests/test_profile_cli.py | 3 | CODE | |
| LOW | core/wren/tests/connectors/test_datafusion.py | 7 | CODE | |
| LOW | core/wren/tests/connectors/test_snowflake.py | 6 | CODE | |
| LOW | core/wren/tests/connectors/test_duckdb.py | 7 | CODE | |
| LOW | core/wren/tests/connectors/test_canner.py | 10 | CODE | |
| LOW | core/wren/tests/connectors/test_mysql_connector.py | 7 | CODE | |
| LOW | core/wren/tests/connectors/test_mysql.py | 7 | CODE | |
| LOW | core/wren/tests/connectors/test_trino.py | 14 | CODE | |
| LOW | core/wren/tests/connectors/test_mssql.py | 7 | CODE | |
| LOW | core/wren/tests/connectors/test_clickhouse.py | 8 | CODE | |
| LOW | core/wren/tests/connectors/test_postgres.py | 7 | CODE | |
| LOW | …e/wren/tests/unit/test_schema_indexer_unnamed_cubes.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_osi.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_bigquery_adc.py | 14 | CODE | |
| LOW | core/wren/tests/unit/test_skills_cli.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_version.py | 3 | CODE | |
| LOW | …/tests/unit/test_schema_indexer_rel_models_non_list.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_engine.py | 7 | CODE | |
| LOW | core/wren/tests/unit/test_ask_cli.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_genbi_deploy.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_genbi_build.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_duckdb_semicolon_unlimited.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_athena_limit_pushdown.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_cli_store_tip.py | 6 | CODE | |
| LOW | …e/wren/tests/unit/test_athena_strip_unlimited_query.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_mcp_server.py | 3 | CODE | |
| LOW | …wren/tests/unit/test_schema_indexer_non_dict_models.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_genbi_index.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_mysql_helpers.py | 8 | CODE | |
| LOW | core/wren/tests/unit/test_cte_rewriter.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_redshift_semicolon.py | 10 | CODE | |
| LOW | core/wren/tests/unit/test_connector_factory.py | 1 | CODE | |
| LOW | core/wren/tests/unit/test_served_content_guard.py | 11 | CODE | |
| LOW | core/wren/tests/unit/test_athena_connector.py | 7 | CODE | |
| LOW | core/wren/tests/unit/test_memory_load_cli.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_skill_stubs.py | 9 | CODE | |
| LOW | core/wren/tests/unit/test_index_backend.py | 8 | CODE | |
| LOW | core/wren/tests/unit/test_context_cli.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_memory_watch.py | 9 | CODE | |
| LOW | core/wren/tests/unit/test_postgres_autocommit.py | 8 | CODE | |
| LOW | core/wren/tests/unit/test_dbt.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_snowflake_limit_pushdown.py | 3 | CODE | |
| LOW | …e/wren/tests/unit/test_postgres_semicolon_unlimited.py | 8 | CODE | |
| LOW | core/wren/tests/unit/test_profile_env_expansion.py | 9 | CODE | |
| LOW | core/wren/tests/unit/test_cloud_cli.py | 12 | CODE | |
| LOW | core/wren/tests/unit/test_cli_profile_resolve.py | 5 | CODE | |
| LOW | core/wren/tests/unit/test_seed_queries.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_trino_parser.py | 10 | CODE | |
| LOW | core/wren/tests/unit/test_trino_parser.py | 272 | CODE | |
| LOW | core/wren/tests/unit/test_convert_mdl.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_clickhouse_helpers.py | 6 | CODE | |
| LOW | core/wren/tests/unit/test_case_sensitivity.py | 15 | CODE | |
| LOW | core/wren/tests/unit/test_profile_cli_flags.py | 15 | CODE | |
| LOW | core/wren/tests/unit/test_coerce_limit.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_canner_semicolon.py | 3 | CODE | |
| 125 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren-core-py/tests/test_modeling_core.py | 394 | except Exception as e: | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 449 | except Exception as e: | CODE |
| LOW | core/wren/tests/connectors/test_mssql.py | 41 | except Exception: | CODE |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 38 | def _have_mssql_driver() -> bool: | CODE |
| LOW | core/wren/tests/connectors/test_clickhouse.py | 98 | except Exception as e: # noqa: BLE001 | CODE |
| LOW⚡ | core/wren/tests/unit/test_databricks_semicolon.py | 64 | except Exception: | CODE |
| LOW | core/wren/src/wren/context_cli.py | 513 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/context_cli.py | 528 | except Exception as profile_exc: | CODE |
| LOW | core/wren/src/wren/context_cli.py | 862 | except Exception as exc: | CODE |
| LOW | core/wren/src/wren/cloud.py | 279 | except Exception: | CODE |
| LOW | core/wren/src/wren/cloud.py | 1598 | except Exception as exc: # noqa: BLE001 - any build failure is the user's | CODE |
| LOW | core/wren/src/wren/profile_web.py | 164 | except Exception: | CODE |
| LOW | core/wren/src/wren/profile.py | 194 | except Exception: | CODE |
| LOW | core/wren/src/wren/policy.py | 286 | except Exception: | CODE |
| LOW | core/wren/src/wren/cube_cli.py | 432 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/engine.py | 132 | except Exception as e: | CODE |
| LOW⚡ | core/wren/src/wren/engine.py | 150 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/engine.py | 224 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/engine.py | 254 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/context.py | 2175 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/context.py | 2199 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/cli.py | 41 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/cli.py | 418 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/cli.py | 442 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/cli.py | 503 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/cli.py | 531 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/cli.py | 548 | except Exception as e: | CODE |
| LOW⚡ | core/wren/src/wren/cli.py | 568 | except Exception: | CODE |
| LOW⚡ | core/wren/src/wren/cli.py | 574 | except Exception: | CODE |
| LOW⚡ | core/wren/src/wren/cli.py | 580 | except Exception: | CODE |
| LOW | core/wren/src/wren/profile_cli.py | 141 | except Exception as exc: | CODE |
| LOW | core/wren/src/wren/profile_cli.py | 382 | except Exception as exc: # noqa: BLE001 — surface whatever driver raises | CODE |
| LOW | core/wren/src/wren/mcp_server.py | 472 | except Exception: | CODE |
| LOW | core/wren/src/wren/mcp_server.py | 545 | except Exception as e: | CODE |
| MEDIUM | …skills_content/dlt-connector/scripts/introspect_dlt.py | 407 | print(f"Error: {duckdb_path} not found.", file=sys.stderr) | CODE |
| LOW | core/wren/src/wren/memory/cli.py | 169 | except Exception: | CODE |
| LOW | core/wren/src/wren/memory/watch.py | 133 | except Exception as exc: # noqa: BLE001 — surface count, keep change pending for retry | CODE |
| LOW | core/wren/src/wren/memory/watch.py | 195 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/redshift.py | 71 | except Exception as e: | CODE |
| MEDIUM | core/wren/src/wren/connector/redshift.py | 68 | def close(self) -> None: | CODE |
| LOW | core/wren/src/wren/connector/clickhouse.py | 439 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/trino.py | 538 | except Exception as e: | CODE |
| LOW⚡ | core/wren/src/wren/connector/mssql.py | 86 | except Exception as e: | CODE |
| LOW⚡ | core/wren/src/wren/connector/mssql.py | 180 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/mssql.py | 70 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/mssql.py | 110 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/mssql.py | 162 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/bigquery.py | 82 | except Exception as e: | CODE |
| MEDIUM | core/wren/src/wren/connector/bigquery.py | 79 | def close(self) -> None: | CODE |
| LOW | core/wren/src/wren/connector/snowflake.py | 106 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 211 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 333 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 350 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 365 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 368 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/spark.py | 50 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/databricks.py | 68 | except Exception as e: | CODE |
| MEDIUM | core/wren/src/wren/connector/databricks.py | 65 | def close(self) -> None: | CODE |
| LOW | core/wren/src/wren/connector/oracle.py | 222 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/datafusion.py | 80 | except Exception as e: | CODE |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | core/wren/tests/connectors/test_mysql.py | 0 | create table orders ( o_orderkey integer primary key, o_custkey integer not null, o_orderstatus char(1) not null, o_tota | STRING |
| HIGH | core/wren/tests/connectors/test_mssql.py | 0 | create table orders ( o_orderkey integer primary key, o_custkey integer not null, o_orderstatus char(1) not null, o_tota | STRING |
| HIGH | core/wren/tests/connectors/test_postgres.py | 0 | create table orders ( o_orderkey integer primary key, o_custkey integer not null, o_orderstatus char(1) not null, o_tota | STRING |
| HIGH | core/wren/tests/connectors/test_mysql.py | 0 | create table customer ( c_custkey integer primary key, c_name varchar(25) not null ) | STRING |
| HIGH | core/wren/tests/connectors/test_mssql.py | 0 | create table customer ( c_custkey integer primary key, c_name varchar(25) not null ) | STRING |
| HIGH | core/wren/tests/connectors/test_postgres.py | 0 | create table customer ( c_custkey integer primary key, c_name varchar(25) not null ) | STRING |
| HIGH | core/wren/tests/unit/test_oracle_semicolon.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_duckdb_semicolon_unlimited.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_redshift_semicolon.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_databricks_semicolon.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_clickhouse_helpers.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_canner_semicolon.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_datafusion_semicolon.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_trino_semicolon_unlimited.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| HIGH | core/wren/tests/unit/test_bigquery_semicolon.py | 0 | trailing `--` must not eat the wrap (same shape as postgres.py #2728). | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren-core-py/scripts/publish.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | core/wren-core-py/src/extractor.rs | 381 | match PyManifestExtractor::new(value) { | COMMENT |
| LOW | core/wren-core-py/src/extractor.rs | 401 | extractor: PyManifestExtractor, | COMMENT |
| LOW | core/wren-core-py/src/extractor.rs | 481 | #[case(&["orders"], &["orders_cube"])] | COMMENT |
| LOW | core/wren-core-py/src/remote_functions.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core-py/src/context.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core-wasm/src/lib.rs | 1 | //! # wren-core-wasm | COMMENT |
| LOW | core/wren-core-wasm/src/lib.rs | 21 | //! | COMMENT |
| LOW | core/wren-core-wasm/src/lib.rs | 41 | ctx: datafusion::execution::context::SessionContext, | COMMENT |
| LOW | core/wren-core-wasm/src/lib.rs | 181 | /// CSV is read with `arrow::csv::ReaderBuilder`. Schema is inferred from | COMMENT |
| LOW | core/wren-core-wasm/src/lib.rs | 281 | COMMENT | |
| LOW | core/wren-core-wasm/src/lib.rs | 581 | )) | COMMENT |
| LOW | core/wren/tests/unit/test_policy.py | 521 | ast = parse_one(sql, dialect="postgres") | COMMENT |
| LOW | core/wren/scripts/publish.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | core/wren/src/wren/cloud.py | 1061 | # `origin/<branch>` and the current branch, and a name mismatch makes | COMMENT |
| LOW | core/wren/src/wren/cloud.py | 1081 | already_linked = ( | COMMENT |
| LOW | core/wren/src/wren/cloud.py | 1101 | # way, so this stays a bind, not the update path. | COMMENT |
| LOW | core/wren/src/wren/cloud.py | 1341 | COMMENT | |
| LOW | core/wren/src/wren/cloud.py | 1681 | project_key = mint_project_key(api_host, project.id, org_key) | COMMENT |
| LOW | core/wren/src/wren/cloud.py | 1761 | org_id=project.org_id, | COMMENT |
| LOW | core/wren/src/wren/policy.py | 21 | from wren.config import WrenConfig | COMMENT |
| LOW | core/wren/src/wren/policy.py | 41 | # | COMMENT |
| LOW | core/wren/src/wren/policy.py | 121 | # | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 41 | } | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 101 | # aliases, cube columns, …). Render those with ``identify=True`` so the | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 281 | # the CTE alias share the same quoting, so the dialect folds them | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 361 | """ | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 381 | # against the ``normalize=False`` schema with no folding. | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 401 | ident = tbl.this | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 721 | # via its passthrough/fallback branch. | COMMENT |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 881 | # BigQuery — it treats the qualifier as a recursive reference to | COMMENT |
| LOW | core/wren/src/wren/connector/clickhouse.py | 321 | # ``unquote`` (not ``unquote_plus``): in a URL, ``+`` is only a space | COMMENT |
| LOW | core/wren-core/rustfmt.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/taplo.toml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/core/src/mdl/mod.rs | 2941 | /// A model with multiple calculated columns that traverse *different* | COMMENT |
| LOW | core/wren-core/core/src/mdl/mod.rs | 5501 | .await?; | COMMENT |
| LOW | core/wren-core/core/src/mdl/cube.rs | 1 | //! SQL generation from `CubeQuery` to plain `SELECT … GROUP BY` SQL. | COMMENT |
| LOW | core/wren-core/core/src/mdl/utils.rs | 221 | return plan_err!("Error for creating schemas: {}", qualified_col); | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 41 | pub type SessionPropertiesRef = Arc<HashMap<String, Option<String>>>; | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 101 | /// transform entrypoint when generating remote SQL. | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 361 | // be casted to the target type if needed | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 381 | // Disable ScalarSubqueryToJoin to avoid generate invalid sql (join without condition) | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 401 | // TODO: Sort with pushdown-limit doesn't support to be unparse | COMMENT |
| LOW | …n-core/core/src/logical_plan/optimize/type_coercion.rs | 961 | // or: | COMMENT |
| LOW | …en-core/core/src/logical_plan/analyze/model_anlayze.rs | 41 | /// and pass them to the ModelPlanNode. | COMMENT |
| LOW | core/wren-core/core/src/logical_plan/analyze/scope.rs | 21 | /// SELECT a, b, c FROM table | COMMENT |
| LOW | …re/src/logical_plan/analyze/access_control/provider.rs | 21 | COMMENT | |
| LOW | …re/core/src/logical_plan/analyze/access_control/mod.rs | 281 | default_null_ordering: sql_parser.default_null_ordering.as_str().into(), | COMMENT |
| LOW | core/wren-core/benchmarks/bench.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | core/wren-core/benchmarks/requirements.txt | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/benchmarks/compare.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | core/wren-core/sqllogictest/bin/sqllogictests.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/sqllogictest/bin/sqllogictests.rs | 281 | /// | COMMENT |
| LOW | core/wren-core/sqllogictest/src/test_context.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/sqllogictest/src/test_context.rs | 181 | // TODO: duplicate `orders.customer_state` | COMMENT |
| LOW | core/wren-core/sqllogictest/src/engine/conversion.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/sqllogictest/src/engine/normalize.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/sqllogictest/src/engine/normalize.rs | 61 | COMMENT | |
| LOW | core/wren-core/sqllogictest/src/engine/normalize.rs | 121 | COMMENT | |
| LOW | core/wren-core/sqllogictest/src/engine/error.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | core/wren/tests/unit/test_databricks_semicolon.py | 64 | except Exception: | CODE |
| HIGH | core/wren/src/wren/profile_web.py | 251 | except KeyboardInterrupt: | CODE |
| HIGH | core/wren/src/wren/memory/cli.py | 238 | except ( | CODE |
| HIGH | core/wren/src/wren/connector/snowflake.py | 106 | except Exception: | CODE |
| HIGH | core/wren/src/wren/connector/postgres.py | 365 | except Exception: | CODE |
| HIGH | core/wren/src/wren/connector/spark.py | 50 | except Exception: | CODE |
| HIGH | core/wren/src/wren/connector/oracle.py | 222 | except Exception: | CODE |
| HIGH | core/wren/src/wren/connector/athena.py | 346 | except Exception: | CODE |
| HIGH | core/wren/src/wren/genbi/tokens.py | 38 | except ImportError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | core/wren/tests/connectors/test_snowflake.py | 147 | assert result.equals(expected) | CODE |
| HIGH | core/wren/tests/connectors/test_snowflake.py | 165 | assert result.equals(returned) | CODE |
| HIGH⚡ | core/wren/tests/unit/test_osi.py | 287 | ("a || b", "concat", True), # concat | CODE |
| HIGH⚡ | core/wren/tests/unit/test_profile_env_expansion.py | 149 | (mirrors the typical ``cd subdir && wren --sql`` usage).""" | STRING |
| HIGH⚡ | core/wren/tests/unit/test_clickhouse_helpers.py | 263 | and that None values in the result rows are preserved as null, not coerced | STRING |
| HIGH | core/wren/tests/unit/test_context.py | 1380 | """YAML `dimensions:` (null) must become [] so mdl.json never carries null.""" | STRING |
| HIGH | core/wren/tests/unit/test_context.py | 2079 | """Explicit `columns:` (YAML null) is present and non-list — report it.""" | STRING |
| HIGH | core/wren/tests/unit/test_cube_cli.py | 109 | """Explicit cubes: null is invalid (Rust Vec rejects null; missing is empty).""" | STRING |
| HIGH | core/wren/src/wren/profile.py | 175 | f"profiles.yml: 'active' must be a string or null; got {type(active).__name__}.\n" | CODE |
| HIGH | core/wren/src/wren/context.py | 72 | | Rebuild after changes | `wren context build && wren memory index` | | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/spodbtify_ab/run_eval.py | 92 | CODE | |
| LOW | …re/wren-core-py/tests/test_same_context_concurrency.py | 103 | CODE | |
| LOW | …re/wren-core-py/tests/test_same_context_concurrency.py | 196 | CODE | |
| LOW | core/wren/tests/unit/test_served_content_guard.py | 28 | CODE | |
| LOW | core/wren/src/wren/context_cli.py | 702 | CODE | |
| LOW | core/wren/src/wren/dbt.py | 753 | CODE | |
| LOW | core/wren/src/wren/dbt.py | 1139 | CODE | |
| LOW | core/wren/src/wren/osi.py | 403 | CODE | |
| LOW | core/wren/src/wren/profile.py | 325 | CODE | |
| LOW | core/wren/src/wren/policy.py | 323 | CODE | |
| LOW | core/wren/src/wren/policy.py | 425 | CODE | |
| LOW | core/wren/src/wren/docs.py | 145 | CODE | |
| LOW | core/wren/src/wren/docs.py | 168 | CODE | |
| LOW | core/wren/src/wren/cube_cli.py | 193 | CODE | |
| LOW | core/wren/src/wren/context.py | 324 | CODE | |
| LOW | core/wren/src/wren/context.py | 990 | CODE | |
| LOW | core/wren/src/wren/context.py | 2111 | CODE | |
| LOW | core/wren/src/wren/context.py | 2140 | CODE | |
| LOW | core/wren/src/wren/cli.py | 151 | CODE | |
| LOW | core/wren/src/wren/cli.py | 450 | CODE | |
| LOW | core/wren/src/wren/profile_cli.py | 395 | CODE | |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 614 | CODE | |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 844 | CODE | |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 913 | CODE | |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 1000 | CODE | |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 1081 | CODE | |
| LOW | core/wren/src/wren/mdl/cte_rewriter.py | 1027 | CODE | |
| LOW | core/wren/src/wren/memory/cli.py | 136 | CODE | |
| LOW | core/wren/src/wren/memory/cli.py | 178 | CODE | |
| LOW | core/wren/src/wren/memory/watch.py | 150 | CODE | |
| LOW | core/wren/src/wren/model/field_registry.py | 258 | CODE | |
| LOW | core/wren/src/wren/connector/clickhouse.py | 197 | CODE | |
| LOW | core/wren/src/wren/connector/trino.py | 156 | CODE | |
| LOW | core/wren/src/wren/connector/mssql.py | 119 | CODE | |
| LOW | core/wren/src/wren/connector/mssql.py | 277 | CODE | |
| LOW | core/wren/src/wren/connector/postgres.py | 199 | CODE | |
| LOW | core/wren/src/wren/connector/oracle.py | 90 | CODE | |
| LOW | core/wren/src/wren/connector/duckdb.py | 147 | CODE | |
| LOW | core/wren/src/wren/connector/athena.py | 141 | CODE | |
| LOW | core/wren/src/wren/connector/canner.py | 130 | CODE | |
| LOW | core/wren/src/wren/connector/mysql.py | 529 | CODE | |
| LOW | sdk/wren-pydantic/src/wren_pydantic/_errors.py | 82 | CODE | |
| LOW | sdk/wren-langchain/examples/langgraph_demo.py | 127 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 314 | ### Step 1: Discover cubes | COMMENT |
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 324 | ### Step 2: Inspect cube structure | COMMENT |
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 333 | ### Step 3: Match user's question to cube measures + dimensions | COMMENT |
| LOW | core/wren/src/wren/skills_content/usage/SKILL.md | 345 | ### Step 4: Execute via CLI flags OR JSON input | COMMENT |
| LOW | core/wren/src/wren/skills_content/usage/SKILL.md | 380 | ### Step 5: Error recovery | COMMENT |
| LOW⚡ | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 52 | ### Step 1: Pick the SaaS source | COMMENT |
| LOW⚡ | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 56 | ### Step 2: Install dlt | COMMENT |
| LOW⚡ | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 62 | ### Step 3: Write the pipeline script | COMMENT |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 87 | ### Step 4: Set up credentials | COMMENT |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 102 | ### Step 5: Run the pipeline | COMMENT |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 203 | ### Step 1: Build the MDL | STRING |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 212 | ### Step 2: Validate with a real query | STRING |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 226 | ### Step 3: Run interesting queries | STRING |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 241 | ### Step 4: Confirm success | STRING |
| LOW | docs/core/get_started/quickstart.md | 37 | ## Step 0: Create a Python virtual environment | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 50 | ## Step 1: Seed the jaffle_shop dataset | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 89 | ## Step 2: Install wrenai Python package | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 112 | ## Step 3: Install the CLI skill | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 135 | ## Step 4: Set up a profile | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 190 | ## Step 5: Initialize a Wren project | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 225 | ## Step 6: Generate MDL with Claude Code | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 272 | ## Step 7: Start asking questions | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 300 | ## Step 8: Add and query a cube (optional) | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 333 | ## Step 9: Build and deploy a GenBI dashboard (optional) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | core/wren/tests/unit/test_context_cli.py | 352 | # Other scaffold files are still produced | COMMENT |
| MEDIUM | core/wren/tests/unit/test_cloud.py | 881 | # body. This must never be silently misdiagnosed as "not agentic": that | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_context.py | 2619 | # Minimal project scaffold for validate_project | COMMENT |
| MEDIUM | core/wren/src/wren/context_cli.py | 292 | # Empty relationships.yml (shared between empty and full scaffold) | COMMENT |
| MEDIUM | core/wren/src/wren/cloud.py | 1595 | # and the scaffold does not ignore it, so the bind below would push a | COMMENT |
| MEDIUM | core/wren/src/wren/memory/schema_indexer.py | 61 | # description fits comfortably in a single LLM context window and | COMMENT |
| MEDIUM | core/wren-core/benchmarks/bench.sh | 21 | # etc and orchestrates gathering data and run the benchmark binary in | COMMENT |
| MEDIUM | docs/core/guides/model.md | 32 | ## What scaffolding gives you | COMMENT |
| MEDIUM | docs/core/guides/model.md | 43 | ## What scaffolding cannot give you | COMMENT |
| MEDIUM | docs/core/guides/manage_project.md | 19 | wren context init # scaffold a new project in cwd | CODE |
| MEDIUM | docs/core/concepts/agent_learning.md | 15 | ## Two phases: scaffold fast, enrich deep | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | core/wren/tests/unit/test_spark_semicolon.py | 71 | session.sql.return_value.limit.return_value.count.assert_called_once_with() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren/tests/unit/test_context.py | 1547 | def _set_v1_entity_name(project_path: Path, entity: str, name: str) -> None: | CODE |
| LOW | core/wren/tests/unit/test_context.py | 1566 | def _set_v1_view_statement(project_path: Path, statement: int) -> None: | CODE |
| LOW | core/wren/tests/unit/test_context.py | 1579 | def _set_v1_model_ref_sql(project_path: Path, ref_sql: int) -> None: | CODE |
| LOW | core/wren/src/wren/cloud.py | 1233 | def _set_upstream(target: Path, branch: str) -> None: | CODE |
| LOW | core/wren/src/wren/profile_web.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | core/wren/src/wren/__init__.py | 15 | __all__ = ["WrenEngine", "DataSource", "WrenError", "__version__"] | CODE |
| LOW | core/wren/src/wren/memory/__init__.py | 112 | __all__ = ["WrenMemory"] | CODE |
| LOW | core/wren/src/wren/connector/__init__.py | 4 | __all__ = ["ConnectorABC", "get_connector"] | CODE |
| LOW | sdk/wren-pydantic/src/wren_pydantic/__init__.py | 10 | __all__ = [ | CODE |
| LOW | sdk/wren-langchain/src/wren_langchain/__init__.py | 11 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren/src/wren/model/field_registry.py | 168 | "placeholder": "eyJ...", | CODE |
| LOW⚡ | core/wren/src/wren/model/field_registry.py | 184 | "format": {"label": "File Format", "placeholder": "parquet"}, | CODE |
| LOW⚡ | core/wren/src/wren/model/field_registry.py | 189 | "placeholder": "/data", | CODE |
| LOW⚡ | core/wren/src/wren/model/field_registry.py | 195 | "url": {"label": "Root Path", "placeholder": "/data"}, | CODE |
| LOW | core/wren/src/wren/model/field_registry.py | 306 | placeholder=overrides.get("placeholder", base_placeholder), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren-core-py/scripts/publish.sh | 5 | # Usage: | COMMENT |
| LOW | core/wren/scripts/publish.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/sync-docs.sh | 10 | # Usage: | COMMENT |
| LOW | skills/install.sh | 9 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren/src/wren/cloud_cli.py | 317 | CODE | |
| LOW | core/wren/src/wren/serve_cli.py | 122 | CODE | |
| LOW | core/wren/src/wren/cube_cli.py | 313 | CODE | |
| LOW | core/wren/src/wren/cli.py | 356 | CODE | |
| LOW | core/wren/src/wren/profile_cli.py | 38 | CODE | |
| LOW | core/wren/src/wren/mcp_server.py | 146 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | core/wren/src/wren/model/field_registry.py | 342 | Return ordered FieldDef list for a datasource. Args: datasource: DataSource name (e.g. "bigquery"). | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/wren/tests/unit/test_memory_watch.py | 72 | # watcher reindexes on disappearance, not just add/edit. | COMMENT |