React data visualization library for streaming, networks, and AI-assisted development
This report summarizes scanner evidence for nteract/semiotic, a TypeScript project with 2,714 GitHub stars. SynthScan examined 1,244,569 lines of code across 3916 source files, recording 2759 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 5.0 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1172 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 2590 finding(s).
Which changes need focused human review? 2759 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2759 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | integration-tests/process-sankey.spec.ts | 203 | // ── Visual regression baselines ──────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/streaming-regression.spec.ts | 89 | // ─── Grey fill regression tests ────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/streaming-regression.spec.ts | 136 | // ─── Legend regression tests ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/streaming-regression.spec.ts | 169 | // ─── Tooltip regression tests ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/streaming-regression.spec.ts | 203 | // ─── LineChart infinite loop regression ────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/streaming-regression.spec.ts | 233 | // ─── Force-directed graph centering regression ─────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/streaming-regression.spec.ts | 292 | // ─── No JS errors during streaming ─────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/ssr-parity-fixtures.js | 959 | // ── SSR-fix regression fixtures data ─────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/ssr-parity-fixtures.js | 1876 | // ── SSR-fix regression fixtures ──────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/brush-selection.spec.ts | 348 | // ── Interaction-state visual snapshot ─────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/coordinated-views.spec.ts | 9 | // ── Linked hover cross-highlighting ─────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/coordinated-views.spec.ts | 55 | // ── ChartGrid with emphasis ─────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/coordinated-views.spec.ts | 78 | // ── Empty state ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/coordinated-views.spec.ts | 93 | // ── Three-way linked charts ─────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/ordinal-frame.spec.ts | 261 | // ── Default-theme HOC coverage backfill ────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/realtime-charts.spec.ts | 163 | // ── Default-theme HOC coverage backfill (static fixtures) ──────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 5 | // ─── 1. Canvas aria-labels describe chart type and data shape ───────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 68 | // ─── 2. AriaLiveTooltip region with aria-live="polite" ──────────────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 118 | // ─── 3. Legend keyboard traversal ───────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 237 | // ─── 4. Focus rings appear on keyboard focus ───────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 326 | // ─── 5. SVG overlays have title/desc elements ──────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 408 | // ─── 6. ChartContainer toolbar buttons have aria-labels ─────────────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 499 | // ─── 7. Automated axe-core accessibility scanning ─────────────────────────── | COMMENT |
| MEDIUM | integration-tests/accessibility.spec.ts | 540 | // ─── Smoke test: no JS errors on page load ─────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/geo-charts.spec.ts | 186 | // ── Default-theme HOC coverage backfill ────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/xy-frame.spec.ts | 386 | // ── Default-theme HOC coverage backfill ────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/xy-frame.spec.ts | 415 | // ── Interaction-state visual snapshots ────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/network-frame.spec.ts | 97 | // ── Default-theme HOC coverage backfill ────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/xy-examples/index.js | 292 | // ── Default-theme HOC coverage backfill ───────────────────────────── | COMMENT |
| MEDIUM | integration-tests/xy-examples/index.js | 401 | // ── Interaction-state fixtures ────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/xy-examples/index.js | 463 | // ── Multi-tooltip fixtures ─────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/xy-examples/index.js | 521 | // ── xExtent / yExtent override variants ──────────────────────────── | COMMENT |
| MEDIUM | integration-tests/status-scale-theme-examples/index.js | 24 | // ── Deterministic data ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/status-scale-theme-examples/index.js | 120 | // ── Waterfall: themeSemantic.success / .danger ──────────────────────── | COMMENT |
| MEDIUM | integration-tests/status-scale-theme-examples/index.js | 132 | // ── Heatmap: themeSequential ────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/status-scale-theme-examples/index.js | 146 | // ── Likert: themeDiverging ──────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/realtime-examples/index.js | 144 | // ── Static bounded fixtures for visual snapshots ───────────────────── | COMMENT |
| MEDIUM | integration-tests/realtime-examples/index.js | 226 | // ── Default-theme HOC coverage backfill (static) ──────────────────── | COMMENT |
| MEDIUM | integration-tests/network-examples/index.js | 147 | // ── Default-theme HOC coverage backfill ──────────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 27 | // ── 1. Streaming Stacked Bar (grey fill + legend regression) ───────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 63 | // ── 2. Streaming Pie (grey fill + legend regression) ───────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 94 | // ── 3. Streaming Bubble (grey fill regression) ─────────────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 127 | // ── 4. Streaming Grouped Bar (grey fill + legend regression) ───────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 161 | // ── 5. Streaming Stacked Area (grey fill regression) ───────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 193 | // ── 6. Area chart tooltip (shows "-" regression) ───────────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 215 | // ── 7. LineChart streaming (infinite loop regression) ───────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 249 | // ── 8. Force-Directed Graph centering ──────────────────────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 274 | // ── 9. Streaming Chord (blue-only regression) ──────────────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 301 | // ── 10. Streaming Donut (grey fill + legend regression) ────────────────────── | COMMENT |
| MEDIUM | …tegration-tests/streaming-regression-examples/index.js | 332 | // ── 11. Streaming Scatterplot (grey fill regression) ───────────────────────── | COMMENT |
| MEDIUM | integration-tests/coordinated-examples/index.js | 96 | // ── Shared test data (deterministic) ──────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/coordinated-examples/index.js | 984 | // ── Test cases ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/ordinal-examples/index.js | 405 | // ── Default-theme HOC coverage backfill ───────────────────────────── | COMMENT |
| MEDIUM | integration-tests/ordinal-examples/index.js | 436 | // ── valueExtent override variants ───────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/themed-examples/index.js | 23 | // ── Deterministic data ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/themed-examples/index.js | 90 | // ── Charts to snapshot per theme ────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/themed-examples/index.js | 150 | // ── Render grid ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/custom-layout-examples/index.js | 168 | // ── Glyph unit chart: composite-pictogram scene nodes fed by unitize ──────── | COMMENT |
| MEDIUM | integration-tests/chart-modes-examples/index.js | 36 | // ── Deterministic fixtures ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | integration-tests/primitive-props-examples/index.js | 34 | // ── Deterministic data ───────────────────────────────────────────────────── | COMMENT |
| 1515 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | etc/api-surface/semiotic-server.api.md | 16 | function renderPhysicsToAnimatedGif(props: PhysicsGifFrameProps, options?: PhysicsGifOptions | undefined): Promise<Buffe | CODE |
| LOW | etc/api-surface/semiotic-network.api.md | 13 | function NetworkPerspectiveBillboard({ x, y, z, onGround, children }: {x: number; y: number; z?: NetworkPerspectiveHeigh | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 24 | function createNetworkPerspectiveFrame(perspective: NetworkPerspective | null | undefined, size: readonly [number, numbe | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 25 | function diagnoseProcessSankeyLayout(layout: Pick<ProcessSankeyLayout, "compressedPadding" | "crossingsAfter" | "layoutQ | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 26 | function diagnoseProcessSankeyProps(props: Record<string, unknown>): Diagnosis[] | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 27 | function explainProcessSankeyLayout(layout: Pick<ProcessSankeyLayout, "compressedPadding" | "crossingsAfter" | "layoutQu | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 45 | function preloadNetworkPerspectiveExtras(): Promise<void> | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 47 | function registerBuiltInNetworkLayouts(): void | CODE |
| LOW⚡ | etc/api-surface/semiotic-network.api.md | 48 | function resolveNetworkPerspective(perspective: NetworkPerspective | null | undefined): ResolvedNetworkPerspective | nul | CODE |
| LOW | etc/api-surface/semiotic-physics-rapier.api.md | 17 | function optionalEngineDependencyError(details: PhysicsOptionalEngineInstallDetails, cause?: unknown): PhysicsOptionalEn | CODE |
| LOW | etc/api-surface/semiotic-physics-rapier.api.md | 18 | function rapierPhysicsDependencyError(cause?: unknown): Error | CODE |
| LOW⚡ | etc/api-surface/semiotic-controls.api.md | 9 | function DirectManipulationControl({ value, onChange, pointToValue, pointerToValue, min, max, step, stepOrigin, largeSte | CODE |
| LOW⚡ | etc/api-surface/semiotic-controls.api.md | 10 | function DirectManipulationMarkers({ values, onChange, markers, valueToPoint, pointToValue, min, max, step, stepOrigin, | CODE |
| LOW⚡ | etc/api-surface/semiotic-controls.api.md | 14 | function auditVisualizationControls({ controls, minimumTargetSize, element, }: AuditVisualizationControlsOptions): Contr | CODE |
| LOW⚡ | etc/api-surface/semiotic-controls.api.md | 16 | function createControlObservationAdapter({ controlType, controlId, chartId, chartType, onObservation, }: ControlObservat | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 11 | function adaptHistoricalSnapshotMetadata(metadata: HistoricalSnapshotMetadata): TemporalContext | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 12 | function adaptProcessingJobMetadata(metadata: ProcessingJobMetadata): TemporalContext | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 13 | function adaptQualityCheckMetadata(metadata: QualityCheckMetadata): TemporalContext | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 16 | function applyCollectionCorrection(collection: ArtifactCollectionContract, correction: CollectionCorrectionRecord): Arti | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 17 | function artifactContractScriptTag(packet: ArtifactPacket): string | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 23 | function buildArtifactCollectionLineage(collection: ArtifactCollectionContract): ArtifactCollectionLineage | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 31 | function createAdjacentArtifactSidecar(packet: ArtifactPacket, hostPath: string): AdjacentArtifactSidecar | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 36 | function eventTimePresentationFinding(context: TemporalContext, referenceTime?: string | undefined): ObligationResult | | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 38 | function fingerprintArtifactCollection(collection: ArtifactCollectionContract): string | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 48 | function requireSerializableArtifactContract(value: ArtifactContract): SerializedArtifactContract & {contract: ArtifactC | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 51 | function serializeArtifactCollection(value: unknown): SerializedArtifactCollection | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 52 | function serializeArtifactContract(value: unknown, options?: SerializeArtifactContractOptions | undefined): SerializedAr | CODE |
| LOW⚡ | etc/api-surface/semiotic-artifact.api.md | 57 | function validateArtifactCollection(value: unknown): ArtifactCollectionValidation | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 73 | function composePhysicsControllers(controllers: null | readonly PhysicsController[] | undefined): ComposedPhysicsControl | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 74 | function computeTransitDiagramPositions(nodes: readonly {id: string; data: Datum;}[], edges: readonly TransitDiagramEdge | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 76 | function createCapacityQueueController(options: CapacityQueueControllerOptions): PhysicsController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 78 | function createDependencyGateController(options: DependencyGateOptions): DependencyGateController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 82 | function createProcessJourneyLedger(options: {stages: readonly ProcessJourneyStage[]; bodyIds?: readonly string[];}): Pr | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 83 | function createServiceLevelController(options: ServiceLevelControllerOptions): ServiceLevelController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 84 | function createServiceResourcePoolController(options: ServiceResourcePoolOptions): ServiceResourcePoolController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes.api.md | 93 | function describePhysicsStageGeography(geography: PhysicsStageGeography, nouns?: undefined | {charge?: string; apparatus | CODE |
| LOW | etc/api-surface/semiotic-recipes.api.md | 149 | function mobileSmallMultipleRecipe(options?: MobileChartFamilyRecipeOptions | undefined): MobileChartFamilyRecipe | CODE |
| LOW | etc/api-surface/semiotic-recipes.api.md | 171 | function parallelCoordinatesLayout(ctx: OrdinalLayoutContext<import("../semiotic-recipes-core").ParallelCoordinatesConfi | CODE |
| LOW | etc/api-surface/semiotic-recipes.api.md | 196 | function regionCountsToProjectionRows(counts: RegionCountMap, order?: readonly string[] | undefined): {label: string; va | CODE |
| LOW | etc/api-surface/semiotic-recipes.api.md | 231 | function tokenTaskIntentToCapabilityIntents(intent: TokenTaskIntent): TokenCapabilityIntent[] | CODE |
| LOW | etc/api-surface/semiotic-recipes.api.md | 241 | function wordTrailsProgressiveReveal(options: WordTrailsProgressiveRevealOptions): Pick<WordTrailsConfig, "weightOpacity | CODE |
| LOW | etc/api-surface/semiotic-atlas-core.api.md | 18 | function getBranchResidualConnections(projection: {order: string[]; children: {[k: string]: string[];}; components: stri | CODE |
| LOW | etc/api-surface/semiotic-geo.api.md | 36 | function resolveReferenceGeography(name: ReferenceGeography): Promise<import("geojson").Feature<import("geojson").Geomet | CODE |
| LOW⚡ | etc/api-surface/semiotic-physics-matter.api.md | 16 | function matterBodiesToPhysicsColliders(bodies: readonly MatterBodyLike[], options?: MatterMigrationOptions | undefined) | CODE |
| LOW⚡ | etc/api-surface/semiotic-physics-matter.api.md | 17 | function matterBodiesToPhysicsSpawns(bodies: readonly MatterBodyLike[], options?: MatterMigrationOptions | undefined): P | CODE |
| LOW⚡ | etc/api-surface/semiotic-physics-matter.api.md | 18 | function matterBodyToPhysicsBodySpec(body: MatterBodyLike, index?: number | undefined, options?: MatterMigrationOptions | CODE |
| LOW⚡ | etc/api-surface/semiotic-physics-matter.api.md | 19 | function matterBodyToPhysicsColliderSpec(body: MatterBodyLike, index?: number | undefined, options?: MatterMigrationOpti | CODE |
| LOW⚡ | etc/api-surface/semiotic-physics-matter.api.md | 20 | function matterPhysicsDependencyError(cause?: unknown): Error | CODE |
| LOW⚡ | etc/api-surface/semiotic-physics-matter.api.md | 21 | function optionalEngineDependencyError(details: PhysicsOptionalEngineInstallDetails, cause?: unknown): PhysicsOptionalEn | CODE |
| LOW | etc/api-surface/semiotic-realtime-core.api.md | 102 | function histogramBinSelectionDatum(timeField: string): (datum: Datum) => Datum | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 72 | function composePhysicsControllers(controllers: null | readonly PhysicsController[] | undefined): ComposedPhysicsControl | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 73 | function computeTransitDiagramPositions(nodes: readonly {id: string; data: Datum;}[], edges: readonly TransitDiagramEdge | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 75 | function createCapacityQueueController(options: CapacityQueueControllerOptions): PhysicsController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 77 | function createDependencyGateController(options: DependencyGateOptions): DependencyGateController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 81 | function createProcessJourneyLedger(options: {stages: readonly ProcessJourneyStage[]; bodyIds?: readonly string[];}): Pr | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 82 | function createServiceLevelController(options: ServiceLevelControllerOptions): ServiceLevelController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 83 | function createServiceResourcePoolController(options: ServiceResourcePoolOptions): ServiceResourcePoolController | CODE |
| LOW⚡ | etc/api-surface/semiotic-recipes-core.api.md | 92 | function describePhysicsStageGeography(geography: PhysicsStageGeography, nouns?: undefined | {charge?: string; apparatus | CODE |
| LOW | etc/api-surface/semiotic-recipes-core.api.md | 148 | function mobileSmallMultipleRecipe(options?: MobileChartFamilyRecipeOptions | undefined): MobileChartFamilyRecipe | CODE |
| LOW | etc/api-surface/semiotic-recipes-core.api.md | 170 | function parallelCoordinatesLayout(ctx: OrdinalLayoutContext<import("../semiotic-recipes-core").ParallelCoordinatesConfi | CODE |
| 955 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deploy/cloud-run-nightly/cloudbuild.yaml | 1 | # Repository-built nightly deployment for the us-central1 Cloud Run service | COMMENT |
| LOW | .agents/skills/blog-post/templates/narrative.js | 1 | // TEMPLATE — narrative / case study | COMMENT |
| LOW | .agents/skills/blog-post/templates/narrative.js | 141 | // 2. Add metadata-only copy to docs/src/blog/entries-meta.js. | COMMENT |
| LOW | .agents/skills/blog-post/templates/release-summary.js | 101 | date: "TODO YYYY-MM-DD", // release date from CHANGELOG | COMMENT |
| LOW | .agents/skills/blog-post/templates/chart-explainer.js | 1 | // TEMPLATE — chart explainer | COMMENT |
| LOW | integration-tests/helpers.ts | 161 | return state.stableCount >= stableFrames | COMMENT |
| LOW | integration-tests/ordinal-frame.spec.ts | 41 | // SwarmPlot's `valueExtent` prop maps to the frame's `rExtent`. Each | COMMENT |
| LOW | integration-tests/status-scale-theme-examples/index.js | 1 | // Status-aware + scale theme matrix for Phase A milestone 3. | COMMENT |
| LOW | integration-tests/realtime-examples/index.js | 141 | }) | COMMENT |
| LOW | integration-tests/ordinal-examples/index.js | 441 | // • [undefined, max] — only the max pinned, min stays data-derived | COMMENT |
| LOW | …gration-tests/histogram-theme-stroke-examples/index.js | 1 | // RealtimeHistogram theme-aware stroke regression harness. | COMMENT |
| LOW | integration-tests/background-graphics-examples/index.js | 1 | import * as Semiotic from "../../dist/semiotic.module.min.js" | COMMENT |
| LOW | integration-tests/chart-modes-examples/index.js | 1 | // Chart-mode visual regression matrix. | COMMENT |
| LOW | integration-tests/primitive-props-examples/index.js | 1 | // Primitive-props matrix for Phase B. | COMMENT |
| LOW | …gration-tests/primitive-theme-matrix-examples/index.js | 1 | // Primitive-theme matrix: Ordinal / Network / Geo under light + dark. | COMMENT |
| LOW | docs/src/blog/entries/difference-chart.jsx | 1 | import React, { useRef } from "react" | COMMENT |
| LOW | docs/src/components/codegen.js | 1 | // Pure code-string generation for LiveExample. | COMMENT |
| LOW | docs/src/components/reshapeSuggestions.js | 1 | // Generative reshape suggestions — the "your flat table could become this" layer. | COMMENT |
| LOW | docs/src/examples/recipes/AnscombesSankey.jsx | 41 | // starting from ER. The total path defines the patient's ward | COMMENT |
| LOW | docs/src/examples/recipes/PatientJourneys.jsx | 41 | // edge; (2) the band gains a bit more breathing room which makes the | COMMENT |
| LOW | docs/src/examples/recipes/data/kstreamsTopology.js | 1 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| LOW | docs/src/examples/recipes/data/dagLayout.js | 1 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| LOW | docs/src/pages/custom-charts/CustomLayoutsPage.jsx | 61 | // | COMMENT |
| LOW | docs/src/pages/charts/ProcessSankeyPage.jsx | 241 | // the ticket from the system | COMMENT |
| LOW | docs/src/pages/examples/data/worldDevelopment.js | 1 | // Real data: World Bank, World Development Indicators (data.worldbank.org), | COMMENT |
| LOW | docs/src/pages/examples/data/worldDevelopment.js | 601 | COMMENT | |
| LOW | docs/src/pages/examples/data/urineWheel.js | 1 | // The Wheel of Urines — data for a medieval uroscopy diagnostic chart. | COMMENT |
| LOW | docs/src/pages/examples/data/gestaltData.js | 1 | // Data + small deterministic layout helpers for the chapterized | COMMENT |
| LOW | docs/src/pages/accessibility/AccessibilityPage.jsx | 201 | COMMENT | |
| LOW | ai/mcp-server.ts | 5221 | // overhead. Stateless lets Cloud Run autoscale freely (no session affinity | COMMENT |
| LOW | scripts/check-ssr-alignment.js | 241 | : familySourceCorpus | COMMENT |
| LOW | scripts/rollback-release.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/components/LinkedCharts.tsx | 321 | ] | COMMENT |
| LOW | src/components/Tooltip/Tooltip.tsx | 621 | * Returns `false` to disable, or a `TooltipContentFn` compatible with | COMMENT |
| LOW | src/components/Tooltip/normalizeTooltipDatum.ts | 61 | typeof datum.data === "object" | COMMENT |
| LOW | src/components/stream/StreamXYFrame.hydration.test.tsx | 121 | }) | COMMENT |
| LOW | src/components/stream/StreamXYFrame.tsx | 281 | frameScheduler, | COMMENT |
| LOW | src/components/stream/StreamXYFrame.tsx | 481 | // Stabilize the config reference so inline-object / inline-array | COMMENT |
| LOW | src/components/stream/StreamXYFrame.tsx | 661 | // Without a hit, only multi-tooltip (hover-anywhere) mode has anything | COMMENT |
| LOW | src/components/stream/StreamXYFrame.tsx | 1181 | // Helpers live in `./annotationAccessorResolver` so | COMMENT |
| LOW | src/components/stream/useFrame.ts | 241 | // (coalescing). The scheduler releases the token immediately before an | COMMENT |
| LOW | src/components/stream/useFrame.ts | 261 | cancelRender: () => void | COMMENT |
| LOW | src/components/stream/restylePaint.frame.test.tsx | 1 | import "../../test-utils/registerBuiltInXYPlugins" | COMMENT |
| LOW | src/components/stream/sampleCurvePath.test.ts | 41 | ] | COMMENT |
| LOW | src/components/stream/NetworkCanvasHitTester.test.ts | 361 | // which depends on jsdom/canvas support. These tests verify the function | COMMENT |
| LOW | src/components/stream/geoPipelineHelpers.ts | 81 | ): Style { | COMMENT |
| LOW | src/components/stream/SceneToSVGOrdinal.tsx | 221 | case "glyph": { | COMMENT |
| LOW | src/components/stream/useOrdinalFrameHandle.ts | 41 | // order is preserved across replacements (otherwise categories | COMMENT |
| LOW | src/components/stream/NetworkPipelineStore.ts | 141 | COMMENT | |
| LOW | src/components/stream/NetworkPipelineStore.ts | 401 | } | COMMENT |
| LOW | src/components/stream/PipelineStore.stackOrder.test.ts | 141 | // Regression: areaScene used to enter the totals branch for any | COMMENT |
| LOW | src/components/stream/StreamNetworkFrame.test.tsx | 101 | // (a deliberate shape — see the useMemo in StreamNetworkFrame.tsx), | COMMENT |
| LOW | src/components/stream/SVGOverlay.jaggedBase.test.tsx | 241 | // the gate. But the baselines + grid lines must not. With | COMMENT |
| LOW | src/components/stream/ordinalTypes.ts | 321 | // • `"auto"` / `undefined` — preserve insertion order while streaming, | COMMENT |
| LOW | src/components/stream/StreamNetworkFrame.tsx | 381 | ) | COMMENT |
| LOW | src/components/stream/StreamNetworkFrame.tsx | 401 | // edgeStyle, orbitRevolution, labels, colors, realtime encoding, | COMMENT |
| LOW | src/components/stream/StreamNetworkFrame.tsx | 581 | canvasPaintDependencies: [chartType, adjustedWidth, adjustedHeight, background, backgroundGraphics, renderMode, sche | COMMENT |
| LOW | src/components/stream/StreamNetworkFrame.tsx | 641 | showParticles, | COMMENT |
| LOW | src/components/stream/StreamOrdinalFrame.test.tsx | 1301 | }) | COMMENT |
| LOW | src/components/stream/StreamXYFrame.test.tsx | 1221 | }) | COMMENT |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | docs/src/pages/examples/aestheticPolicyStudio.test.js | 44 | const hierarchy = organization.selection.selected.report.features.find( | CODE |
| CRITICAL | …omponents/recipes/atlas/DependencyForestChart.test.tsx | 66 | ctx.config.forest.atlas.source.nodes.map((node) => node.id).sort() | CODE |
| CRITICAL | …omponents/recipes/atlas/DependencyForestChart.test.tsx | 69 | ctx.config.forest.residual.originalEdgeIds.slice().sort() | CODE |
| CRITICAL | …omponents/recipes/atlas/DependencyForestChart.test.tsx | 108 | ).toEqual(ctx.config.forest.residual.originalEdgeIds.slice().sort()) | CODE |
| CRITICAL | src/components/recipes/atlas/flowCircuit.test.ts | 132 | const edges = first.circuit.atlas.source.edges.map((edge) => edge.id).sort() | CODE |
| CRITICAL | src/components/recipes/atlas/DependencyForestChart.tsx | 36 | props.forest.atlas.source.nodes.some((node) => node.id === id) | CODE |
| CRITICAL | src/__tests__/scenarios/chart-specs-round-trip.test.ts | 103 | events.items.properties.effects.items.oneOf.map( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | MIGRATION.md | 30 | ## Step 1: Update React | COMMENT |
| LOW | MIGRATION.md | 41 | ## Step 2: Install Semiotic v3 | COMMENT |
| LOW | MIGRATION.md | 47 | ## Step 3: Understand the Frame Changes | COMMENT |
| LOW | MIGRATION.md | 120 | ## Step 4: Check for Removed APIs | COMMENT |
| LOW | MIGRATION.md | 172 | ## Step 5: Adopt Chart HOCs (Recommended) | COMMENT |
| LOW | MIGRATION.md | 228 | ## Step 6: Use Streaming (Optional) | COMMENT |
| LOW | MIGRATION.md | 300 | ## Step 7: Use Granular Imports for Smaller Bundles | COMMENT |
| LOW | MIGRATION.md | 325 | ## Step 8: TypeScript (Optional) | COMMENT |
| LOW | MIGRATION.md | 351 | ## Step 9: Next.js / SSR Frameworks | COMMENT |
| LOW⚡ | benchmarks/unit/large-dataset-processing.bench.ts | 217 | // Step 1: Parse CSV | COMMENT |
| LOW⚡ | benchmarks/unit/large-dataset-processing.bench.ts | 220 | // Step 2: Transform to typed points | COMMENT |
| LOW | benchmarks/unit/large-dataset-processing.bench.ts | 232 | // Step 3: Calculate extents | COMMENT |
| LOW | benchmarks/unit/large-dataset-processing.bench.ts | 245 | // Step 4: Project points (accessor application) | COMMENT |
| LOW⚡ | benchmarks/unit/hierarchy-processing.bench.ts | 175 | // Step 1: Build hierarchy + layout | COMMENT |
| LOW⚡ | benchmarks/unit/hierarchy-processing.bench.ts | 181 | // Step 2: Flatten to nodes/edges | COMMENT |
| LOW⚡ | scripts/rollback-release.sh | 78 | # Step 1: Deprecate the bad version | COMMENT |
| LOW⚡ | scripts/rollback-release.sh | 84 | # Step 2: Point dist-tag to previous good version | COMMENT |
| LOW⚡ | scripts/rollback-release.sh | 90 | # Step 3: Verify | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 499 | // Step 1: Resolve projection | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 503 | // Step 2: Compute bounds and fit projection | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 509 | // Step 3: Build scales object | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 553 | // Step 5: Apply distance cartogram transform | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 558 | // Step 6: Apply realtime encodings | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 566 | // Step 7: Intro animation — synthesize center-origin prev scene on first render | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 580 | // Step 8: Data-change transition | COMMENT |
| LOW | src/components/stream/GeoPipelineStore.ts | 525 | // Step 4: Build scene nodes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | benchmarks/unit/large-dataset-processing.bench.ts | 217 | // Step 1: Parse CSV | COMMENT |
| LOW⚡ | benchmarks/unit/large-dataset-processing.bench.ts | 220 | // Step 2: Transform to typed points | COMMENT |
| LOW | benchmarks/unit/large-dataset-processing.bench.ts | 232 | // Step 3: Calculate extents | COMMENT |
| LOW | benchmarks/unit/large-dataset-processing.bench.ts | 245 | // Step 4: Project points (accessor application) | COMMENT |
| LOW⚡ | benchmarks/unit/hierarchy-processing.bench.ts | 175 | // Step 1: Build hierarchy + layout | COMMENT |
| LOW⚡ | benchmarks/unit/hierarchy-processing.bench.ts | 181 | // Step 2: Flatten to nodes/edges | COMMENT |
| LOW⚡ | scripts/rollback-release.sh | 78 | # Step 1: Deprecate the bad version | COMMENT |
| LOW⚡ | scripts/rollback-release.sh | 84 | # Step 2: Point dist-tag to previous good version | COMMENT |
| LOW⚡ | scripts/rollback-release.sh | 90 | # Step 3: Verify | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 499 | // Step 1: Resolve projection | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 503 | // Step 2: Compute bounds and fit projection | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 509 | // Step 3: Build scales object | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 553 | // Step 5: Apply distance cartogram transform | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 558 | // Step 6: Apply realtime encodings | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 566 | // Step 7: Intro animation — synthesize center-origin prev scene on first render | COMMENT |
| LOW⚡ | src/components/stream/GeoPipelineStore.ts | 580 | // Step 8: Data-change transition | COMMENT |
| LOW | src/components/stream/GeoPipelineStore.ts | 525 | // Step 4: Build scene nodes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/node.js.yml | 436 | # authored examples rather than the packaged visual harness. Keep it in an | COMMENT |
| MEDIUM | .github/workflows/release.yml | 144 | # Recovery must use the selected workflow's fixed validation harness, | COMMENT |
| MEDIUM | src/components/charts/shared/adaptiveTimeTicks.ts | 90 | // Use median gap to be robust against one-off outliers | COMMENT |
| MEDIUM | …omponents/charts/shared/leastSquaresRegression.test.ts | 93 | // For x = -2,-1,0,1,2, the quadratic design has leverage 17/35 at | COMMENT |
| MEDIUM | src/components/charts/shared/formatUtils.test.ts | 129 | // The local getters in the expected value make this robust in every CI TZ, | COMMENT |
| MEDIUM | src/components/charts/shared/leastSquaresRegression.ts | 125 | // Solve R-transpose * v = [1, t, t², ...]; ||v||² is the leverage. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/plane-day/verify-source.ts | 42 | print(json.dumps({'editionId':snapshot['editionId'],'verifiedAt':datetime.datetime.now(datetime.timezone.utc).isoformat( | CODE |
| HIGH | scripts/plane-day/extract-source.ts | 33 | print(json.dumps({'archiveMember':name,'archiveRows':len(lines)-1,'carrierRows':len(kept),'sourceRecordLines':row_number | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/src/IndexPages.jsx | 314 | in real time with auto-generated code. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …cs/src/pages/examples/last-scarcity/FreedTimeWheel.jsx | 156 | { id: "sleep", label: "Sleep", hours: 8.5, color: "#aeb9ae", source: "scaffold" }, | CODE |
| MEDIUM | src/components/charts/custom/NetworkCustomChart.tsx | 185 | // Selection / linked-hover wiring — the custom-chart scaffold is the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/add-legend-to-hocs.sh | 20 | # Check if createLegend import already exists | COMMENT |
| LOW | scripts/add-legend-to-hocs.sh | 27 | # Check if showLegend prop already exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/src/pages/playground/DonutChartPlayground.jsx | 36 | { category: "Acme Corp", amount: 34 }, | CODE |
| LOW | docs/src/pages/playground/DonutChartPlayground.jsx | 64 | { category: "Acme Corp", amount: 34 }, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/rollback-release.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/network-atlas/independent-check.py | 7 | CODE |