Blazing-fast Data-Wrangling toolkit
This report presents the forensic synthetic code analysis of dathere/qsv, a Rust project with 3,769 GitHub stars. SynthScan v2.0 examined 469,038 lines of code across 822 source files, recording 1421 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 4.3 places this repository in the Likely human-written 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 1421 distinct pattern matches across 19 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 |
|---|---|---|---|---|
| LOW | Cargo.toml | 21 | "LICENSE-MIT", | COMMENT |
| LOW | Cargo.toml | 301 | # export through a webdriver-managed headless browser. NO polars dependency. See #302. | COMMENT |
| LOW | Cargo.toml | 481 | COMMENT | |
| LOW | Cargo.toml | 501 | # apply — so we must replicate polars' patch here, otherwise polars-io fails to | COMMENT |
| LOW | Cargo.toml | 521 | # drops its own [patch.crates-io] object_store override; OR | COMMENT |
| LOW | Cargo.toml | 541 | # use our patched fork until our PR is merged with bumped deps and quick-xml RUSTSEC fixes | COMMENT |
| LOW | Cargo.toml | 561 | # - if we are using a commit hash, separate the tag and commit hash with a colon, in the order of | COMMENT |
| LOW | Cargo.toml | 581 | # kernels at runtime, so enabling it for all x86_64 builds is safe. | COMMENT |
| LOW | Cargo.toml | 681 | magika = ["dep:magika", "dep:ort"] | COMMENT |
| LOW | Cargo.toml | 701 | to = ["csvs_convert", "dep:spreadsheet-ods"] | COMMENT |
| LOW | bacon.toml | 21 | "cargo", "clippy", | COMMENT |
| LOW | .serena/project.yml | 1 | # the name by which the project can be referenced within Serena/when chatting with the LLM. | COMMENT |
| LOW | .serena/project.yml | 41 | # This extends the existing inclusions (e.g. from the global configuration). | COMMENT |
| LOW | .serena/project.yml | 61 | # Otherwise, this overrides the setting from the global configuration (serena_config.yml). | COMMENT |
| LOW | .serena/project.yml | 81 | # Note: the backend is fixed at startup. If a project with a different backend | COMMENT |
| LOW | .serena/project.yml | 101 | COMMENT | |
| LOW | .serena/project.yml | 121 | # - ../shared-lib | COMMENT |
| LOW | .serena/project.yml | 141 | # backstop for non-terminating commands; on expiry the process is killed and activation continues. | COMMENT |
| LOW | .serena/project.yml | 161 | # rego ruby ruby_solargraph rust scala | COMMENT |
| LOW | resources/describegpt_defaults.toml | 21 | # otherwise inserts | COMMENT |
| LOW | resources/describegpt_defaults.toml | 41 | # {{ sample_size }} - The number of rows in the random sample. | COMMENT |
| LOW | resources/describegpt_defaults.toml | 381 | Summary Statistics (CSV): | COMMENT |
| LOW | resources/describegpt_md_defaults.toml | 1 | name = "qsv Default Markdown Template File" | COMMENT |
| LOW | resources/describegpt_md_defaults.toml | 21 | # content_type, min, max, cardinality, enumeration, null_count, | COMMENT |
| LOW | resources/describegpt_md_defaults.toml | 101 | # the `{DATASET_DESCRIPTION}` and `{SEMANTICMD_TAGS}` placeholders are substituted afterwards | COMMENT |
| LOW | resources/profiles/geoconnex.yaml | 1 | # Geoconnex hydrologic linked-data projection profile | COMMENT |
| LOW | resources/profiles/geoconnex.yaml | 21 | # Discovery merge: disabled. Geoconnex contributors typically author | COMMENT |
| LOW | resources/profiles/geoconnex.yaml | 121 | # ========================================================================= | COMMENT |
| LOW | resources/profiles/geoconnex.yaml | 261 | # Catalog envelope | COMMENT |
| LOW | resources/profiles/dcat-ap-v3.yaml | 1 | # DCAT-AP v3 projection profile (https://semiceu.github.io/DCAT-AP/releases/3.0.0/) | COMMENT |
| LOW | resources/profiles/croissant.yaml | 1 | # Croissant 1.1 ML metadata profile (https://github.com/mlcommons/croissant) | COMMENT |
| LOW | resources/profiles/croissant.yaml | 21 | # remains the faster option but is not in the Croissant vocabulary; | COMMENT |
| LOW | resources/profiles/croissant.yaml | 241 | # 1.1: `citeAs` is a first-class cr: term defined in the @context; | COMMENT |
| LOW | resources/profiles/croissant.yaml | 281 | # `res.url` if one was supplied (URL inputs, --initial-context), else | COMMENT |
| LOW | resources/profiles/croissant.yaml | 301 | COMMENT | |
| LOW | resources/profiles/croissant.yaml | 321 | # build_croissant_fields helper) so we can include the canonical | COMMENT |
| LOW | resources/profiles/dcat-us-v3.yaml | 1 | # DCAT-US v3 projection profile | COMMENT |
| LOW | tests/test_apply.rs | 1321 | ]; | COMMENT |
| LOW | tests/test_profile.rs | 301 | COMMENT | |
| LOW | tests/test_profile.rs | 1641 | // and lands at the default "stdin.metadata.json" in the workdir. | COMMENT |
| LOW | tests/test_profile.rs | 1921 | ); | COMMENT |
| LOW | tests/test_profile.rs | 2041 | #[test] | COMMENT |
| LOW | tests/test_alloc_tuning.rs | 1 | //! Regression tests for startup allocator-tuning ordering (roborev #2717 / #2718). | COMMENT |
| LOW | tests/test_alloc_tuning.rs | 21 | COMMENT | |
| LOW | tests/test_synthesize.rs | 421 | err.contains("does not exist") || err.contains("not a file"), | COMMENT |
| LOW | tests/test_synthesize.rs | 781 | ); | COMMENT |
| LOW | tests/test_describegpt.rs | 4121 | "--strict-dates should emit `format: \"date\"` on Date columns" | COMMENT |
| LOW | tests/test_describegpt.rs | 4261 | COMMENT | |
| LOW | tests/test_moarstats.rs | 4701 | ); | COMMENT |
| LOW | tests/test_moarstats.rs | 4841 | // joint-frequency maps and their merge in `compute_all_bivariatestats` have no | COMMENT |
| LOW | tests/test_moarstats.rs | 5061 | COMMENT | |
| LOW | tests/test_moarstats.rs | 5241 | "--bivariate-batch {k} changed the output on a duplicate-header CSV; a column's \ | COMMENT |
| LOW | tests/test_moarstats.rs | 5261 | // unreachable in practice: `update_correlation_state` only fires when BOTH sides | COMMENT |
| LOW | tests/test_moarstats.rs | 6701 | ); | COMMENT |
| LOW | tests/test_moarstats.rs | 6901 | COMMENT | |
| LOW | tests/test_stats.rs | 4501 | ); | COMMENT |
| LOW | tests/test_stats.rs | 7381 | ); | COMMENT |
| LOW | tests/test_stats.rs | 9161 | } | COMMENT |
| LOW | tests/test_stats.rs | 9241 | ["0", "0"], | COMMENT |
| LOW | tests/test_viz_geocode_auto.rs | 1 | //! Tests for `viz --geojson auto --geocode`: a `--locations` column of city/place NAMES | COMMENT |
| 902 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Cargo.toml | 566 | # ================================ | COMMENT |
| MEDIUM | resources/describegpt_md_defaults.toml | 232 | # ───────────────────────────────────────────────────────────────────────────── | STRING |
| MEDIUM | resources/profiles/geoconnex.yaml | 30 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 32 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 59 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 61 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 83 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 85 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 121 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 123 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 229 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 231 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 260 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 262 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 282 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/geoconnex.yaml | 284 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 21 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 23 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 92 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 94 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 131 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 133 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 182 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 184 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 305 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-ap-v3.yaml | 307 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-ap-v3.yaml | 395 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-ap-v3.yaml | 397 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-ap-v3.yaml | 405 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-ap-v3.yaml | 407 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 39 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 41 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 68 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 70 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 93 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 95 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 119 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 121 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 249 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 251 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 313 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 315 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 510 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 512 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 524 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/croissant.yaml | 526 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 22 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 24 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 112 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 114 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 182 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 184 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 208 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 210 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 422 | # ========================================================================= | COMMENT |
| MEDIUM | resources/profiles/dcat-us-v3.yaml | 424 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-us-v3.yaml | 531 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-us-v3.yaml | 533 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-us-v3.yaml | 541 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | resources/profiles/dcat-us-v3.yaml | 543 | # ========================================================================= | COMMENT |
| 113 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_select.rs | 463 | // This should not panic with our new robust implementation | COMMENT |
| MEDIUM | tests/test_select.rs | 487 | // This should not panic with our new robust implementation | COMMENT |
| MEDIUM | tests/test_synthesize.rs | 507 | // "Tom"), so the "no real value leaked" assertion below is robust to | COMMENT |
| MEDIUM | tests/test_stats.rs | 1181 | // Parse the JSON and assert on fields (rather than raw substrings) so the test is robust to | COMMENT |
| MEDIUM | tests/test_pivotp.rs | 1100 | // Should use Median — outliers inflate stddev but MAD stays robust | COMMENT |
| MEDIUM | .claude/skills/src/converted-file-manager.ts | 400 | // Use path.relative() for robust cross-platform validation (handles Windows case-insensitivity) | COMMENT |
| MEDIUM | .claude/skills/src/converted-file-manager.ts | 725 | // Use more robust parsing to handle edge cases like filenames containing ".converted." | COMMENT |
| MEDIUM | .claude/skills/src/converted-file-manager.ts | 1260 | // Delete files with robust error handling | COMMENT |
| MEDIUM | contrib/completions/src/usage_parser.rs | 5 | // completion generation. It uses the qsv_docopt parser for robust option type | COMMENT |
| MEDIUM | examples/viz/smart_dict_treemap.html | 493 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_onboarding_funnel.html | 433 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_us_choropleth.html | 495 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_us_choropleth.html | 2089 | // is what makes a theme flip mid-selection look seamless | COMMENT |
| MEDIUM | examples/viz/smart_us_choropleth.html | 2103 | <script type="application/json" id="qsv-tour-config">{"key":"343f5f31","steps":[{"id":"intro","title":"Welcome to your D | CODE |
| MEDIUM | examples/viz/smart_world_choropleth.html | 525 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_world_choropleth.html | 2119 | // is what makes a theme flip mid-selection look seamless | COMMENT |
| MEDIUM | examples/viz/smart_sales.html | 501 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_smarter.html | 485 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_dict_sunburst.html | 557 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_sales_kpi.html | 549 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_cpdb.html | 541 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_world_events.html | 485 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_world_events.html | 2079 | // is what makes a theme flip mid-selection look seamless | COMMENT |
| MEDIUM | examples/viz/smart_timeseries.html | 501 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_geo_outliers.html | 535 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_geo_outliers.html | 2129 | // is what makes a theme flip mid-selection look seamless | COMMENT |
| MEDIUM | examples/viz/smart_cms_medicare.html | 82 | Plotly.newPlot("qsv-viz-smart-grid", {"data":[{"type":"indicator","mode":"number","value":7.669404,"domain":{"x":[0. | CODE |
| MEDIUM | examples/viz/smart_cms_medicare.html | 433 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | examples/viz/smart_cms_medicare.html | 1551 | <script type="application/json" id="qsv-tour-config">{"key":"83f0ff8f","steps":[{"id":"intro","title":"Welcome to your D | CODE |
| MEDIUM | examples/viz/gen_gallery.py | 407 | # scrolls the page. The robust fix is a capture-phase wheel interceptor: inline we stopPropagation | COMMENT |
| MEDIUM | examples/viz/smart_regions_growth.html | 541 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/index_superpowers.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/stats_growth.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/trend.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/validate_growth.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/time_spent.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/sqlp_tuning.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/freq_growth.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/moarstats_growth.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/gainers.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/heatmap.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/index_advantage.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/count_callout.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | benchmarks/change_by_family.html | 372 | // live) and MapLibre (setScrollZoom toggles the GL handler), the robust fix is a capture-phase | COMMENT |
| MEDIUM | scripts/viz-golden-check.sh | 3 | # viz-golden-check.sh -- byte-level regression harness for `qsv viz smart`. | COMMENT |
| MEDIUM | scripts/viz-golden-check.sh | 121 | # `build_cyclic_panel` needs, so this one ships with the harness. | COMMENT |
| MEDIUM | scripts/pgo-train.sh | 3 | # pgo-train.sh - lean, single-pass PGO training harness for qsv. | COMMENT |
| MEDIUM | scripts/pgo-train.sh | 21 | # (see the `t` helper), so the same harness works against full and reduced builds. | COMMENT |
| MEDIUM | scripts/pgo-train.sh | 209 | # 2. 8.05 GiB is still ~52% of a hosted runner's RAM. A training harness should not sit that | COMMENT |
| MEDIUM | src/help_markdown_gen.rs | 7 | // Uses qsv-docopt Parser for robust structured parsing of options, arguments and defaults, | COMMENT |
| MEDIUM | src/mcp_skills_gen.rs | 7 | // Uses qsv-docopt Parser for robust USAGE text parsing. | COMMENT |
| MEDIUM | src/mcp_skills_gen.rs | 269 | /// Parse USAGE text using qsv-docopt Parser for robust parsing | COMMENT |
| MEDIUM | src/cmd/geocode.rs | 4260 | /// `US.NY.119` -> `119`), which is robust regardless of its leading digit. | COMMENT |
| MEDIUM | src/cmd/clean.rs | 335 | // extension) as a sibling of the cache — robust to cwd, symlinks and | COMMENT |
| MEDIUM | src/cmd/count.rs | 634 | // now leverage the magic of Polars SQL with its lazy evaluation, to count the records | COMMENT |
| MEDIUM | src/cmd/validate.rs | 1326 | // This is robust to whitespace and avoids false matches on | COMMENT |
| MEDIUM | src/cmd/pivotp.rs | 711 | // moarstats: robust vs non-robust spread divergence — outliers inflate stddev | COMMENT |
| MEDIUM | src/cmd/pivotp.rs | 737 | // moarstats: robust quartile-based variability | COMMENT |
| MEDIUM | src/cmd/moarstats.rs | 1147 | /// Tukey's trimean - a robust estimator of central tendency that | COMMENT |
| MEDIUM | src/cmd/moarstats.rs | 1159 | /// Midpoint of the middle 50% of data, a robust central tendency measure. | COMMENT |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | resources/describegpt_defaults.toml | 15 | ### NOTE: The following VARIABLES are available in MiniJinja templates (use {{ variable }} syntax): | COMMENT |
| LOW | resources/describegpt_md_defaults.toml | 6 | ### NOTE: The following VARIABLES are available in MiniJinja templates (use {{ variable }} syntax): | COMMENT |
| LOW | tests/test_sqlp.rs | 4447 | // Step 1: Generate stats cache with --infer-dates so DateTime type is detected | COMMENT |
| LOW | tests/test_sqlp.rs | 4461 | // Step 2: Generate Polars schema from stats cache | COMMENT |
| LOW | tests/test_sqlp.rs | 4478 | // Step 3: Use sqlp with the cached schema to verify it parses datetimes correctly | COMMENT |
| LOW | tests/test_to.rs | 1433 | // Step 1: Run `qsv schema --polars data.csv` to generate pschema | COMMENT |
| LOW | tests/test_to.rs | 1445 | // Step 2: Run `qsv to parquet out/ data.csv` — should pick up the pschema | COMMENT |
| LOW | .claude/skills/review-respond/SKILL.md | 11 | ## Step 1: Identify the PR | COMMENT |
| LOW | .claude/skills/review-respond/SKILL.md | 19 | ## Step 2: Fetch all pending review comments | COMMENT |
| LOW | .claude/skills/review-respond/SKILL.md | 31 | ## Step 3: Route comments by reviewer type | COMMENT |
| LOW | .claude/skills/review-respond/SKILL.md | 36 | ## Step 4: Apply fixes for human reviewer comments | COMMENT |
| LOW⚡ | .claude/skills/review-respond/SKILL.md | 52 | ## Step 5: Verification gate | COMMENT |
| LOW⚡ | .claude/skills/review-respond/SKILL.md | 62 | ## Step 6: Run tests | COMMENT |
| LOW⚡ | .claude/skills/review-respond/SKILL.md | 70 | ## Step 7: Commit | COMMENT |
| LOW⚡ | .claude/skills/review-respond/SKILL.md | 77 | ## Step 8: Reply to resolved comments | COMMENT |
| LOW⚡ | .claude/skills/review-respond/SKILL.md | 85 | ## Step 9: Report summary | COMMENT |
| LOW | .claude/skills/tests/duckdb.test.ts | 575 | // Step 1: Convert CSV to Parquet using qsv_to_parquet (the MCP tool) | COMMENT |
| LOW | .claude/skills/tests/duckdb.test.ts | 586 | // Step 2: Query the Parquet file with DuckDB | COMMENT |
| LOW | .claude/skills/tests/pipeline-manifest.test.ts | 349 | // Step 1: input.csv → intermediate.csv | COMMENT |
| LOW⚡ | .claude/skills/tests/pipeline-manifest.test.ts | 383 | // Step 1: read data.csv as input | COMMENT |
| LOW⚡ | .claude/skills/tests/pipeline-manifest.test.ts | 391 | // Step 2: overwrite data.csv as output (e.g., in-place sort) | COMMENT |
| LOW | .claude/skills/tests/pipeline-manifest.test.ts | 793 | // Step 1: reads data.csv (input), step 2: writes data.csv (output) — in-place overwrite | COMMENT |
| LOW⚡ | .claude/skills/docs/desktop/README-MCPB.md | 25 | ### Step 1: Download | COMMENT |
| LOW⚡ | .claude/skills/docs/desktop/README-MCPB.md | 31 | ### Step 2: Install in Claude Desktop | COMMENT |
| LOW⚡ | .claude/skills/docs/desktop/README-MCPB.md | 35 | ### Step 3: There is no step 3! The extension is ready to use. Just restart Claude Desktop and start asking Claude about | COMMENT |
| LOW | .claude/skills/docs/guides/CLAUDE_CODE.md | 62 | ### Step 1: Build the MCP Server | COMMENT |
| LOW | .claude/skills/docs/guides/CLAUDE_CODE.md | 73 | ### Step 2: Configure Claude Code | COMMENT |
| LOW | .claude/skills/docs/guides/CLAUDE_CODE.md | 123 | ### Step 3: Restart Claude Code | COMMENT |
| LOW | .claude/skills/docs/guides/START_HERE.md | 24 | ## Step 1: Install the MCP Server | COMMENT |
| LOW | .claude/skills/docs/guides/GEMINI_CLI.md | 25 | ### Step 1: Build the MCP Server | COMMENT |
| LOW | .claude/skills/docs/guides/GEMINI_CLI.md | 37 | ### Step 2: Configure Gemini CLI | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 344 | // Step 1: Check for qsv binary | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 350 | // Step 2: Build TypeScript | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 356 | // Step 3: Configure environment variables | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 360 | // Step 4: Update Claude Desktop config | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 366 | // Step 5: Print verification steps | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 293 | // Step 1: Clean up | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 296 | // Step 2: Build TypeScript | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 299 | // Step 3: Validate files | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 302 | // Step 4: Create archive | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 305 | // Step 5: Display summary | COMMENT |
| LOW | .claude/skills/skills/bls-query/SKILL.md | 15 | ### Step 1: Identify the topic | COMMENT |
| LOW⚡ | .claude/skills/skills/bls-query/SKILL.md | 29 | ### Step 2: Choose the right tool | COMMENT |
| LOW⚡ | .claude/skills/skills/bls-query/SKILL.md | 39 | ### Step 3: Interpret and present results | COMMENT |
| LOW⚡ | .claude/skills/skills/bls-query/SKILL.md | 47 | ### Step 4: Handle unknowns | COMMENT |
| LOW⚡ | .claude/skills/src/tool-handlers.ts | 1500 | // Step 1: Ensure stats cache is up-to-date (needed by both DuckDB and qsv to parquet paths) | COMMENT |
| LOW⚡ | .claude/skills/src/tool-handlers.ts | 1503 | // Step 3: Convert to Parquet (DuckDB with ZSTD when available, qsv to parquet with ZSTD otherwise) | COMMENT |
| LOW | .claude/skills/src/parquet-bridge.ts | 689 | // Step 2: Generate Polars schema | COMMENT |
| LOW | .claude/skills/src/parquet-bridge.ts | 718 | // Step 3: Convert to Parquet (DuckDB with ZSTD when available, qsv to parquet with ZSTD otherwise) | COMMENT |
| LOW⚡ | docs/contributor/STATS_TECHNICAL_GUIDE.md | 738 | // Step 1: Parse command-line arguments | COMMENT |
| LOW⚡ | docs/contributor/STATS_TECHNICAL_GUIDE.md | 741 | // Step 2: Handle typesonly mode (disable other stats) | COMMENT |
| LOW⚡ | docs/contributor/STATS_TECHNICAL_GUIDE.md | 748 | // Step 3: Setup boolean inference | COMMENT |
| LOW⚡ | docs/contributor/STATS_TECHNICAL_GUIDE.md | 754 | // Step 4: Check environment variable overrides | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_fixedwidth.rs | 89 | svec!["Jane Doe", "1017"], | CODE |
| LOW | tests/test_geocode.rs | 1921 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_geocode.rs | 2027 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_geocode.rs | 2049 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_geocode.rs | 2073 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_geocode.rs | 2091 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_geocode.rs | 2109 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_geocode.rs | 2126 | .args(["--api-key", "dummy-key-for-arg-validation"]) | CODE |
| LOW | tests/test_profile.rs | 1813 | "contact_point": {"fn": "Jane Doe", "hasEmail": "jane@example.gov"}, | CODE |
| LOW | tests/test_profile.rs | 2135 | "contact_point": {"fn": "Jane Doe", "hasEmail": "jane@example.gov"}, | CODE |
| LOW⚡ | tests/test_validate.rs | 3221 | "user@example.com", | CODE |
| LOW⚡ | tests/test_validate.rs | 3228 | "user@example.com", | CODE |
| LOW⚡ | tests/test_validate.rs | 3235 | "user@example.com", | CODE |
| LOW⚡ | tests/test_validate.rs | 3324 | "user@example.com", | CODE |
| LOW⚡ | tests/test_validate.rs | 3331 | "user@example.com", | CODE |
| LOW⚡ | tests/test_validate.rs | 3338 | "user@example.com", | CODE |
| LOW | tests/test_validate.rs | 1058 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1060 | svec!["3", "John Doe", "john@example.com", "IT"], // Duplicate name+email | CODE |
| LOW | tests/test_validate.rs | 1100 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1109 | svec!["3", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1124 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1126 | svec!["3", "John Doe", "john@example.com", "IT"], // Duplicate name+email | CODE |
| LOW | tests/test_validate.rs | 1166 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1175 | svec!["3", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1190 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1192 | svec!["3", "John Doe", "john@example.com", "IT"], // Duplicate name+email | CODE |
| LOW | tests/test_validate.rs | 1232 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1241 | svec!["3", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1256 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1258 | svec!["3", "John Doe", "", "IT"], // Empty email | CODE |
| LOW | tests/test_validate.rs | 1307 | svec!["1", "John Doe", "john@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1309 | svec!["3", "John Doe", "", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1329 | svec!["1", "John Doe", "john.doe@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1331 | svec!["3", "John Doe", "john.doe@example.com", "IT"], // Duplicate | CODE |
| LOW | tests/test_validate.rs | 1371 | svec!["1", "John Doe", "john.doe@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1380 | svec!["3", "John Doe", "john.doe@example.com", "IT"], | CODE |
| LOW | tests/test_validate.rs | 1586 | svec!["1", "John Doe", "john@example.com", "IT", "Developer"], | CODE |
| LOW | tests/test_validate.rs | 1588 | svec!["3", "John Doe", "john@example.com", "IT", "Developer"], // Duplicate name+email+role | CODE |
| LOW | tests/test_validate.rs | 1635 | svec!["1", "John Doe", "john@example.com", "IT", "Developer"], | CODE |
| LOW | tests/test_validate.rs | 1646 | svec!["3", "John Doe", "john@example.com", "IT", "Developer"], | CODE |
| LOW | tests/test_validate.rs | 1663 | "John Doe", | CODE |
| LOW | tests/test_validate.rs | 2078 | svec!["1", "John Doe", "not-an-email", "not-a-url", "not-currency"], | CODE |
| LOW | tests/test_validate.rs | 2158 | svec!["1", "John Doe", "not-an-email", "25"], // Format error only | CODE |
| LOW | tests/test_validate.rs | 2221 | svec!["1", "John Doe", "not-an-email", "25"], // Now valid (format ignored) | CODE |
| LOW | tests/test_validate.rs | 2814 | svec!["1", "John Doe", "user@example.com"], // Valid email | CODE |
| LOW | tests/test_validate.rs | 2814 | svec!["1", "John Doe", "user@example.com"], // Valid email | CODE |
| LOW | tests/test_validate.rs | 2858 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2858 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2885 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2885 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2936 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2936 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2989 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 2989 | svec!["1", "John Doe", "user@example.com"], | CODE |
| LOW | tests/test_validate.rs | 3207 | "user@example.com", | CODE |
| LOW | tests/test_validate.rs | 3297 | "user@example.com", | CODE |
| LOW | tests/test_luau.rs | 3328 | svec!["user@example.com", "yes"], | CODE |
| LOW | tests/test_luau.rs | 3341 | let expected = vec![svec!["email", "valid"], svec!["user@example.com", "yes"]]; | CODE |
| LOW | tests/resources/profile/dcat-init-context.json | 17 | "contact_point": {"fn": "Jane Doe", "hasEmail": "jane.doe@example.gov"}, | CODE |
| LOW | …/profile/golden/wprdc-311-subset.dataset.expected.json | 15 | "vcard:fn": "Jane Doe", | CODE |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/viz/gen_gallery.py | 193 | "<script>(function(){var target=null,until=0,iv=null,moved=false;" | CODE |
| HIGH | examples/viz/gen_gallery.py | 194 | "function stop(){if(iv){clearInterval(iv);iv=null;}}" | CODE |
| HIGH | examples/viz/gen_gallery.py | 236 | "b._t=setTimeout(function(){b.classList.remove(\"ok\");b.title=\"Copy\";b._t=null;},1200);}" | CODE |
| HIGH | examples/viz/gen_gallery.py | 290 | "var f=document.getElementsByClassName(\"dash\"),src=null;" | CODE |
| HIGH | examples/viz/gen_gallery.py | 361 | 'if(!b||typeof b.z!=="number"||!(plotW>0)||!(plotH>0))return null;' | CODE |
| HIGH | examples/viz/gen_gallery.py | 365 | 'var ratio=Math.min((dx*plotW)/aw,(dy*plotH)/ah);if(!isFinite(ratio)||ratio<=0)return null;' | CODE |
| HIGH | examples/viz/gen_gallery.py | 379 | 'function qsvFitNow(gd,tries){if(tries===undefined)tries=20;qsvCaptureBaked(gd);' | CODE |
| HIGH | examples/viz/gen_gallery.py | 399 | 'function qsvApplyScrollZoom(gd,tries){if(tries===undefined)tries=20;var fl=gd._fullLayout||{};' | CODE |
| HIGH | examples/viz/gen_gallery.py | 449 | " cargo build --bin qsv -F all_features && python3 examples/viz/gen_gallery.py\n" | CODE |
| HIGH | scripts/gen_benchmark_viz.py | 19 | git add benchmarks && git commit # Pages redeploys on push to master | STRING |
| HIGH | scripts/gen_benchmark_viz.py | 33 | git -C qsv.wiki add Benchmarks.md && git -C qsv.wiki commit && git -C qsv.wiki push | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sqlp.rs | 4447 | // Step 1: Generate stats cache with --infer-dates so DateTime type is detected | COMMENT |
| LOW | tests/test_sqlp.rs | 4461 | // Step 2: Generate Polars schema from stats cache | COMMENT |
| LOW | tests/test_sqlp.rs | 4478 | // Step 3: Use sqlp with the cached schema to verify it parses datetimes correctly | COMMENT |
| LOW | tests/test_to.rs | 1433 | // Step 1: Run `qsv schema --polars data.csv` to generate pschema | COMMENT |
| LOW | tests/test_to.rs | 1445 | // Step 2: Run `qsv to parquet out/ data.csv` — should pick up the pschema | COMMENT |
| LOW | .claude/skills/tests/duckdb.test.ts | 575 | // Step 1: Convert CSV to Parquet using qsv_to_parquet (the MCP tool) | COMMENT |
| LOW | .claude/skills/tests/duckdb.test.ts | 586 | // Step 2: Query the Parquet file with DuckDB | COMMENT |
| LOW | .claude/skills/tests/pipeline-manifest.test.ts | 349 | // Step 1: input.csv → intermediate.csv | COMMENT |
| LOW⚡ | .claude/skills/tests/pipeline-manifest.test.ts | 383 | // Step 1: read data.csv as input | COMMENT |
| LOW⚡ | .claude/skills/tests/pipeline-manifest.test.ts | 391 | // Step 2: overwrite data.csv as output (e.g., in-place sort) | COMMENT |
| LOW | .claude/skills/tests/pipeline-manifest.test.ts | 793 | // Step 1: reads data.csv (input), step 2: writes data.csv (output) — in-place overwrite | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 344 | // Step 1: Check for qsv binary | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 350 | // Step 2: Build TypeScript | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 356 | // Step 3: Configure environment variables | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 360 | // Step 4: Update Claude Desktop config | COMMENT |
| LOW⚡ | .claude/skills/scripts/install-mcp.js | 366 | // Step 5: Print verification steps | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 293 | // Step 1: Clean up | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 296 | // Step 2: Build TypeScript | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 299 | // Step 3: Validate files | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 302 | // Step 4: Create archive | COMMENT |
| LOW⚡ | .claude/skills/scripts/package-mcpb.js | 305 | // Step 5: Display summary | COMMENT |
| LOW⚡ | .claude/skills/src/tool-handlers.ts | 1500 | // Step 1: Ensure stats cache is up-to-date (needed by both DuckDB and qsv to parquet paths) | COMMENT |
| LOW⚡ | .claude/skills/src/tool-handlers.ts | 1503 | // Step 3: Convert to Parquet (DuckDB with ZSTD when available, qsv to parquet with ZSTD otherwise) | COMMENT |
| LOW | .claude/skills/src/parquet-bridge.ts | 689 | // Step 2: Generate Polars schema | COMMENT |
| LOW | .claude/skills/src/parquet-bridge.ts | 718 | // Step 3: Convert to Parquet (DuckDB with ZSTD when available, qsv to parquet with ZSTD otherwise) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 1287 | - **Seamlessly works with both [Claude Code](https://code.claude.com/docs/en/overview) and the just launched [Claude Cow | CODE |
| MEDIUM | resources/describegpt_md_defaults.toml | 13 | # {{ reasoning }} - LLM reasoning trace (may be empty) | COMMENT |
| MEDIUM | tests/test_viz.rs | 9465 | // scaffold (the gallery reassembles bare figure JSON, so without it that figure would snap) | COMMENT |
| MEDIUM | docs/Describegpt.md | 243 | ## SQL Query Generation and Execution ("SQL RAG" mode) | COMMENT |
| MEDIUM | docs/help/TableOfContents.md | 19 | | [describegpt](describegpt.md)<br>[📇](#legend "uses an index when available.")[🗃️](#legend "Limited Extended input supp | CODE |
| MEDIUM | docs/help/TableOfContents.md | 19 | | [describegpt](describegpt.md)<br>[📇](#legend "uses an index when available.")[🗃️](#legend "Limited Extended input supp | CODE |
| MEDIUM | examples/viz/gen_gallery.py | 1281 | # own scaffold, which carries none of viz's injected chrome — without lifting this block across, | COMMENT |
| MEDIUM | examples/viz/gen_gallery.py | 1286 | # then spliced into the scaffold by main(). | COMMENT |
| MEDIUM | examples/viz/gen_gallery.py | 1906 | # reuse the existing scaffold verbatim: everything up to and including `<div class="grid">`, | COMMENT |
| MEDIUM | examples/viz/gen_gallery.py | 2069 | # here are bare JSON reassembled under this scaffold, so without it the gallery's parcats | COMMENT |
| MEDIUM | src/cmd/describegpt.rs | 92 | # Ask detailed natural language questions that require SQL queries and auto-invoke SQL RAG mode | COMMENT |
| MEDIUM | src/cmd/describegpt.rs | 4175 | // Schema scaffold. Cache that shape regardless of the chosen output format | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .serena/project.yml | 12 | # Same syntax as gitignore, so you can use * and **. | COMMENT |
| MEDIUM | .claude/skills/.serena/project.yml | 12 | # Same syntax as gitignore, so you can use * and **. | COMMENT |
| MEDIUM | src/cmd/sqlp.rs | 72 | # In long, complex scripts that produce multiple temporary tables, note that you can use | COMMENT |
| MEDIUM | src/cmd/sqlp.rs | 136 | # note that you can also use read_csv() to read compressed files directly | COMMENT |
| MEDIUM | src/cmd/sqlp.rs | 142 | # apart from using Polar's table functions, you can also use SKIP_INPUT when the SELECT | COMMENT |
| LOW | src/cmd/replace.rs | 5 | the replacement string. But don't forget to escape your $ in bash by using a | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/skills/tests/elicitation.test.ts | 72 | async function buildDirectorySuggestions(currentWorkingDir: string): Promise<string> { | CODE |
| LOW | .claude/skills/scripts/verify-bundles.js | 65 | function startsFromExtractedBundle(extractDir) { | CODE |
| LOW | .claude/skills/scripts/package-mcpb.js | 118 | function isExcludedFromNodeModules(entryName) { | CODE |
| LOW | .claude/skills/src/file-operations.ts | 261 | export async function resolveAndConvertInputFile( | CODE |
| LOW | .claude/skills/src/file-operations.ts | 623 | export function collectAdditionalInputFiles( | CODE |
| LOW | .claude/skills/src/command-guidance.ts | 188 | export function enhanceParameterDescription( | CODE |
| LOW | .claude/skills/src/tool-handlers.ts | 403 | async function runSqlpParquetInterception( | CODE |
| LOW | .claude/skills/src/tool-handlers.ts | 493 | export function validateLlmResponsesShape(arr: unknown[]): string | null { | CODE |
| LOW | .claude/skills/src/tool-handlers.ts | 530 | async function runDescribegptInterception( | CODE |
| LOW | .claude/skills/src/utils.ts | 196 | export function describegptFallbackResult(args: string[]): string { | CODE |
| LOW | .claude/skills/src/tool-definitions.ts | 108 | export function createGenericToolDefinition( | CODE |
| LOW | .claude/skills/src/tool-definitions.ts | 257 | export function createBrowseDirectoryTool(): McpToolDefinition { | CODE |
| LOW | .claude/skills/src/tool-definitions.ts | 444 | export function createSetupToolDefinition(): McpToolDefinition { | CODE |
| LOW | .claude/skills/src/version.ts | 76 | export function readMinimumQsvVersionFromManifest(projectRoot: string): string | null { | CODE |
| LOW | .claude/skills/src/mcp-sampling.ts | 119 | export async function executeDescribegptWithSampling( | CODE |
| LOW | scripts/docs-drift-check.py | 119 | def expand_all_features_for_docs(features: dict[str, set[str]]) -> set[str]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_py.rs | 0 | {qty} {fruit} cost ${(float(unit_cost) * float(qty)):.2f}. its quite {"cheap" if ((float(unit_cost) * float(qty)) < 20.0 | STRING |
| HIGH | docs/help/py.md | 0 | {qty} {fruit} cost ${(float(unit_cost) * float(qty)):.2f}. its quite {"cheap" if ((float(unit_cost) * float(qty)) < 20.0 | STRING |
| HIGH | src/cmd/python.rs | 0 | {qty} {fruit} cost ${(float(unit_cost) * float(qty)):.2f}. its quite {"cheap" if ((float(unit_cost) * float(qty)) < 20.0 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …laude/skills/visual-data-dictionary/edit_dictionary.py | 272 | CODE | |
| LOW | …laude/skills/visual-data-dictionary/edit_dictionary.py | 421 | CODE | |
| LOW | …laude/skills/visual-data-dictionary/edit_dictionary.py | 514 | CODE | |
| LOW | …laude/skills/visual-data-dictionary/edit_dictionary.py | 523 | CODE | |
| LOW | docs/describegpt/check_semanticmd.py | 73 | CODE | |
| LOW | docs/describegpt/check_semanticmd.py | 118 | CODE | |
| LOW | examples/viz/gen_gallery.py | 1248 | CODE | |
| LOW | examples/viz/gen_gallery.py | 1790 | CODE | |
| LOW | examples/viz/gen_gallery.py | 1874 | CODE | |
| LOW | examples/viz/gen_world_cities.py | 58 | CODE | |
| LOW | scripts/docs-drift-check.py | 224 | CODE | |
| LOW | scripts/gen_benchmark_viz.py | 250 | CODE | |
| LOW | scripts/double-run-check.py | 111 | CODE | |
| LOW | scripts/double-run-check.py | 218 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/cmd/applydp.rs | 115 | # Create a new column 'mailing address' from 'house number', 'street', 'city' and 'zip-code' columns: | COMMENT |
| MEDIUM | src/cmd/applydp.rs | 118 | # Create a new column 'FullName' from 'FirstName', 'MI', and 'LastName' columns: | COMMENT |
| MEDIUM | src/cmd/apply.rs | 186 | # Create a new column 'mailing address' from 'house number', 'street', 'city' | COMMENT |
| MEDIUM | src/cmd/apply.rs | 190 | # Create a new column 'FullName' from 'FirstName', 'MI', and 'LastName' columns: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/cmd/assets/datatables.min.js | 55 | (e=>{var i;"function"==typeof define&&define.amd?define(["datatables.net"],function(t){return e(window,document,t)}):"ob | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | CHANGELOG.md | 1824 | * Created [Event Logo Archive](https://github.com/dathere/qsv/tree/master/docs/images/event-logos) with AI-generated sea | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .serena/project.yml | 54 | # Set this to [] to disable base modes for this project. | COMMENT |
| LOW | .serena/project.yml | 55 | # Set this to a list of mode names to always include the respective modes for this project. | COMMENT |
| LOW | scripts/benchmarks.sh | 911 | # Check if a results directory exists, if it doesn't create it | COMMENT |
| LOW | src/cmd/sortcheck.rs | 35 | # Check if file.csv is lexicographically sorted on all columns: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/viz-golden-check.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/qsv-tune.sh | 29 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/describegpt/check_semanticmd.py | 27 | CODE | |
| LOW | scripts/docs-drift-check.py | 36 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …laude/skills/visual-data-dictionary/edit_dictionary.py | 391 | except Exception: | CODE |