Repository Analysis

nteract/semiotic

React data visualization library for streaming, networks, and AI-assisted development

9.6 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of nteract/semiotic, a TypeScript project with 2,685 GitHub stars. SynthScan v2.0 examined 579,836 lines of code across 1775 source files, recording 2186 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 9.6 places this repository in the Low 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).

9.6
Adjusted Score
9.6
Raw Score
100%
Time Factor
2026-07-14
Last Push
2.7K
Stars
TypeScript
Language
579.8K
Lines of Code
1.8K
Files
2.2K
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 1MEDIUM 1582LOW 603

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2186 distinct pattern matches across 11 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.

Decorative Section Separators1580 hits · 4859 pts
SeverityFileLineSnippetContext
MEDIUMintegration-tests/process-sankey.spec.ts159// ── Visual regression baselines ────────────────────────────────────────COMMENT
MEDIUMintegration-tests/streaming-regression.spec.ts89// ─── Grey fill regression tests ──────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/streaming-regression.spec.ts136// ─── Legend regression tests ─────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/streaming-regression.spec.ts169// ─── Tooltip regression tests ────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/streaming-regression.spec.ts203// ─── LineChart infinite loop regression ──────────────────────────────────────COMMENT
MEDIUMintegration-tests/streaming-regression.spec.ts233// ─── Force-directed graph centering regression ───────────────────────────────COMMENT
MEDIUMintegration-tests/streaming-regression.spec.ts292// ─── No JS errors during streaming ───────────────────────────────────────────COMMENT
MEDIUMintegration-tests/brush-selection.spec.ts222// ── Interaction-state visual snapshot ───────────────────────────────COMMENT
MEDIUMintegration-tests/coordinated-views.spec.ts9 // ── Linked hover cross-highlighting ───────────────────────────────────COMMENT
MEDIUMintegration-tests/coordinated-views.spec.ts55 // ── ChartGrid with emphasis ───────────────────────────────────────────COMMENT
MEDIUMintegration-tests/coordinated-views.spec.ts78 // ── Empty state ───────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/coordinated-views.spec.ts93 // ── Three-way linked charts ───────────────────────────────────────────COMMENT
MEDIUMintegration-tests/ordinal-frame.spec.ts261// ── Default-theme HOC coverage backfill ──────────────────────────────COMMENT
MEDIUMintegration-tests/realtime-charts.spec.ts132// ── Default-theme HOC coverage backfill (static fixtures) ────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts5// ─── 1. Canvas aria-labels describe chart type and data shape ─────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts68// ─── 2. AriaLiveTooltip region with aria-live="polite" ────────────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts118// ─── 3. Legend keyboard traversal ─────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts237// ─── 4. Focus rings appear on keyboard focus ─────────────────────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts326// ─── 5. SVG overlays have title/desc elements ────────────────────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts408// ─── 6. ChartContainer toolbar buttons have aria-labels ───────────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts499// ─── 7. Automated axe-core accessibility scanning ───────────────────────────COMMENT
MEDIUMintegration-tests/accessibility.spec.ts540// ─── Smoke test: no JS errors on page load ───────────────────────────────────COMMENT
MEDIUMintegration-tests/geo-charts.spec.ts146// ── Default-theme HOC coverage backfill ──────────────────────────────COMMENT
MEDIUMintegration-tests/xy-frame.spec.ts285// ── Default-theme HOC coverage backfill ──────────────────────────────COMMENT
MEDIUMintegration-tests/xy-frame.spec.ts314// ── Interaction-state visual snapshots ──────────────────────────────COMMENT
MEDIUMintegration-tests/network-frame.spec.ts88// ── Default-theme HOC coverage backfill ──────────────────────────────COMMENT
MEDIUMintegration-tests/xy-examples/index.js255 // ── Default-theme HOC coverage backfill ─────────────────────────────COMMENT
MEDIUMintegration-tests/xy-examples/index.js364 // ── Interaction-state fixtures ──────────────────────────────────────COMMENT
MEDIUMintegration-tests/xy-examples/index.js426 // ── Multi-tooltip fixtures ───────────────────────────────────────────COMMENT
MEDIUMintegration-tests/xy-examples/index.js481 // ── xExtent / yExtent override variants ────────────────────────────COMMENT
MEDIUMintegration-tests/status-scale-theme-examples/index.js24// ── Deterministic data ─────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/status-scale-theme-examples/index.js120 // ── Waterfall: themeSemantic.success / .danger ────────────────────────COMMENT
MEDIUMintegration-tests/status-scale-theme-examples/index.js132 // ── Heatmap: themeSequential ──────────────────────────────────────────COMMENT
MEDIUMintegration-tests/status-scale-theme-examples/index.js146 // ── Likert: themeDiverging ────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/realtime-examples/index.js143// ── Static bounded fixtures for visual snapshots ─────────────────────COMMENT
MEDIUMintegration-tests/realtime-examples/index.js225 // ── Default-theme HOC coverage backfill (static) ────────────────────COMMENT
MEDIUMintegration-tests/network-examples/index.js143 // ── Default-theme HOC coverage backfill ────────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js27// ── 1. Streaming Stacked Bar (grey fill + legend regression) ─────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js63// ── 2. Streaming Pie (grey fill + legend regression) ─────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js94// ── 3. Streaming Bubble (grey fill regression) ───────────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js127// ── 4. Streaming Grouped Bar (grey fill + legend regression) ─────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js161// ── 5. Streaming Stacked Area (grey fill regression) ─────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js193// ── 6. Area chart tooltip (shows "-" regression) ─────────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js215// ── 7. LineChart streaming (infinite loop regression) ─────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js249// ── 8. Force-Directed Graph centering ────────────────────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js274// ── 9. Streaming Chord (blue-only regression) ────────────────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js301// ── 10. Streaming Donut (grey fill + legend regression) ──────────────────────COMMENT
MEDIUM…tegration-tests/streaming-regression-examples/index.js332// ── 11. Streaming Scatterplot (grey fill regression) ─────────────────────────COMMENT
MEDIUMintegration-tests/coordinated-examples/index.js35// ── Shared test data (deterministic) ────────────────────────────────────COMMENT
MEDIUMintegration-tests/coordinated-examples/index.js116// ── Test cases ──────────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/ordinal-examples/index.js405 // ── Default-theme HOC coverage backfill ─────────────────────────────COMMENT
MEDIUMintegration-tests/ordinal-examples/index.js436 // ── valueExtent override variants ─────────────────────────────────COMMENT
MEDIUMintegration-tests/themed-examples/index.js23// ── Deterministic data ─────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/themed-examples/index.js90// ── Charts to snapshot per theme ──────────────────────────────────────────COMMENT
MEDIUMintegration-tests/themed-examples/index.js150// ── Render grid ────────────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/custom-layout-examples/index.js156// ── Glyph unit chart: composite-pictogram scene nodes fed by unitize ────────COMMENT
MEDIUMintegration-tests/chart-modes-examples/index.js36// ── Deterministic fixtures ─────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/primitive-props-examples/index.js34// ── Deterministic data ─────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/primitive-props-examples/index.js74// ── Shared chart props ─────────────────────────────────────────────────────COMMENT
MEDIUMintegration-tests/primitive-props-examples/index.js149 // ── Bars ──────────────────────────────────────────────────────────────COMMENT
1520 more matches not shown…
Hyper-Verbose Identifiers430 hits · 464 pts
SeverityFileLineSnippetContext
LOWetc/api-surface/semiotic-server.api.md16function renderPhysicsToAnimatedGif(props: PhysicsGifFrameProps, options?: PhysicsGifOptions | undefined): Promise<BuffeCODE
LOWetc/api-surface/semiotic-physics-rapier.api.md15function optionalEngineDependencyError(details: PhysicsOptionalEngineInstallDetails, cause?: unknown): PhysicsOptionalEnCODE
LOWetc/api-surface/semiotic-physics-rapier.api.md16function rapierPhysicsDependencyError(cause?: unknown): ErrorCODE
LOWetc/api-surface/semiotic-controls.api.md9function DirectManipulationControl({ value, onChange, pointerToValue, min, max, step, largeStep, x, y, controlType, contCODE
LOWetc/api-surface/semiotic-controls.api.md11function auditVisualizationControls({ controls, minimumTargetSize, }: AuditVisualizationControlsOptions): ControlAuditReCODE
LOWetc/api-surface/semiotic-controls.api.md13function createControlObservationAdapter({ controlType, controlId, chartId, chartType, onObservation, }: ControlObservatCODE
LOWetc/api-surface/semiotic-recipes.api.md60function composePhysicsControllers(controllers: readonly PhysicsController[] | null | undefined): ComposedPhysicsControlCODE
LOWetc/api-surface/semiotic-recipes.api.md61function createCapacityQueueController(options: CapacityQueueControllerOptions): PhysicsControllerCODE
LOWetc/api-surface/semiotic-recipes.api.md62function createDependencyGateController(options: DependencyGateOptions): DependencyGateControllerCODE
LOWetc/api-surface/semiotic-recipes.api.md64function createProcessJourneyLedger(options: { stages: readonly ProcessJourneyStage[]; bodyIds?: readonly string[]; }): CODE
LOWetc/api-surface/semiotic-recipes.api.md65function createServiceLevelController(options: ServiceLevelControllerOptions): ServiceLevelControllerCODE
LOWetc/api-surface/semiotic-recipes.api.md66function createServiceResourcePoolController(options: ServiceResourcePoolOptions): ServiceResourcePoolControllerCODE
LOWetc/api-surface/semiotic-recipes.api.md119function mobileSmallMultipleRecipe(options?: MobileChartFamilyRecipeOptions | undefined): MobileChartFamilyRecipeCODE
LOWetc/api-surface/semiotic-recipes.api.md131function parallelCoordinatesLayout(*: OrdinalLayoutContext<import("../semiotic-recipes-core").ParallelCoordinatesConfig>CODE
LOWetc/api-surface/semiotic-recipes.api.md147function regionCountsToProjectionRows(counts: RegionCountMap, order?: readonly string[] | undefined): { label: string; vCODE
LOWetc/api-surface/semiotic-recipes.api.md169function tokenTaskIntentToCapabilityIntents(intent: TokenTaskIntent): TokenCapabilityIntent[]CODE
LOWetc/api-surface/semiotic-geo.api.md20function resolveReferenceGeography(name: ReferenceGeography): Promise<import("geojson").Feature<import("geojson").GeometCODE
LOWetc/api-surface/semiotic-physics-matter.api.md14function matterBodiesToPhysicsColliders(bodies: readonly MatterBodyLike[], options?: MatterMigrationOptions | undefined)CODE
LOWetc/api-surface/semiotic-physics-matter.api.md15function matterBodiesToPhysicsSpawns(bodies: readonly MatterBodyLike[], options?: MatterMigrationOptions | undefined): PCODE
LOWetc/api-surface/semiotic-physics-matter.api.md16function matterBodyToPhysicsBodySpec(body: MatterBodyLike, index?: number | undefined, options?: MatterMigrationOptions CODE
LOWetc/api-surface/semiotic-physics-matter.api.md17function matterBodyToPhysicsColliderSpec(body: MatterBodyLike, index?: number | undefined, options?: MatterMigrationOptiCODE
LOWetc/api-surface/semiotic-physics-matter.api.md18function matterPhysicsDependencyError(cause?: unknown): ErrorCODE
LOWetc/api-surface/semiotic-physics-matter.api.md19function optionalEngineDependencyError(details: PhysicsOptionalEngineInstallDetails, cause?: unknown): PhysicsOptionalEnCODE
LOWetc/api-surface/semiotic-recipes-core.api.md59function composePhysicsControllers(controllers: readonly PhysicsController[] | null | undefined): ComposedPhysicsControlCODE
LOWetc/api-surface/semiotic-recipes-core.api.md60function createCapacityQueueController(options: CapacityQueueControllerOptions): PhysicsControllerCODE
LOWetc/api-surface/semiotic-recipes-core.api.md61function createDependencyGateController(options: DependencyGateOptions): DependencyGateControllerCODE
LOWetc/api-surface/semiotic-recipes-core.api.md63function createProcessJourneyLedger(options: { stages: readonly ProcessJourneyStage[]; bodyIds?: readonly string[]; }): CODE
LOWetc/api-surface/semiotic-recipes-core.api.md64function createServiceLevelController(options: ServiceLevelControllerOptions): ServiceLevelControllerCODE
LOWetc/api-surface/semiotic-recipes-core.api.md65function createServiceResourcePoolController(options: ServiceResourcePoolOptions): ServiceResourcePoolControllerCODE
LOWetc/api-surface/semiotic-recipes-core.api.md118function mobileSmallMultipleRecipe(options?: MobileChartFamilyRecipeOptions | undefined): MobileChartFamilyRecipeCODE
LOWetc/api-surface/semiotic-recipes-core.api.md130function parallelCoordinatesLayout(*: OrdinalLayoutContext<import("../semiotic-recipes-core").ParallelCoordinatesConfig>CODE
LOWetc/api-surface/semiotic-recipes-core.api.md146function regionCountsToProjectionRows(counts: RegionCountMap, order?: readonly string[] | undefined): { label: string; vCODE
LOWetc/api-surface/semiotic-recipes-core.api.md168function tokenTaskIntentToCapabilityIntents(intent: TokenTaskIntent): TokenCapabilityIntent[]CODE
LOWetc/api-surface/semiotic-physics.api.md25function bodiesToAnnotationAnchors(bodies: readonly PhysicsBodyState[]): PhysicsAnnotationAnchorNode[]CODE
LOWetc/api-surface/semiotic-physics.api.md31function buildPhysicsAnnotationContext(options: { width: number; height: number; pointNodes?: PhysicsAnnotationAnchorNodCODE
LOWetc/api-surface/semiotic-physics.api.md42function composePhysicsControllers(controllers: readonly PhysicsController[] | null | undefined): ComposedPhysicsControlCODE
LOWetc/api-surface/semiotic-physics.api.md43function createCapacityQueueController(options: CapacityQueueControllerOptions): PhysicsControllerCODE
LOWetc/api-surface/semiotic-physics.api.md44function createDefaultPhysicsEngineAdapter(options?: PhysicsKernelOptions | undefined): PhysicsEngineAdapterCODE
LOWetc/api-surface/semiotic-physics.api.md45function createDependencyGateController(options: DependencyGateOptions): DependencyGateControllerCODE
LOWetc/api-surface/semiotic-physics.api.md49function createProcessJourneyLedger(options: { stages: readonly ProcessJourneyStage[]; bodyIds?: readonly string[]; }): CODE
LOWetc/api-surface/semiotic-physics.api.md50function createServiceLevelController(options: ServiceLevelControllerOptions): ServiceLevelControllerCODE
LOWetc/api-surface/semiotic-physics.api.md51function createServiceResourcePoolController(options: ServiceResourcePoolOptions): ServiceResourcePoolControllerCODE
LOWetc/api-surface/semiotic-physics.api.md54function evaluatePhysicsBodyBudget(input: PhysicsBodyBudgetInput): PhysicsBodyBudgetDecisionCODE
LOWetc/api-surface/semiotic-physics.api.md59function normalizePhysicsAnnotations(annotations: Datum[] | undefined): Datum[] | undefinedCODE
LOWetc/api-surface/semiotic-physics.api.md61function physicsProcessBoundaryColliders(shape: PhysicsColliderShape, options?: PhysicsProcessBoundaryOptions | undefineCODE
LOWetc/api-surface/semiotic-physics.api.md63function physicsProcessRegionSemanticItem(region: StreamPhysicsRegionEffect): PhysicsSemanticItem | nullCODE
LOWetc/api-surface/semiotic-physics.api.md64function physicsProcessStageSemanticItems(stages: readonly PhysicsProcessStage[]): PhysicsSemanticItem[]CODE
LOWetc/api-surface/semiotic-physics.api.md75function regionCountsToProjectionRows(counts: RegionCountMap, order?: readonly string[] | undefined): { label: string; vCODE
LOWetc/api-surface/semiotic-ai-core.api.md13function communicativeActForIntent(intent: IntentId): CommunicativeAct | undefinedCODE
LOWetc/api-surface/semiotic-ai-core.api.md24function formatMobileVisualizationAudit(result: MobileVisualizationAuditResult): stringCODE
LOWetc/api-surface/semiotic-ai-core.api.md29function mobileVisualizationCaveats(): string[]CODE
LOWetc/api-surface/semiotic-utils.api.md25function communicativeActForIntent(intent: IntentId): CommunicativeAct | undefinedCODE
LOWetc/api-surface/semiotic-utils.api.md38function formatMobileVisualizationAudit(result: MobileVisualizationAuditResult): stringCODE
LOWetc/api-surface/semiotic-utils.api.md44function mobileVisualizationCaveats(): string[]CODE
LOWetc/api-surface/semiotic-ai.api.md88function MobileAnnotationCalloutList({ items, title, empty, ordered, renderItem, className, style, }: MobileAnnotationCaCODE
LOWetc/api-surface/semiotic-ai.api.md130function auditVisualizationControls({ controls, minimumTargetSize, }: AuditVisualizationControlsOptions): ControlAuditReCODE
LOWetc/api-surface/semiotic-ai.api.md134function buildRecipeNavigationTree(recipe: ChartRecipe<Datum, Record<string, unknown>>, props: Datum, options?: RecipeNaCODE
LOWetc/api-surface/semiotic-ai.api.md141function communicativeActForIntent(intent: IntentId): CommunicativeAct | undefinedCODE
LOWetc/api-surface/semiotic-ai.api.md149function createIndexedDBConversationArcSink(options?: IndexedDBConversationArcSinkOptions | undefined): ConversationArcSCODE
LOWetc/api-surface/semiotic-ai.api.md150function createLocalStorageConversationArcSink(options?: LocalStorageConversationArcSinkOptions | undefined): ConversatiCODE
370 more matches not shown…
Over-Commented Block125 hits · 120 pts
SeverityFileLineSnippetContext
LOWintegration-tests/helpers.ts121 state.stableCount = 0COMMENT
LOWintegration-tests/process-sankey.spec.ts81 await expect(tc).toBeVisible()COMMENT
LOWintegration-tests/ordinal-frame.spec.ts41 // SwarmPlot's `valueExtent` prop maps to the frame's `rExtent`. EachCOMMENT
LOWintegration-tests/realtime-charts.spec.ts121 // by `computeCanvasAriaLabel` — it only carries a node countCOMMENT
LOWintegration-tests/status-scale-theme-examples/index.js1// Status-aware + scale theme matrix for Phase A milestone 3.COMMENT
LOWintegration-tests/realtime-examples/index.js141}COMMENT
LOWintegration-tests/ordinal-examples/index.js441 // • [undefined, max] — only the max pinned, min stays data-derivedCOMMENT
LOW…gration-tests/histogram-theme-stroke-examples/index.js1// RealtimeHistogram theme-aware stroke regression harness.COMMENT
LOWintegration-tests/background-graphics-examples/index.js1import * as Semiotic from "../../dist/semiotic.module.min.js"COMMENT
LOWintegration-tests/chart-modes-examples/index.js1// Chart-mode visual regression matrix.COMMENT
LOWintegration-tests/primitive-props-examples/index.js1// Primitive-props matrix for Phase B.COMMENT
LOW…gration-tests/primitive-theme-matrix-examples/index.js1// Primitive-theme matrix: Ordinal / Network / Geo under light + dark.COMMENT
LOWdocs/src/blog/entries/difference-chart.jsx1import React, { useRef } from "react"COMMENT
LOWdocs/src/components/apiDocs.js1const KIND_INTERFACE = 256COMMENT
LOWdocs/src/components/codegen.js1// Pure code-string generation for LiveExample.COMMENT
LOWdocs/src/components/reshapeSuggestions.js1// Generative reshape suggestions — the "your flat table could become this" layer.COMMENT
LOWdocs/src/examples/recipes/AnscombesSankey.jsx41// sequence and stay durations relative to admit time. CycleCOMMENT
LOWdocs/src/examples/recipes/PatientJourneys.jsx41// rightmost discharge slots easier to read in the small height theCOMMENT
LOWdocs/src/examples/recipes/data/kstreamsTopology.js1// ─────────────────────────────────────────────────────────────────────────COMMENT
LOWdocs/src/examples/recipes/data/dagLayout.js1// ─────────────────────────────────────────────────────────────────────────COMMENT
LOWdocs/src/pages/custom-charts/CustomLayoutsPage.jsx41 const base = dow === 0 || dow === 6 ? 0.8 : 2.4COMMENT
LOWdocs/src/pages/custom-charts/CustomLayoutsPage.jsx61// is something d3-tree can express but uniform-height layouts padCOMMENT
LOWdocs/src/pages/charts/ProcessSankeyPage.jsx221// and joined the queueCOMMENT
LOWdocs/src/pages/examples/data/worldDevelopment.js1// Real data: World Bank, World Development Indicators (data.worldbank.org),COMMENT
LOWdocs/src/pages/examples/data/worldDevelopment.js601COMMENT
LOWdocs/src/pages/examples/data/urineWheel.js1// The Wheel of Urines — data for a medieval uroscopy diagnostic chart.COMMENT
LOWdocs/src/pages/examples/data/gestaltData.js1// Data + small deterministic layout helpers for the chapterizedCOMMENT
LOWdocs/src/pages/accessibility/AccessibilityPage.jsx201COMMENT
LOWai/mcp-server.ts2741 }COMMENT
LOWai/mcp-server.ts2761 // this in the request handler. Set MCP_ALLOWED_HOSTS to your publicCOMMENT
LOWscripts/check-ssr-alignment.js101 // Composite/wrapper charts — not standalone renderableCOMMENT
LOWscripts/check-ssr-alignment.js181 const blockStart = ssrSource.indexOf(`const ${varName}:`)COMMENT
LOWscripts/rollback-release.sh1#!/usr/bin/env bashCOMMENT
LOW.github/workflows/release.yml261 }COMMENT
LOWsrc/components/LinkedCharts.tsx261 // sits below (the first chart in the composed layout).COMMENT
LOWsrc/components/ThemeProvider.tsx181 // with the literal default as the fallback — overriding the varCOMMENT
LOWsrc/components/Tooltip/Tooltip.tsx461export function normalizeTooltip(tooltip: TooltipProp | undefined): false | TooltipContentFn | undefined {COMMENT
LOWsrc/components/Tooltip/Tooltip.tsx501 && hoverData.data !== undefinedCOMMENT
LOWsrc/components/Tooltip/FlippingTooltip.test.tsx241 <div>content</div>COMMENT
LOWsrc/components/Tooltip/FlippingTooltip.tsx161COMMENT
LOWsrc/components/stream/SceneToSVG.tsx721 case "symbol":COMMENT
LOWsrc/components/stream/StreamXYFrame.hydration.test.tsx121 expect(html).not.toContain("<canvas")COMMENT
LOWsrc/components/stream/StreamXYFrame.tsx221 // dirtyRef is declared before useFrame so it can be threaded in forCOMMENT
LOWsrc/components/stream/StreamXYFrame.tsx261 // - Pure CSR mounts (no SSR HTML) skip the SVG branch entirelyCOMMENT
LOWsrc/components/stream/StreamXYFrame.tsx661 // Without a hit, only multi-tooltip (hover-anywhere) mode has anythingCOMMENT
LOWsrc/components/stream/StreamXYFrame.tsx961 ctx.clearRect(-margin.left, -margin.top, size[0], size[1])COMMENT
LOWsrc/components/stream/StreamXYFrame.tsx1221COMMENT
LOWsrc/components/stream/useFrame.ts201 tableId: stringCOMMENT
LOWsrc/components/stream/OrdinalPipelineStore.test.ts941 })COMMENT
LOWsrc/components/stream/restylePaint.frame.test.tsx1import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"COMMENT
LOWsrc/components/stream/sampleCurvePath.test.ts41 ]COMMENT
LOWsrc/components/stream/NetworkCanvasHitTester.test.ts261 // Note: bezier and ribbon hit testing uses Path2D + canvas isPointInPath,COMMENT
LOWsrc/components/stream/geoPipelineHelpers.ts81): Style {COMMENT
LOWsrc/components/stream/PipelineStore.ts521COMMENT
LOWsrc/components/stream/PipelineStore.ts1441 // remount. Existing pulse timestamps deliberately survive color/durationCOMMENT
LOWsrc/components/stream/useHydration.ts161 cancelRender?.()COMMENT
LOWsrc/components/stream/NetworkPipelineStore.ts121 // frame). Hit testing reads `sceneNodes`, which only change in buildScene(),COMMENT
LOWsrc/components/stream/NetworkPipelineStore.ts421 // For customNetworkLayout charts (e.g. ProcessSankey), `runLayout`COMMENT
LOWsrc/components/stream/PipelineStore.stackOrder.test.ts141 // string ≠ "key" without an explicit `else` for unknown values,COMMENT
LOWsrc/components/stream/OrdinalPipelineStore.ts481 }COMMENT
65 more matches not shown…
Structural Annotation Overuse26 hits · 46 pts
SeverityFileLineSnippetContext
LOWMIGRATION.md30## Step 1: Update ReactCOMMENT
LOWMIGRATION.md41## Step 2: Install Semiotic v3COMMENT
LOWMIGRATION.md47## Step 3: Understand the Frame ChangesCOMMENT
LOWMIGRATION.md120## Step 4: Check for Removed APIsCOMMENT
LOWMIGRATION.md172## Step 5: Adopt Chart HOCs (Recommended)COMMENT
LOWMIGRATION.md228## Step 6: Use Streaming (Optional)COMMENT
LOWMIGRATION.md300## Step 7: Use Granular Imports for Smaller BundlesCOMMENT
LOWMIGRATION.md325## Step 8: TypeScript (Optional)COMMENT
LOWMIGRATION.md351## Step 9: Next.js / SSR FrameworksCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts217 // Step 1: Parse CSVCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts220 // Step 2: Transform to typed pointsCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts232 // Step 3: Calculate extentsCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts245 // Step 4: Project points (accessor application)COMMENT
LOWbenchmarks/unit/hierarchy-processing.bench.ts175 // Step 1: Build hierarchy + layoutCOMMENT
LOWbenchmarks/unit/hierarchy-processing.bench.ts181 // Step 2: Flatten to nodes/edgesCOMMENT
LOWscripts/rollback-release.sh78# Step 1: Deprecate the bad versionCOMMENT
LOWscripts/rollback-release.sh84# Step 2: Point dist-tag to previous good versionCOMMENT
LOWscripts/rollback-release.sh90# Step 3: VerifyCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts495 // Step 1: Resolve projectionCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts499 // Step 2: Compute bounds and fit projectionCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts505 // Step 3: Build scales objectCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts549 // Step 5: Apply distance cartogram transformCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts554 // Step 6: Apply realtime encodingsCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts562 // Step 7: Intro animation — synthesize center-origin prev scene on first renderCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts576 // Step 8: Data-change transitionCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts521 // Step 4: Build scene nodesCOMMENT
Verbosity Indicators17 hits · 34 pts
SeverityFileLineSnippetContext
LOWbenchmarks/unit/large-dataset-processing.bench.ts217 // Step 1: Parse CSVCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts220 // Step 2: Transform to typed pointsCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts232 // Step 3: Calculate extentsCOMMENT
LOWbenchmarks/unit/large-dataset-processing.bench.ts245 // Step 4: Project points (accessor application)COMMENT
LOWbenchmarks/unit/hierarchy-processing.bench.ts175 // Step 1: Build hierarchy + layoutCOMMENT
LOWbenchmarks/unit/hierarchy-processing.bench.ts181 // Step 2: Flatten to nodes/edgesCOMMENT
LOWscripts/rollback-release.sh78# Step 1: Deprecate the bad versionCOMMENT
LOWscripts/rollback-release.sh84# Step 2: Point dist-tag to previous good versionCOMMENT
LOWscripts/rollback-release.sh90# Step 3: VerifyCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts495 // Step 1: Resolve projectionCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts499 // Step 2: Compute bounds and fit projectionCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts505 // Step 3: Build scales objectCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts549 // Step 5: Apply distance cartogram transformCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts554 // Step 6: Apply realtime encodingsCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts562 // Step 7: Intro animation — synthesize center-origin prev scene on first renderCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts576 // Step 8: Data-change transitionCOMMENT
LOWsrc/components/stream/GeoPipelineStore.ts521 // Step 4: Build scene nodesCOMMENT
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHdocs/src/IndexPages.jsx294 in real time with auto-generated code.CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/add-legend-to-hocs.sh20 # Check if createLegend import already existsCOMMENT
LOWscripts/add-legend-to-hocs.sh27 # Check if showLegend prop already existsCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/components/charts/shared/formatUtils.ts212 // Use median gap to be robust against one-off outliersCOMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/components/charts/custom/NetworkCustomChart.tsx149 // Selection / linked-hover wiring — the custom-chart scaffold is theCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWdocs/src/pages/playground/DonutChartPlayground.jsx36 { category: "Acme Corp", amount: 34 },CODE
LOWdocs/src/pages/playground/DonutChartPlayground.jsx64 { category: "Acme Corp", amount: 34 },CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/rollback-release.sh6# Usage:COMMENT