AI Slop Code Risk Monitor

evidence-dev/evidence

SlopCodeMonitor badge for evidence-dev/evidence Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Business intelligence as code: build fast, interactive data visualizations in SQL and markdown

2.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for evidence-dev/evidence, a TypeScript project with 7,078 GitHub stars. SynthScan examined 232,824 lines of code across 1618 source files, recording 378 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 2.7 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

2.7
Adjusted Signal
2.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
7.1K
Stars
TypeScript
Language
232.8K
Lines of Code
1.6K
Files
378
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 8.9/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 315 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

Are imports declared and package/API names verified? 8 finding(s).

Agent Over-Engineering Ratio 7.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 208 finding(s).

PR Review Velocity Impact 10.8/100 · LOW

Which changes need focused human review? 378 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 1MEDIUM 76LOW 301

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 378 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Decorative Section Separators55 hits · 190 pts
SeverityFileLineSnippetContext
MEDIUMcore/src/user-components/formatValue.test.ts656 // ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/formatValue.test.ts660 // ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/tags/series_charts/combo_chart/label-geometry.test.ts162// ── Generated scenarios ─────────────────────────────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts51 // ── TIME axis · hour grain (date column) ────────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts101 // ── TIME axis · day grain ───────────────────────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts175 // ── TIME axis · week grain ──────────────────────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts225 // ── TIME axis · month grain ─────────────────────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts427 // ── TIME axis · quarter grain ───────────────────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts725 // ── VALUE axis · plain numbers (no grain) ───────────────────────────────COMMENT
MEDIUM…/series_charts/combo_chart/x-axis-label-matrix.test.ts751 // ── CATEGORY axis · string labels ───────────────────────────────────────COMMENT
MEDIUM…ponents/tags/series_charts/combo_chart/x-axis-rules.ts20// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…ponents/tags/series_charts/combo_chart/x-axis-rules.ts25// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/tags/series_charts/combo_chart/x-axis-test-harness.ts310// ── Dataset builders ────────────────────────────────────────────────────────COMMENT
MEDIUM…ries_charts/combo_chart/x-axis-rendered-labels.test.ts20// ── Dataset builders ────────────────────────────────────────────────────────COMMENT
MEDIUM…ries_charts/combo_chart/x-axis-rendered-labels.test.ts37// ── Tests ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM…ries_charts/combo_chart/x-axis-rendered-labels.test.ts518// ── Timezone invariance (the reason this PR moved to local-everywhere) ────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts126 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts128 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts133 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts136 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts141 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts143 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts146 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts148 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts153 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts161 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts185 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts188 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts194 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡core/src/user-components/common/fill-gaps.ts196 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts9 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts11 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts61 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts63 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts133 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts135 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts341 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts343 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts388 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts390 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts453 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts455 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts481 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts483 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts567 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/user-components/common/fill-gaps.test.ts570 // ──────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMcli/cli/launch.ts158 // ── Stage: auth ──────────────────────────────────────────────────────────COMMENT
MEDIUMcli/cli/launch.ts161 // ── Detect the external repo (required) ────────────────────────────────────COMMENT
MEDIUMcli/cli/launch.ts186 // ── Stage: org ─────────────────────────────────────────────────────────────COMMENT
MEDIUMcli/cli/launch.ts189 // ── Auto-detect branch + root directory ────────────────────────────────────COMMENT
MEDIUMcli/cli/launch.ts201 // ── Stage: project (reuse repo-linked project → create) ────────────────────COMMENT
MEDIUM⚡cli/cli/launch.ts289 // ── Stage: GitHub App install + repo access ────────────────────────────────COMMENT
MEDIUM⚡cli/cli/launch.ts292 // ── Stage: warehouse credentials ───────────────────────────────────────────COMMENT
MEDIUM⚡cli/cli/launch.ts295 // ── Stage: initial sync ────────────────────────────────────────────────────COMMENT
MEDIUMcli/cli/launch.ts320 // ── Done ───────────────────────────────────────────────────────────────────COMMENT
Hyper-Verbose Identifiers153 hits · 152 pts
SeverityFileLineSnippetContext
LOWcore/src/interpolate-query-strings.ts364function shouldIncludeConditionalBlock(CODE
LOWcore/src/readiness.svelte.ts72export function setupRepeatableRenderReadiness(CODE
LOWcore/src/component-click-to-source.context.svelte.ts20export function setComponentClickToSourceContext(context: ComponentClickToSourceContext): void {CODE
LOWcore/src/component-click-to-source.context.svelte.ts24export function getComponentClickToSourceContext(): ComponentClickToSourceContext | undefined {CODE
LOWcore/src/preview-viewport.context.svelte.ts12export function setPreviewViewportContext(get: () => PreviewViewport) {CODE
LOWcore/src/preview-viewport.context.svelte.ts17export function getPreviewViewportContext(): (() => PreviewViewport) | undefined {CODE
LOWcore/src/connectors/clickhouse/resolve.ts10export function resolveClickHouseCredentials(config: ClickHouseConnection): ClickHouseCredentials {CODE
LOWcore/src/connectors/databricks/resolve.ts10export function resolveDatabricksCredentials(config: DatabricksConnection): DatabricksCredentials {CODE
LOWcore/src/connectors/motherduck/resolve.ts15export async function resolveMotherduckCredentials(CODE
LOWcore/src/connectors/bigquery/client-options.ts17export function buildBigQueryClientOptions(CODE
LOWcore/src/connectors/bigquery/resolve.ts15export async function resolveBigQueryCredentials(CODE
LOWcore/src/connectors/snowflake/resolve.ts19export async function resolveSnowflakeCredentials(CODE
LOWcore/src/connectors/redshift/resolve.ts29export async function resolveRedshiftCredentials(CODE
LOWcore/src/connectors/postgres/resolve.ts33export async function resolvePostgresCredentials(CODE
LOWcore/src/connectors/sqlserver/resolve.ts12export async function resolveSqlServerCredentials(CODE
LOWcore/src/user-components/filter-input-types.ts7export function getFilterInputComponentNames(): string[] {CODE
LOW…er-components/sandbox-runtime-errors-context.svelte.ts167export function setSandboxRuntimeErrorsContext(): SandboxRuntimeErrorsContext {CODE
LOW…er-components/sandbox-runtime-errors-context.svelte.ts180export function getSandboxRuntimeErrorsContext(): SandboxRuntimeErrorsContext | undefined {CODE
LOWcore/src/user-components/formatValue.ts12function convertSingleQuotesToDouble(formatCode: string): string {CODE
LOWcore/src/user-components/formatValue.ts451export function canonicalizeTimeAxisValue(value: unknown): unknown {CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts71function filterErrorsInsideOpaqueBodies(ast: Node, errors: ValidateError[]): ValidateError[] {CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts194function getCustomComponentRegistry(CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts331function removeObjectStringFromTree(tree: RenderableTreeNode): RenderableTreeNode {CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts712function validateNoNestedInlineQueries(ast: Node): MarkdocStar.ValidateError[] {CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts755function validateSharedComponentInputs(CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts880function validateQuotedValueInText(ast: Node): ValidateError[] {CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts1078function validateAllowedChildrenAndParents(node: Node, parent?: Node): ValidateError[] {CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts1151function validateDuplicateFilterIds(CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts1203function validateDuplicateFenceNames(CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts1260function validateReservedQueryNames(CODE
LOW…omponents/Renderer/MarkdocProcessor/process-markdoc.ts1300function collectReferencedPartials(CODE
LOW…derer/MarkdocProcessor/rewrite-bare-translation-sql.ts21export function rewriteBareTranslationSqlAccessors(CODE
LOW…derer/MarkdocProcessor/rewrite-bare-translation-sql.ts194export function rewriteSqlFenceTranslationTokens(CODE
LOW…rkdocProcessor/replaceFilterVariablesWithComponents.ts17export function replaceFilterVariablesWithComponents(CODE
LOW…rkdocProcessor/replaceFilterVariablesWithComponents.ts69function splitTextWithFilterVariables(text: string): RenderableTreeNode | RenderableTreeNode[] {CODE
LOW…mponents/Renderer/MarkdocProcessor/register-filters.ts230function registerWorkflowPeriodFilter(CODE
LOW…mponents/Renderer/MarkdocProcessor/register-filters.ts287function collectNestedComponentTagNodes(CODE
LOW…mponents/Renderer/MarkdocProcessor/register-filters.ts316function createComponentScopedConfig(CODE
LOW…mponents/Renderer/MarkdocProcessor/register-filters.ts400function collectStaticExternalFilters(CODE
LOW…mponents/Renderer/MarkdocProcessor/register-filters.ts484function containsWorkflowPeriodSelector(node: Node): boolean {CODE
LOW…ponents/custom-components/declared-caller-variables.ts15export function declaredCallerVariablesFromContent(content: string): Record<string, unknown> {CODE
LOW…onents/custom-components/component-attribute-schema.ts109export function parseCustomComponentAttributesWithErrors(raw: unknown): {CODE
LOW…onents/custom-components/component-attribute-schema.ts162export function parseCustomComponentAttributes(CODE
LOW…nents/custom-components/namespace-component-queries.ts38export function rewriteTemplateReferences(CODE
LOW…nents/custom-components/namespace-component-queries.ts87export function rewriteEvidenceQueryCalls(CODE
LOW…nents/custom-components/namespace-component-queries.ts146export function namespaceComponentQueries(CODE
LOW…nents/custom-components/namespace-component-queries.ts192export function componentQueriesUseDollarVariables(body: Node): boolean {CODE
LOW…nents/custom-components/namespace-component-queries.ts260export function applyInstanceScopeToRenderable(CODE
LOW…user-components/custom-components/build-custom-tags.ts66function componentBodyErrorsAtCallSite(CODE
LOW…user-components/custom-components/build-custom-tags.ts497export function buildCustomComponentRegistry(CODE
LOW…user-components/custom-components/build-custom-tags.ts562export function customComponentsAsUserComponents(CODE
LOW…user-components/custom-components/build-custom-tags.ts629export function dissolveRemainingSlotPlaceholders(CODE
LOW…nents/custom-components/detect-misnested-attributes.ts30export function detectMisnestedAttributeDeclarations(CODE
LOW…er-components/tags/repeat/build-repeat-query-config.ts24export function resolveRepeatColumnExpression(CODE
LOW…src/user-components/tags/funnel_chart/funnel-labels.ts123export function resolveAutoLabelPlacement(opts: {CODE
LOW…components/tags/funnel_chart/build-funnel-chart-sql.ts22export function buildFunnelChartSQLConfig(attrs: FunnelChartSQLAttrs): SQLQueryConfig {CODE
LOW…components/tags/custom_map/sandbox/sandbox-protocol.ts144export function validateFilterCreateMessage(message: unknown): FilterCreateMessage | null {CODE
LOWcore/src/user-components/tags/html/schema.ts73export function collectScriptVariableReads(source: string): Set<string> {CODE
LOWcore/src/user-components/tags/html/link-hosts.ts42export function extractLinkHostsFromSource(source: string): Set<string> {CODE
LOW…rc/user-components/tags/html/extract-filter-creates.ts61export function extractFilterCreatesFromJs(source: string): ExtractedExternalFilter[] {CODE
93 more matches not shown…
Structural Annotation Overuse42 hits · 83 pts
SeverityFileLineSnippetContext
LOW⚡core/src/FILTER_SYSTEM.md88 this.#value = newValue; // Step 1: update reactive stateCODE
LOW⚡core/src/FILTER_SYSTEM.md90 if (this.opts.dontUseQueryParam) return; // Step 2: opt-out flagCODE
LOW⚡core/src/FILTER_SYSTEM.md91 if (!this.deps.updateUrl) return; // Step 3: no write capability (editor, server)CODE
LOW⚡core/src/FILTER_SYSTEM.md95 this.#lastSerialized = serialized; // Step 4: snapshot — see Core Principle 5CODE
LOW⚡core/src/FILTER_SYSTEM.md96 if (this.#isInitializing || !changed) return; // Step 5: block during construction / no-op writeCODE
LOW⚡core/src/FILTER_SYSTEM.md100 const url = new URL(currentUrl); // Step 6: copy (never mutate original)CODE
LOW⚡core/src/FILTER_SYSTEM.md102 url.searchParams.set(this.id, serialized); // Step 7: set paramCODE
LOW⚡core/src/FILTER_SYSTEM.md106 this.deps.updateUrl(url); // Step 8: write to browser URLCODE
LOW⚡…gs/series_charts/combo_chart/series/percentageStack.ts31 // Step 1: Calculate totals for each x-value across all seriesCOMMENT
LOW…gs/series_charts/combo_chart/series/percentageStack.ts46 // Step 2: Transform each series' data to percentagesCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts419 // Step 1: Create a mock processor that simulates filter resolutionCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts429 // Step 2: Define schema with supportsVariables on relevant attributesCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts458 // Step 3: Component props (as they come from Markdoc)COMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts468 // Step 4: Process all props using schemaCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts471 // Step 5: Verify resultsCOMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts619 // Step 1: Parse user inputCOMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts624 // Step 2: Apply transformationsCOMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts681 // Step 3: Handle special alias generation for comparisons and sparklines (after transformations)COMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts691 // Step 4: Format alias for dialect (uppercase for Snowflake, unchanged for ClickHouse)COMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts697 // Step 5: Assemble final SQL (quote alias via the dialect — `"..."` worksCOMMENT
LOWcore/src/user-components/common/build-comparisons.ts192 // Step 1: Build subject_totals CTE (calculate measures at subject grain)COMMENT
LOWcore/src/user-components/common/build-comparisons.ts268 // Step 2: Build benchmark aggregationCOMMENT
LOW⚡core/src/user-components/common/COMPARISON_SYSTEM.md39// Step 1: Resolve variables in comparison propsCOMMENT
LOW⚡core/src/user-components/common/COMPARISON_SYSTEM.md48// Step 2: Build comparison configCOMMENT
LOW⚡core/src/user-components/common/COMPARISON_SYSTEM.md58// Step 3: Include in query configCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts584 // Step 1: Remove string literals first to avoid parsing inside themCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts587 // Step 2: Handle quoted identifiers (preserve them as single units)COMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts607 // Step 3: Remove function calls to avoid treating function names as columnsCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts613 // Step 4: Handle PostgreSQL-style type casting with comprehensive patternsCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts616 // Step 5: Handle aliases - remove "AS alias" constructsCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts619 // Step 6: Replace operators and punctuation with spaces to isolate identifiersCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts622 // Step 7: Extract potential column identifiersCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts625 // Step 8: Convert quoted identifier placeholders back to original namesCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts633 // Step 9: Filter out SQL keywords and validation placeholders (but preserve quoted identifiers even if they match keywCOMMENT
LOWcore/src/filter-variables/VariableProcessor.ts76 // Step 1: Process frontmatter variables ({{ $var }}) if availableCOMMENT
LOWcore/src/filter-variables/VariableProcessor.ts96 // Step 2: Process filter variables ({{ filter.property }}) if availableCOMMENT
LOW⚡cli/cli/auth.ts410 // Step 1: Request device authorizationCOMMENT
LOW⚡cli/cli/auth.ts413 // Step 2: Display code and open browserCOMMENT
LOW⚡cli/cli/auth.ts421 // Step 3: Poll for tokensCOMMENT
LOW⚡cli/cli/auth.ts429 // Step 4: Exchange refresh token for sealed session via Studio APICOMMENT
LOWcli/cli/auth.ts459 // Step 5: Store credentials (with the latest refresh token)COMMENT
LOWcli/cli/auth.ts476 // Step 6: Create CLI APT tokenCOMMENT
Over-Commented Block65 hits · 65 pts
SeverityFileLineSnippetContext
LOWcore/src/Query.svelte.ts181 });COMMENT
LOWcore/src/Query.svelte.ts421 userLimit,COMMENT
LOWcore/src/Query.svelte.ts561 }COMMENT
LOWcore/src/Query.svelte.ts861 }COMMENT
LOWcore/src/interpolate-query-strings.ts521COMMENT
LOWcore/src/connectors/postgres/normalize-date-rows.ts1// Collapse Postgres date/timestamp values to the canonical Evidence date shapeCOMMENT
LOWcore/src/metrics/resolve-metric.ts261 if (!found) {COMMENT
LOW…s/Renderer/MarkdocProcessor/MarkdocProcessor.svelte.ts281 #translations = $state<TranslationMap>({});COMMENT
LOW…s/Renderer/MarkdocProcessor/MarkdocProcessor.svelte.ts301 // map of name → declared `default:` value (or '' when no default). EmptyCOMMENT
LOW…s/Renderer/MarkdocProcessor/MarkdocProcessor.svelte.ts401 // real line + non-empty character range — the editor's decorationCOMMENT
LOW…mponents/Renderer/MarkdocProcessor/register-filters.ts101 }COMMENT
LOW…user-components/custom-components/build-custom-tags.ts421 : transformChild(body);COMMENT
LOW…e/src/user-components/tags/dropdown/validation.test.ts21 // On first paint in PDF mode, the optionsCOMMENT
LOWcore/src/user-components/tags/html/schema.ts301 'canvas',COMMENT
LOWcore/src/user-components/tags/html/Html.svelte101 mutedForeground: surfaceToken('mutedForeground'),COMMENT
LOW…src/user-components/tags/html/sandbox/runtime-entry.ts101COMMENT
LOW…src/user-components/tags/html/sandbox/runtime-entry.ts301// the failure is invisible to the diagnostics feed and the agent just sees aCOMMENT
LOWcore/src/user-components/tags/html/sandbox/html-csp.ts141 // (e.g. `unpkg.com/world-atlas@2/countries-110m.json`, the canonicalCOMMENT
LOWcore/src/user-components/tags/html/sandbox/html-csp.ts201 // code / WASM from their own CDN at runtime. If we trust the hostCOMMENT
LOW…src/user-components/tags/html/sandbox/html-csp.test.ts81 expect(imgSrc).toContain('https://commons.wikimedia.org');COMMENT
LOW…c/user-components/tags/html/sandbox/HtmlSandbox.svelte201 // from `state-change` messages (see HtmlMode). Keep this string a literalCOMMENT
LOW…user-components/tags/sparkline/SparklineDisplay.svelte61 });COMMENT
LOW…gs/series_charts/combo_chart/format-time-axis-label.ts81COMMENT
LOW…gs/series_charts/combo_chart/format-time-axis-label.ts141 }COMMENT
LOW…gs/series_charts/combo_chart/format-time-axis-label.ts181 // Year rollover uses `yearLabel` — same compact-vs-verbose logic as monthCOMMENT
LOW…gs/series_charts/combo_chart/format-time-axis-label.ts401 // read local components below. Any UTC offset is stripped and the wall-clockCOMMENT
LOW…nents/tags/series_charts/combo_chart/ComboChart.svelte561 // Get base axis config, then override for stacking if neededCOMMENT
LOW…nts/tags/series_charts/combo_chart/combo_chart.test.ts41describe('combo_chart SQL (per-child series queries)', () => {COMMENT
LOW…nts/tags/series_charts/combo_chart/combo_chart.test.ts461 );COMMENT
LOW…ts/tags/series_charts/combo_chart/XAxisModel.svelte.ts141 // True when the axis renders two-tier labels (month/quarter name with theCOMMENT
LOW…ts/tags/series_charts/combo_chart/XAxisModel.svelte.ts301 // non-time / user-fmt'd axes. Time axes without a user `fmt` get the fullerCOMMENT
LOW…ts/tags/series_charts/combo_chart/XAxisModel.svelte.ts321 // lingering tooltips). Reading a derived then triggers Svelte'sCOMMENT
LOW…ts/tags/series_charts/combo_chart/XAxisModel.svelte.ts481 isNonTemporalNumericGrain(jsType, this.options.date_grain) ||COMMENT
LOW…ts/tags/series_charts/combo_chart/XAxisModel.svelte.ts581 // so — like chart-area tooltips — it must clear the floating chat paneCOMMENT
LOW…ts/tags/series_charts/combo_chart/XAxisModel.svelte.ts601 // `hideOverlap` is ECharts' greedy collision dropper — only wantedCOMMENT
LOW…ries_charts/combo_chart/x-axis-rendered-labels.test.ts641 if (c.expected) expect(reference).toEqual(c.expected);COMMENT
LOW…series_charts/combo_chart/series/SeriesModel.svelte.ts101 // participates in `metricCompiled`'s derivation must live here — otherwiseCOMMENT
LOW…series_charts/combo_chart/series/SeriesModel.svelte.ts221 const dialect = this.sharedContext.queryDeps.connection.dialect;COMMENT
LOW…series_charts/combo_chart/series/SeriesModel.svelte.ts461 : (params: { value?: unknown[] }) => {COMMENT
LOWcore/src/user-components/tags/echarts/echarts-themes.ts61 // they don't compete with the plotted data — UI borders (table rows,COMMENT
LOW…user-components/tags/custom_echart/CustomEChart.svelte81 const resolvedTableName = $derived(resolveText(props.data));COMMENT
LOW…components/tags/custom_echart/sandbox/runtime-entry.ts61// oscillating (mirrors ECharts.svelte's internalExtraHeight trick).COMMENT
LOW…c/user-components/common/inline-queries.svelte.spec.ts1// `.svelte.spec.ts` because `SvelteMap` (imported from `svelte/reactivity`) isCOMMENT
LOW…c/user-components/common/inline-queries.svelte.spec.ts21// change, so setSqlFiles()-with-same-payload happens on every dropdownCOMMENT
LOWcore/src/user-components/common/ComponentWrapper.svelte341COMMENT
LOWcore/src/user-components/common/fill-gaps.ts141 // ──────────────────────────────────────────────────────────────────────────COMMENT
LOWcore/src/user-components/common/inline-queries.ts361 return undefined;COMMENT
LOWcore/src/user-components/sandbox/protocol-base.ts81 type: 'rendered';COMMENT
LOWcore/src/user-components/sandbox/protocol-base.ts121// URL (custom_echart via ECharts' chart.getDataURL, html viaCOMMENT
LOW…rc/user-components/sandbox/SandboxFrame.svelte.test.ts181 // No onError call means the message was silently ignored, which is theCOMMENT
LOWcore/src/user-components/sandbox/SandboxFrame.svelte281 if (iframeEl) unregisterSandboxFrameCapture(iframeEl);COMMENT
LOWcore/src/user-components/validators/tableExists.ts121 const inlineQueryNames =COMMENT
LOWcore/src/filter-variables/frontmatter-variable.ts1// Canonical grammar for frontmatter variable references ({{ $var }}) and theirCOMMENT
LOWcore/src/constants/default-theme.ts81 // Off by default: gridlines already establish the axis, and a bottomCOMMENT
LOWcore/src/shadcn/index.ts1// Re-export shadcn utilitiesCOMMENT
LOWcore/src/shadcn/components/ui/command/index.ts41 // downstream packages can grab unwrapped primitives (e.g. `.Input`)COMMENT
LOWcore/src/sql-dialect/cube.ts61 // Cube's SQL API reference has no IS NOT DISTINCT FROM; expand it (as Fabric/BigQuery do).COMMENT
LOWcore/src/sql-dialect/fabric.ts121 applyRowLimit(sql: string, limit: number): string {COMMENT
LOWcore/src/sql-dialect/fabric.ts141 // FROM (body) AS __ev_limit_wrap [suffix]`. Outer TOP clamps.COMMENT
LOWcore/src/theme/build-theme-yaml.ts21 return `# Theme ConfigurationCOMMENT
5 more matches not shown…
Verbosity Indicators31 hits · 64 pts
SeverityFileLineSnippetContext
LOW⚡…gs/series_charts/combo_chart/series/percentageStack.ts31 // Step 1: Calculate totals for each x-value across all seriesCOMMENT
LOW…gs/series_charts/combo_chart/series/percentageStack.ts46 // Step 2: Transform each series' data to percentagesCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts419 // Step 1: Create a mock processor that simulates filter resolutionCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts429 // Step 2: Define schema with supportsVariables on relevant attributesCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts458 // Step 3: Component props (as they come from Markdoc)COMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts468 // Step 4: Process all props using schemaCOMMENT
LOW⚡…user-components/common/use-variable-processing.test.ts471 // Step 5: Verify resultsCOMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts619 // Step 1: Parse user inputCOMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts624 // Step 2: Apply transformationsCOMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts681 // Step 3: Handle special alias generation for comparisons and sparklines (after transformations)COMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts691 // Step 4: Format alias for dialect (uppercase for Snowflake, unchanged for ClickHouse)COMMENT
LOW⚡core/src/user-components/common/sql-expression-utils.ts697 // Step 5: Assemble final SQL (quote alias via the dialect — `"..."` worksCOMMENT
LOWcore/src/user-components/common/build-comparisons.ts192 // Step 1: Build subject_totals CTE (calculate measures at subject grain)COMMENT
LOWcore/src/user-components/common/build-comparisons.ts268 // Step 2: Build benchmark aggregationCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts584 // Step 1: Remove string literals first to avoid parsing inside themCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts587 // Step 2: Handle quoted identifiers (preserve them as single units)COMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts607 // Step 3: Remove function calls to avoid treating function names as columnsCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts613 // Step 4: Handle PostgreSQL-style type casting with comprehensive patternsCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts616 // Step 5: Handle aliases - remove "AS alias" constructsCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts619 // Step 6: Replace operators and punctuation with spaces to isolate identifiersCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts622 // Step 7: Extract potential column identifiersCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts625 // Step 8: Convert quoted identifier placeholders back to original namesCOMMENT
LOW⚡…rc/user-components/validators/validateSqlExpression.ts633 // Step 9: Filter out SQL keywords and validation placeholders (but preserve quoted identifiers even if they match keywCOMMENT
LOWcore/src/filter-variables/VariableProcessor.ts76 // Step 1: Process frontmatter variables ({{ $var }}) if availableCOMMENT
LOWcore/src/filter-variables/VariableProcessor.ts96 // Step 2: Process filter variables ({{ filter.property }}) if availableCOMMENT
LOW⚡cli/cli/auth.ts410 // Step 1: Request device authorizationCOMMENT
LOW⚡cli/cli/auth.ts413 // Step 2: Display code and open browserCOMMENT
LOW⚡cli/cli/auth.ts421 // Step 3: Poll for tokensCOMMENT
LOW⚡cli/cli/auth.ts429 // Step 4: Exchange refresh token for sealed session via Studio APICOMMENT
LOWcli/cli/auth.ts459 // Step 5: Store credentials (with the latest refresh token)COMMENT
LOWcli/cli/auth.ts476 // Step 6: Create CLI APT tokenCOMMENT
Modern AI Meta-Vocabulary19 hits · 56 pts
SeverityFileLineSnippetContext
MEDIUMcore/src/user-components/tags/funnel_chart/schema.ts45 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/user-components/tags/funnel_chart/schema.ts78 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/user-components/tags/pie_chart/schema.ts46 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/user-components/tags/pie_chart/schema.ts79 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/user-components/tags/table/schema.ts49 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/user-components/tags/table/measure/schema.ts212 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUM…user-components/tags/series_charts/bar_chart/schema.ts69 // data/x/y in the slash-command scaffold (the raw-mode starting point).COMMENT
MEDIUM…er-components/tags/series_charts/combo_chart/schema.ts38 // Kept in the slash-command scaffold as the default authoring pattern; notCOMMENT
MEDIUM…ser-components/tags/series_charts/area_chart/schema.ts64 // data/x/y in the slash-command scaffold (the raw-mode starting point).COMMENT
MEDIUM…ser-components/tags/series_charts/line_chart/schema.ts60 // data/x/y in the slash-command scaffold (the raw-mode starting point).COMMENT
MEDIUMcore/src/user-components/tags/bigvalue/schema.ts146 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/user-components/tags/bigvalue/schema.ts167 // Kept in the slash-command scaffold (raw-mode default) though not required.COMMENT
MEDIUMcore/src/theme/THEMES.md601├── build-theme-yaml.ts # Starter theme.yaml scaffold for new projectsCODE
MEDIUMcli/cli/args.ts385 // --force / -f overwrites scaffold files in a non-empty target.COMMENT
MEDIUMcli/cli/init/init.test.ts172 // scaffold files should NOT have been writtenCOMMENT
MEDIUMcli/cli/init/init.test.ts204 // Fresh scaffold presentCOMMENT
MEDIUMcli/cli/init/init.test.ts208 // .gitignore is the standard scaffold, not the prior custom contentCOMMENT
MEDIUMcli/cli/init/init.test.ts245 // The unedited scaffold must NOT load — the placeholder guard blocks aCOMMENT
MEDIUMcli/cli/init/init.test.ts270 // The scaffold (inline password auth) must resolve end-to-end.COMMENT
Fake / Example Data8 hits · 8 pts
SeverityFileLineSnippetContext
LOW…nderer/MarkdocProcessor/process-markdoc.svelte.spec.ts637 expect(treeString).toContain('John Doe');CODE
LOWcore/src/user-components/tags/custom_echart/schema.ts400 encode: { x: 'step', y: 'placeholder' } },CODE
LOWcore/src/user-components/common/zod-attribute.test.ts24 name: 'Acme Corp',CODE
LOWcore/src/user-components/common/zod-attribute.test.ts34 expect(result).toBe('Acme Corp');CODE
LOWcli/cli/auth.test.ts56 email: 'test@test.com',CODE
LOWcli/cli/auth.test.ts434 expect(out).toContain('Jane Doe');CODE
LOWcli/cli/migrate/transform.ts1145 unsupported: ['row', 'placeholder'],CODE
LOWcli/src/lib/auth/credentials.server.test.ts27 user: { id: 'u1', email: 'test@test.com' },CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHcore/src/user-components/sandbox/protocol-base.ts94// runtime bundle, AI-generated author code that constructs bad postMessageCOMMENT
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMcore/src/constants/default-theme.ts14 light: '#ffffff', // Match base for seamless cardsCODE
MEDIUMcore/src/constants/default-theme.ts14 light: '#ffffff', // Match base for seamless cardsCODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcore/src/user-components/tags/table/measure/schema.ts502 // TODO: Add validation for scale_column once we determine proper validation strategy for SQL expressionsCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcli/scripts/install.sh137 # Check if it's on PATHCOMMENT