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 presents the forensic synthetic code analysis of Canner/WrenAI, a Python project with 15,804 GitHub stars. SynthScan v2.0 examined 98,688 lines of code across 551 source files, recording 1932 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 30.6 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1932 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 | 58 | # ── GET /fields ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/test_profile_web.py | 146 | # ── 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 | 140 | # ---------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 142 | # ---------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 93 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 95 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 255 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | core/wren/tests/connectors/test_postgres.py | 262 | # --------------------------------------------------------------------------- | COMMENT |
| 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 | 775 | # ── CLI: init --from-osi (one-way migration) ───────────────────────────── | 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_genbi_deploy.py | 55 | # ── TokenResolver ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | core/wren/tests/unit/test_genbi_deploy.py | 78 | # ── Vercel deploy ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_genbi_deploy.py | 206 | # ── Cloudflare deploy (shells out to wrangler) ────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_genbi_deploy.py | 370 | # ── Never fabricate a deployment URL ──────────────────────────────────────── | COMMENT |
| MEDIUM | core/wren/tests/unit/test_genbi_build.py | 17 | # ── Helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| 315 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren-core-py/tests/test_modeling_core.py | 157 | def test_get_available_functions(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 227 | def test_extractor_with_invalid_manifest(value, expected_error, error_message): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 247 | def test_resolve_used_table_names(sql, expected): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 451 | def test_backward_compatible_check(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 556 | def test_case_sensitive_without_quote(): | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 595 | def test_concurrent_calls_from_threads(): | CODE |
| LOW | core/wren-core-py/tests/test_cube.py | 75 | def test_time_dimension_with_date_range(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 128 | def test_unknown_measure_error(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 134 | def test_invalid_cube_query_json(): | CODE |
| LOW⚡ | core/wren-core-py/tests/test_cube.py | 139 | def test_invalid_manifest_json(): | 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 | 52 | def test_form_has_save_button(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 61 | def test_fields_endpoint_postgres(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 72 | def test_fields_endpoint_password_type(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 78 | def test_fields_endpoint_bigquery_file_input(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 88 | def test_fields_with_variant_bigquery_project(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 95 | def test_fields_with_variant_bigquery_dataset(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 103 | def test_fields_variant_selector_rendered(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 112 | def test_fields_no_variant_selector_for_postgres(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 118 | def test_fields_empty_datasource_returns_empty(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 125 | def test_fields_duckdb_url_label(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 131 | def test_fields_duckdb_format_hidden(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 138 | def test_fields_snowflake_schema_label(client): | CODE |
| LOW⚡ | core/wren/tests/test_profile_web.py | 149 | def test_save_creates_profile(isolated_profiles): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 175 | def test_save_populates_result_dict(isolated_profiles): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 187 | def test_save_missing_datasource(client): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 195 | def test_save_with_json_fallback(isolated_profiles): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 217 | def test_save_invalid_json_returns_error(client): | CODE |
| LOW | core/wren/tests/test_profile_web.py | 255 | 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 | 28 | def test_get_datasource_options_sorted(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 36 | def test_get_fields_returns_field_defs(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 43 | def test_get_fields_postgres_names(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 61 | def test_auto_derive_password(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 71 | def test_auto_derive_placeholder_from_examples(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 79 | def test_ui_override_bigquery_credentials(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 89 | def test_datasource_override_duckdb_url(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 97 | def test_datasource_override_duckdb_format_hidden(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 105 | def test_datasource_override_local_file_url(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 135 | def test_get_fields_bigquery_default_variant(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 145 | def test_get_fields_bigquery_project_variant(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 153 | def test_no_missing_overrides_sf_schema(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 160 | def test_no_missing_overrides_trino_schema(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 167 | def test_snowflake_sf_schema_alias(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 173 | def test_hidden_discriminator_fields(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 197 | def test_fields_match_mcp_web_ui_postgres(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 204 | def test_fields_match_mcp_web_ui_snowflake(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 211 | def test_fields_match_mcp_web_ui_bigquery(): | CODE |
| LOW⚡ | core/wren/tests/test_field_registry.py | 218 | def test_unknown_datasource_raises(): | CODE |
| LOW | core/wren/tests/test_field_registry.py | 16 | def test_all_datasources_covered(): | CODE |
| LOW | core/wren/tests/test_field_registry.py | 184 | def test_databricks_catalog_field_is_optional(): | CODE |
| LOW | core/wren/tests/test_field_registry.py | 232 | def test_dict_fields_excluded(): | CODE |
| LOW | core/wren/tests/test_field_registry.py | 247 | def test_get_fields_all_datasources(): | CODE |
| LOW | core/wren/tests/test_field_registry.py | 255 | def test_get_fields_all_variants(): | CODE |
| LOW⚡ | core/wren/tests/test_profile.py | 79 | def test_remove_last_profile_clears_active(): | CODE |
| LOW⚡ | core/wren/tests/test_profile.py | 88 | def test_debug_masks_sensitive(): | CODE |
| LOW⚡ | core/wren/tests/test_profile.py | 108 | def test_debug_no_active_profile(): | CODE |
| LOW⚡ | core/wren/tests/test_profile.py | 113 | def test_debug_unknown_profile(): | CODE |
| 1089 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 | core/wren/tests/unit/test_osi.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_skills_cli.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_version.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_athena_limit_pushdown.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_cli_store_tip.py | 6 | 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_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_dbt.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_snowflake_limit_pushdown.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_profile_env_expansion.py | 9 | 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 | 243 | 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_config.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_oracle_url_decode.py | 14 | CODE | |
| LOW | core/wren/tests/unit/test_databricks_connector.py | 1 | CODE | |
| LOW | core/wren/tests/unit/test_context.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_context.py | 10 | CODE | |
| LOW | core/wren/tests/unit/test_context.py | 1490 | CODE | |
| LOW | core/wren/tests/unit/test_memory.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_type_mapping.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_memory_markdown.py | 7 | CODE | |
| LOW | core/wren/tests/unit/test_cube_cli.py | 3 | CODE | |
| LOW | core/wren/tests/unit/test_policy.py | 6 | CODE | |
| LOW | core/wren/tests/unit/test_mssql_connection.py | 16 | CODE | |
| LOW | core/wren/tests/unit/test_genbi_verify.py | 3 | CODE | |
| LOW | core/wren/tests/suite/manifests.py | 3 | CODE | |
| 102 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/wren-core-py/tests/test_modeling_core.py | 389 | except Exception as e: | CODE |
| LOW | core/wren-core-py/tests/test_modeling_core.py | 444 | except Exception as e: | CODE |
| LOW | core/wren/tests/connectors/test_mssql.py | 40 | except Exception: | CODE |
| MEDIUM | core/wren/tests/connectors/test_mssql.py | 37 | 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/src/wren/context_cli.py | 493 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/context_cli.py | 508 | except Exception as profile_exc: | CODE |
| LOW | core/wren/src/wren/context_cli.py | 838 | except Exception as exc: | CODE |
| LOW | core/wren/src/wren/profile_web.py | 160 | except Exception: | CODE |
| LOW | core/wren/src/wren/profile.py | 193 | except Exception: | CODE |
| LOW | core/wren/src/wren/cube_cli.py | 314 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/engine.py | 120 | except Exception as e: | CODE |
| LOW⚡ | core/wren/src/wren/engine.py | 136 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/engine.py | 205 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/engine.py | 229 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/context.py | 1624 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/context.py | 1648 | 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 | 425 | except Exception: | CODE |
| LOW | core/wren/src/wren/mcp_server.py | 500 | 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 | 142 | except Exception: | CODE |
| LOW | core/wren/src/wren/memory/watch.py | 126 | except Exception: # noqa: BLE001 — surface count, keep change pending for retry | CODE |
| LOW | core/wren/src/wren/memory/watch.py | 174 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/redshift.py | 68 | except Exception as e: | CODE |
| MEDIUM | core/wren/src/wren/connector/redshift.py | 65 | def close(self) -> None: | CODE |
| LOW | core/wren/src/wren/connector/clickhouse.py | 431 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/trino.py | 435 | 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 | 167 | 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 | 107 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/mssql.py | 149 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/bigquery.py | 52 | except Exception as e: | CODE |
| MEDIUM | core/wren/src/wren/connector/bigquery.py | 49 | def close(self) -> None: | CODE |
| LOW | core/wren/src/wren/connector/snowflake.py | 105 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 158 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 265 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 282 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 297 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/postgres.py | 300 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/spark.py | 45 | 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 | 218 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/datafusion.py | 73 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/duckdb.py | 71 | except Exception: | CODE |
| LOW | core/wren/src/wren/connector/duckdb.py | 158 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/duckdb.py | 168 | except Exception as e: | CODE |
| LOW | core/wren/src/wren/connector/athena.py | 74 | except Exception: | CODE |
| 17 more matches not shown… | ||||
| 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 | validate_sql_policy(ast, _MODELS, config) | COMMENT |
| LOW | core/wren/scripts/publish.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | core/wren/src/wren/policy.py | 21 | # outside the manifest and must not be treated as a disallowed table-valued | COMMENT |
| LOW | core/wren/src/wren/policy.py | 41 | # under strict mode, in EVERY AST position — not just the FROM/JOIN source slot | 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 | # the mssql / mysql / oracle / trino URL handling in this package. | 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 | 2621 | /// first relationship's terminal node and the chain was silently | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 221 | // be casted to the target type if needed | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 241 | // Disable ScalarSubqueryToJoin to avoid generate invalid sql (join without condition) | COMMENT |
| LOW | core/wren-core/core/src/mdl/context.rs | 261 | // TODO: Sort with pushdown-limit doesn't support to be unparse | COMMENT |
| LOW | …n-core/core/src/logical_plan/optimize/type_coercion.rs | 901 | .map(|(i, expr)| expr.cast_to(&new_types[i], schema)) | COMMENT |
| LOW | …n-core/core/src/logical_plan/optimize/type_coercion.rs | 921 | // | COMMENT |
| LOW | …en-core/core/src/logical_plan/analyze/model_anlayze.rs | 21 | use std::fmt::Debug; | COMMENT |
| LOW | core/wren-core/core/src/logical_plan/analyze/plan.rs | 1081 | // skip the calculated field | COMMENT |
| LOW | core/wren-core/core/src/logical_plan/analyze/scope.rs | 21 | /// SELECT a, b, c FROM table | COMMENT |
| LOW | …n-core/core/src/logical_plan/analyze/access_control.rs | 281 | } | 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 |
| LOW | core/wren-core/sqllogictest/src/engine/runner.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/sqllogictest/src/engine/mod.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | core/wren-core/sqllogictest/src/engine/output.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | docs/core/.sync.yml | 1 | # Declarative sync config: WrenAI/docs/core → doc website | COMMENT |
| LOW | sdk/wren-pydantic/pyproject.toml | 61 | COMMENT | |
| LOW | sdk/wren-langchain/pyproject.toml | 61 | redshift = ["wrenai[redshift]>=0.7.0"] | COMMENT |
| LOW | scripts/sync-docs.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/actions/rust/setup-windows-builder/action.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .github/actions/rust/setup-builder/action.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | .github/actions/rust/setup-macos-builder/action.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | …b/actions/rust/setup-macos-aarch64-builder/action.yaml | 1 | # Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 313 | ### Step 1: Discover cubes | COMMENT |
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 323 | ### Step 2: Inspect cube structure | COMMENT |
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 332 | ### Step 3: Match user's question to cube measures + dimensions | COMMENT |
| LOW⚡ | core/wren/src/wren/skills_content/usage/SKILL.md | 342 | ### Step 4: Execute via CLI flags OR JSON input | COMMENT |
| LOW | core/wren/src/wren/skills_content/usage/SKILL.md | 364 | ### 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 | 200 | ### Step 1: Build the MDL | STRING |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 209 | ### Step 2: Validate with a real query | STRING |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 223 | ### Step 3: Run interesting queries | STRING |
| LOW | …re/wren/src/wren/skills_content/dlt-connector/SKILL.md | 238 | ### 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 | 76 | ## Step 2: Install wrenai Python package | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 99 | ## Step 3: Install the CLI skill | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 122 | ## Step 4: Set up a profile | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 177 | ## Step 5: Initialize a Wren project | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 212 | ## Step 6: Generate MDL with Claude Code | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 258 | ## Step 7: Start asking questions | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 286 | ## Step 8: Add and query a cube (optional) | COMMENT |
| LOW | docs/core/get_started/quickstart.md | 319 | ## Step 9: Build and deploy a GenBI dashboard (optional) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/spodbtify_ab/run_eval.py | 92 | CODE | |
| LOW | core/wren/tests/unit/test_served_content_guard.py | 28 | CODE | |
| LOW | core/wren/src/wren/context_cli.py | 678 | 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 | 324 | CODE | |
| LOW | core/wren/src/wren/policy.py | 200 | CODE | |
| LOW | core/wren/src/wren/policy.py | 302 | CODE | |
| LOW | core/wren/src/wren/docs.py | 145 | CODE | |
| LOW | core/wren/src/wren/docs.py | 168 | CODE | |
| LOW | core/wren/src/wren/context.py | 306 | CODE | |
| LOW | core/wren/src/wren/context.py | 849 | CODE | |
| LOW | core/wren/src/wren/context.py | 1560 | CODE | |
| LOW | core/wren/src/wren/context.py | 1589 | 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/schema_indexer.py | 220 | CODE | |
| LOW | core/wren/src/wren/memory/cli.py | 109 | CODE | |
| LOW | core/wren/src/wren/memory/cli.py | 151 | CODE | |
| LOW | core/wren/src/wren/memory/watch.py | 141 | CODE | |
| LOW | core/wren/src/wren/model/field_registry.py | 258 | CODE | |
| LOW | core/wren/src/wren/connector/clickhouse.py | 194 | CODE | |
| LOW | core/wren/src/wren/connector/trino.py | 152 | CODE | |
| LOW | core/wren/src/wren/connector/mssql.py | 116 | CODE | |
| LOW | core/wren/src/wren/connector/mssql.py | 264 | CODE | |
| LOW | core/wren/src/wren/connector/postgres.py | 146 | CODE | |
| LOW | core/wren/src/wren/connector/oracle.py | 90 | CODE | |
| LOW | core/wren/src/wren/connector/duckdb.py | 141 | 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 | 399 | 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 |
|---|---|---|---|---|
| HIGH⚡ | core/wren/tests/connectors/test_snowflake.py | 147 | assert result.equals(expected) | 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 | 235 | and that None values in the result rows are preserved as null, not coerced | STRING |
| HIGH | core/wren/src/wren/profile.py | 174 | f"profiles.yml: 'active' must be a string or null; got {type(active).__name__}.\n" | CODE |
| HIGH | core/wren/src/wren/context.py | 71 | | Rebuild after changes | `wren context build && wren memory index` | | CODE |
| 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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | core/wren/tests/unit/test_context_cli.py | 306 | # Other scaffold files are still produced | COMMENT |
| MEDIUM | core/wren/src/wren/context_cli.py | 288 | # Empty relationships.yml (shared between empty and full scaffold) | COMMENT |
| MEDIUM | core/wren/src/wren/memory/schema_indexer.py | 27 | # 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 |
|---|---|---|---|---|
| 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/profile_web.py | 32 | 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/serve_cli.py | 122 | CODE | |
| LOW | core/wren/src/wren/cube_cli.py | 206 | 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 | 114 | 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 |