SigNoz is an open-source, OpenTelemetry-native observability platform for your team and their AI agents. Get logs, metrics, and traces in one tool with features like APM, distributed tracing, log management, infra monitoring, etc. Combined with SigNoz MCP and a native AI teammate (in SigNoz Cloud) it helps you build more resilient apps.
This report summarizes scanner evidence for SigNoz/signoz, a TypeScript project with 32,489 GitHub stars. SynthScan examined 1,357,829 lines of code across 7960 source files, recording 2101 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 2.5 (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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 1573 finding(s).
Are imports declared and package/API names verified? 51 finding(s).
Are wrappers, guards, and repeated structures necessary? 1750 finding(s).
Which changes need focused human review? 2101 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 2101 distinct pattern matches across 21 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 | …e/Drilldown/__tests__/useBaseDrilldownNavigate.test.ts | 27 | // ─── Fixtures ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …e/Drilldown/__tests__/useBaseDrilldownNavigate.test.ts | 74 | // ─── getRoute ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …e/Drilldown/__tests__/useBaseDrilldownNavigate.test.ts | 90 | // ─── buildDrilldownUrl ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …e/Drilldown/__tests__/useBaseDrilldownNavigate.test.ts | 182 | // ─── useBaseDrilldownNavigate ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …nd/src/container/MetricsExplorer/Explorer/Explorer.tsx | 205 | // ─── AI Assistant page actions (only when license feature is on) ─────────── | COMMENT |
| MEDIUM | …nd/src/container/MetricsExplorer/Explorer/Explorer.tsx | 238 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/WidgetCard/utils.ts | 43 | // ── EXPAND ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/WidgetCard/utils.ts | 70 | // ── COLLAPSE ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/container/WidgetCard/__tests__/rowCollapse.test.ts | 12 | // ─── fixtures ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/container/WidgetCard/__tests__/rowCollapse.test.ts | 45 | // ─── frozen-input guard (regression for zustand/immer read-only bug) ────────── | COMMENT |
| MEDIUM | …src/container/WidgetCard/__tests__/rowCollapse.test.ts | 80 | // ─── collapse behaviour ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/container/WidgetCard/__tests__/rowCollapse.test.ts | 116 | // ─── expand behaviour ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …src/container/WidgetCard/__tests__/rowCollapse.test.ts | 155 | // ─── y-offset adjustment ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/AIAssistant/getAutoContexts.ts | 32 | // ── Dashboards ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/AIAssistant/getAutoContexts.ts | 103 | // ── Alerts ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/AIAssistant/getAutoContexts.ts | 190 | // ── Services ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/AIAssistant/getAutoContexts.ts | 227 | // ── Logs ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/AIAssistant/getAutoContexts.ts | 250 | // ── Traces ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/container/AIAssistant/getAutoContexts.ts | 288 | // ── Metrics ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …iner/AIAssistant/AIAssistantPanel/AIAssistantPanel.tsx | 75 | // ── Resize logic ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/src/container/AIAssistant/components/blocks/index.ts | 17 | // ─── Register built-in block types ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/src/container/AIAssistant/components/blocks/index.ts | 24 | // ─── Public exports ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ssistant/components/blocks/ActionBlock/ActionBlock.tsx | 63 | // ── Shared execute logic ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ssistant/components/blocks/ActionBlock/ActionBlock.tsx | 97 | // ── Auto-apply: fire immediately on mount if the action opts in ────────────── | COMMENT |
| MEDIUM | …ssistant/components/blocks/ActionBlock/ActionBlock.tsx | 125 | // ── Terminal states ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ssistant/components/blocks/ActionBlock/ActionBlock.tsx | 154 | // ── Loading (autoApply in progress) ───────────────────────────────────────── | COMMENT |
| MEDIUM | …ssistant/components/blocks/ActionBlock/ActionBlock.tsx | 165 | // ── Pending: manual confirmation card ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ntainer/AIAssistant/components/ChatInput/ChatInput.tsx | 531 | // ── Voice input ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ntainer/AIAssistant/components/ChatInput/ChatInput.tsx | 669 | // ── Push-to-talk (Cmd/Ctrl + Shift + Space) ──────────────────────────────── | COMMENT |
| MEDIUM | …iner/AIAssistant/AIAssistantModal/AIAssistantModal.tsx | 87 | // ── Handlers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rc/container/AIAssistant/hooks/useSpeechRecognition.ts | 3 | // ── Web Speech API types (not yet in lib.dom.d.ts) ──────────────────────────── | COMMENT |
| MEDIUM | …rc/container/AIAssistant/hooks/useSpeechRecognition.ts | 41 | // ── Vendor-prefix shim for Safari / older browsers ──────────────────────────── | COMMENT |
| MEDIUM | …tainer/LLMObservability/Settings/ModelPricing/utils.ts | 30 | // ─── Input helpers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tainer/LLMObservability/Settings/ModelPricing/utils.ts | 40 | // ─── Display helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tainer/LLMObservability/Settings/ModelPricing/utils.ts | 80 | // ─── Drawer draft <-> API helpers ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/src/container/LLMObservability/Explorer/Explorer.tsx | 128 | // ─── AI Assistant page actions (only when license feature is on) ─────────── | COMMENT |
| MEDIUM | …d/src/container/LLMObservability/Explorer/Explorer.tsx | 165 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 92 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 99 | // ── guard ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 112 | // ── source panel ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 175 | // ── receiver panel ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 206 | // ── exact groupBy match ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 342 | // ── partial groupBy overlap ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 434 | // ── union across queries in groupByPerQuery ─────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 472 | // ── no overlap (Filtered mode default) ──────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 523 | // ── filterMode: All ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lugins/TooltipPlugin/__tests__/syncDisplayHook.test.ts | 570 | // ── caching ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ctions/ThresholdsSection/ThresholdsSection.module.scss | 13 | // ── View mode: compact summary row ────────────────────────────────────────── | COMMENT |
| MEDIUM | …ctions/ThresholdsSection/ThresholdsSection.module.scss | 65 | // ── Edit mode: labelled form ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ctions/ThresholdsSection/ThresholdsSection.module.scss | 123 | // ── Shared ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/pages/LogsExplorer/index.tsx | 128 | // ─── AI Assistant page actions (only when license feature is on) ─────────── | COMMENT |
| MEDIUM | frontend/src/pages/LogsExplorer/index.tsx | 165 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontend/src/pages/TracesExplorer/index.tsx | 142 | // ─── AI Assistant page actions (only when license feature is on) ─────────── | COMMENT |
| MEDIUM | frontend/src/pages/TracesExplorer/index.tsx | 179 | // ─────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tion/tests/alertmanager/04_notification_channels_v2.py | 629 | # ── stage 1: create one channel per kind, oldest first ─────────────────── | COMMENT |
| MEDIUM | …tion/tests/alertmanager/04_notification_channels_v2.py | 646 | # ── stage 2: list ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tion/tests/alertmanager/04_notification_channels_v2.py | 666 | # ── stage 3: update ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tion/tests/alertmanager/04_notification_channels_v2.py | 694 | # ── stage 4: search by display name ─────────────────────────────────────── | COMMENT |
| MEDIUM | …tion/tests/alertmanager/04_notification_channels_v2.py | 707 | # ── stage 5: filter by kind ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tion/tests/alertmanager/04_notification_channels_v2.py | 722 | # ── stage 6: page ───────────────────────────────────────────────────────── | COMMENT |
| 364 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/types/api/alerts/convert.ts | 94 | export function toPostableRuleDTOFromAlertDef( | CODE |
| LOW | …ders/preferences/context/PreferenceContextProvider.tsx | 21 | export function PreferenceContextProvider({ | CODE |
| LOW | …roviders/Dashboard/store/dynamicVariableSuggestions.ts | 21 | export function setDynamicVariableSuggestions( | CODE |
| LOW | frontend/src/AppRoutes/sentryFilters.ts | 43 | export function isExternalIntegrationError(event: ErrorEvent): boolean { | CODE |
| LOW | frontend/src/tests/nuqs-helpers.ts | 35 | export function getCurrentNuqsQueryString(): string { | CODE |
| LOW | frontend/src/tests/nuqs-helpers.ts | 39 | export function getCurrentNuqsSearchParams(): URLSearchParams { | CODE |
| LOW | frontend/src/utils/buildExplorerNavigationUrl.ts | 8 | export function buildExplorerNavigationUrl( | CODE |
| LOW | frontend/src/utils/compositeQueryToQueryEnvelope.ts | 40 | export function compositeQueryToQueryEnvelope( | CODE |
| LOW | frontend/src/utils/aggregationConverter.ts | 18 | export function convertAggregationsToBaseAutocompleteData( | CODE |
| LOW | frontend/src/utils/aggregationConverter.ts | 86 | export function getAggregationOptionsForOrderBy(query: { | CODE |
| LOW | frontend/src/utils/aggregationConverter.ts | 107 | export function getParsedAggregationOptionsForOrderBy(query: { | CODE |
| LOW | frontend/src/utils/metricsTimeStorageUtils.ts | 12 | export function persistTimeDurationForRoute( | CODE |
| LOW | frontend/src/utils/queryContextUtils.ts | 124 | export function getCurrentValueIndexAtCursor( | CODE |
| LOW | frontend/src/utils/queryContextUtils.ts | 154 | function determineContextBoundaries( | CODE |
| LOW | frontend/src/utils/sanitizeOrderBy.ts | 8 | export function sanitizeOrderByForExplorer( | CODE |
| LOW | frontend/src/utils/getUnstableCurrentSearchParams.ts | 28 | export function getUnstableCurrentSearchParams(): URLSearchParams { | CODE |
| LOW | …RowDismissibleCallout/LicenseRowDismissibleCallout.tsx | 15 | function LicenseRowDismissibleCallout(): JSX.Element | null { | CODE |
| LOW | frontend/src/container/ExplorerActions/utils.ts | 34 | export function getExplorerActionEventPayload({ | CODE |
| LOW | …tionSettings/AuthDomain/CreateEdit/CreateEdit.utils.ts | 50 | export function convertGroupMappingsToRecord( | CODE |
| LOW | …tionSettings/AuthDomain/CreateEdit/CreateEdit.utils.ts | 70 | export function convertGroupMappingsToList( | CODE |
| LOW | …tionSettings/AuthDomain/CreateEdit/CreateEdit.utils.ts | 86 | export function convertDomainMappingsToRecord( | CODE |
| LOW | …tionSettings/AuthDomain/CreateEdit/CreateEdit.utils.ts | 111 | export function convertDomainMappingsToList( | CODE |
| LOW | …gs/AuthDomain/CreateEdit/Providers/AuthnGoogleAuth.tsx | 23 | function ConfigureGoogleAuthAuthnProvider({ | CODE |
| LOW | …Settings/AuthDomain/CreateEdit/Providers/AuthnSAML.tsx | 16 | function ConfigureSAMLAuthnProvider({ | CODE |
| LOW | …Settings/AuthDomain/CreateEdit/Providers/AuthnOIDC.tsx | 16 | function ConfigureOIDCAuthnProvider({ | CODE |
| LOW | …/MeterExplorer/Explorer/useTimeSeriesTimeManagement.ts | 29 | export function useTimeSeriesTimeManagement({ | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 84 | export function getEvaluationWindowStateFromAlertDef( | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 89 | function getRollingWindowTimeframe(): string { | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 101 | function getCumulativeWindowTimeframe(): string { | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 120 | function getCumulativeWindowStartingAt(): EvaluationWindowState['startingAt'] { | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 183 | export function getNotificationSettingsStateFromAlertDef( | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 217 | export function getAdvancedOptionsStateFromAlertDef( | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 251 | export function getThresholdStateFromAlertDef( | CODE |
| LOW | frontend/src/container/CreateAlertV2/utils.tsx | 296 | export function getCreateAlertLocalStateFromAlertDef( | CODE |
| LOW | frontend/src/container/CreateAlertV2/Footer/utils.tsx | 67 | export function getNotificationSettingsProps( | CODE |
| LOW | frontend/src/container/CreateAlertV2/Footer/utils.tsx | 103 | export function getEnforceMinimumDatapointsProps( | CODE |
| LOW | frontend/src/container/CreateAlertV2/Footer/utils.tsx | 217 | export function buildCreateThresholdAlertRulePayload( | CODE |
| LOW | frontend/src/container/CreateAlertV2/Footer/utils.tsx | 302 | export function buildCreateAnomalyAlertRulePayload( | CODE |
| LOW | frontend/src/container/CreateAlertV2/Footer/utils.tsx | 335 | export function buildCreateAlertRulePayload( | CODE |
| LOW | …tainer/CreateAlertV2/context/resolveUrlAlertPrefill.ts | 41 | function parseEvaluationWindowPreset( | CODE |
| LOW | frontend/src/container/CreateAlertV2/context/utils.tsx | 102 | export function getInitialAlertTypeFromURL( | CODE |
| LOW | …d/src/container/CreateAlertV2/AlertCondition/utils.tsx | 73 | export function getCategorySelectOptionByName( | CODE |
| LOW | …d/src/container/CreateAlertV2/AlertCondition/utils.tsx | 426 | export function NotificationChannelsNotFoundContent({ | CODE |
| LOW | …c/container/CreateAlertV2/EvaluationSettings/utils.tsx | 90 | export function buildAlertScheduleFromRRule( | CODE |
| LOW | …c/container/CreateAlertV2/EvaluationSettings/utils.tsx | 144 | function generateMonthlyOccurrences( | CODE |
| LOW | …c/container/CreateAlertV2/EvaluationSettings/utils.tsx | 181 | function generateWeeklyOccurrences( | CODE |
| LOW | …c/container/CreateAlertV2/EvaluationSettings/utils.tsx | 242 | export function buildAlertScheduleFromCustomSchedule( | CODE |
| LOW | …end/src/container/CreateAlertV2/QuerySection/utils.tsx | 8 | export function buildAlertDefForChartPreview({ | CODE |
| LOW | …teAlertV2/QuerySection/__tests__/ChartPreview.test.tsx | 32 | function MockChartPreviewComponent(props: any): JSX.Element { | CODE |
| LOW | …teAlertV2/QuerySection/__tests__/QuerySection.test.tsx | 59 | function MockQuerySectionComponent({ | CODE |
| LOW | …filters/MetricNameSelector/MetricNameSelector.test.tsx | 547 | function StatefulMetricQueryHarness({ | CODE |
| LOW | …QueryBuilderSearchV2/ExampleQueriesRendererForLogs.tsx | 3 | function ExampleQueriesRendererForLogs({ | CODE |
| LOW | …ner/QueryBuilder/filters/QueryBuilderSearchV2/utils.ts | 50 | export function isExistsNotExistsOperator(value: string): boolean { | CODE |
| LOW | …ner/QueryBuilder/filters/QueryBuilderSearchV2/utils.ts | 155 | export function replaceStringWithMaxLength( | CODE |
| LOW | …ner/QueryBuilder/filters/QueryBuilderSearchV2/utils.ts | 198 | export function convertExampleQueriesToOptions( | CODE |
| LOW | …rs/QueryBuilderSearchV2/QueryBuilderSearchDropdown.tsx | 31 | export default function QueryBuilderSearchDropdown( | CODE |
| LOW | …ntainer/PlannedDowntime/PlannedDowntimeActionsMenu.tsx | 15 | function PlannedDowntimeActionsMenu({ | CODE |
| LOW | frontend/src/container/PlannedDowntime/table.config.tsx | 34 | export function getPlannedDowntimeColumns( | CODE |
| LOW | …ontainer/PlannedDowntime/PlannedDowntimeEmptyState.tsx | 15 | function PlannedDowntimeEmptyState({ | CODE |
| LOW | …ntainer/PlannedDowntime/PlannedDowntimeDeleteModal.tsx | 16 | export function PlannedDowntimeDeleteModal( | CODE |
| 1213 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …sts/integration/tests/inframonitoring/04_namespaces.py | 0 | a never-ingested metric surfaces a non-blocking warning (200 + data), not a hard error: the endpoint returns the entity | STRING |
| HIGH | tests/integration/tests/inframonitoring/05_clusters.py | 0 | a never-ingested metric surfaces a non-blocking warning (200 + data), not a hard error: the endpoint returns the entity | STRING |
| HIGH | tests/integration/tests/inframonitoring/03_nodes.py | 0 | a never-ingested metric surfaces a non-blocking warning (200 + data), not a hard error: the endpoint returns the entity | STRING |
| HIGH | …ts/integration/tests/inframonitoring/07_deployments.py | 0 | a never-ingested metric surfaces a non-blocking warning (200 + data), not a hard error: the endpoint returns the entity | STRING |
| HIGH | tests/integration/tests/inframonitoring/09_jobs.py | 0 | a never-ingested metric surfaces a non-blocking warning (200 + data), not a hard error: the endpoint returns the entity | STRING |
| HIGH | tests/integration/tests/inframonitoring/02_pods.py | 0 | a never-ingested metric surfaces a non-blocking warning (200 + data), not a hard error: the endpoint returns the entity | STRING |
| HIGH | …sts/integration/tests/inframonitoring/04_namespaces.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | …s/integration/tests/inframonitoring/08_statefulsets.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | tests/integration/tests/inframonitoring/01_hosts.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | tests/integration/tests/inframonitoring/05_clusters.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | tests/integration/tests/inframonitoring/03_nodes.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | tests/integration/tests/inframonitoring/06_volumes.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | …ts/integration/tests/inframonitoring/07_deployments.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | tests/integration/tests/inframonitoring/09_jobs.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | tests/integration/tests/inframonitoring/02_pods.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | …sts/integration/tests/inframonitoring/10_daemonsets.py | 0 | malformed filter grammar (trailing operator, unclosed paren) returns 400 invalid_input with structured errors. | STRING |
| HIGH | …sts/integration/tests/inframonitoring/04_namespaces.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | …s/integration/tests/inframonitoring/08_statefulsets.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | tests/integration/tests/inframonitoring/01_hosts.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | tests/integration/tests/inframonitoring/05_clusters.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | tests/integration/tests/inframonitoring/03_nodes.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | tests/integration/tests/inframonitoring/06_volumes.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | …ts/integration/tests/inframonitoring/07_deployments.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | tests/integration/tests/inframonitoring/09_jobs.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | tests/integration/tests/inframonitoring/02_pods.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | …sts/integration/tests/inframonitoring/10_daemonsets.py | 0 | pagination: per-page len matches min(limit, total-offset), total invariant, pages cover the full set with no overlap. th | STRING |
| HIGH | …sts/integration/tests/inframonitoring/04_namespaces.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | tests/integration/tests/inframonitoring/05_clusters.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | tests/integration/tests/inframonitoring/03_nodes.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | tests/integration/tests/inframonitoring/06_volumes.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | tests/integration/tests/inframonitoring/09_jobs.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | tests/integration/tests/inframonitoring/02_pods.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | …sts/integration/tests/inframonitoring/10_daemonsets.py | 0 | every orderby column x direction: total/len stay k (invariant under sort) and records come back sorted by the requested | STRING |
| HIGH | …/integration/tests/cloudintegrations/01_credentials.py | 0 | apply a license so that subsequent cloud integration calls succeed. | STRING |
| HIGH | …sts/integration/tests/cloudintegrations/04_accounts.py | 0 | apply a license so that subsequent cloud integration calls succeed. | STRING |
| HIGH | …tegration/tests/cloudintegrations/02_create_account.py | 0 | apply a license so that subsequent cloud integration calls succeed. | STRING |
| HIGH | …sts/integration/tests/cloudintegrations/05_services.py | 0 | apply a license so that subsequent cloud integration calls succeed. | STRING |
| HIGH | …tegration/tests/cloudintegrations/03_agent_check_in.py | 0 | apply a license so that subsequent cloud integration calls succeed. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/pnpm-workspace.yaml | 1 | blockExoticSubdeps: true | COMMENT |
| LOW | frontend/pnpm-workspace.yaml | 21 | # via: babel-plugin-istanbul > test-exclude@6 > minimatch@3.1.5 (^1.1.7); also glob@7 | COMMENT |
| LOW | frontend/pnpm-workspace.yaml | 41 | # (latest 13.1.0) and monaco-editor (latest 0.55.1) still pin vulnerable versions | COMMENT |
| LOW | frontend/pnpm-workspace.yaml | 61 | # remove: blocked, both consumers cap js-yaml at ^4 and only 4.3.2 carries the fix | COMMENT |
| LOW | frontend/pnpm-workspace.yaml | 81 | react-router@>=6.7.0 <6.30.6: '>=6.30.6 <7' | COMMENT |
| LOW | frontend/.storybook/test-runner.ts | 1 | import { getStoryContext } from '@storybook/test-runner'; | COMMENT |
| LOW | frontend/.storybook/preview-head.html | 41 | // trial countdowns all derive from `now`, and Chromatic does not freeze the | COMMENT |
| LOW | frontend/src/auto-import-registry.d.ts | 1 | // ------------------------------------------------------------------------- | COMMENT |
| LOW | frontend/src/tests/nuqs-helpers.ts | 1 | // Helpers for tests that drive components built with `nuqs`. | COMMENT |
| LOW | frontend/src/utils/queryContextUtils.ts | 601 | const contextBoundaries = determineContextBoundaries( | COMMENT |
| LOW | …teAlertV2/NotificationSettings/NotificationMessage.tsx | 21 | // { variable: '{{unit}}', description: 'Unit of measurement for the metric' }, | COMMENT |
| LOW | …lder/filters/MetricNameSelector/MetricNameSelector.tsx | 41 | metricName: string, | COMMENT |
| LOW | …lder/filters/MetricNameSelector/MetricNameSelector.tsx | 61 | // the dropdown. If the name differs from the current metric, it's resolved | COMMENT |
| LOW | …/src/components/QueryBuilderV2/__tests__/utils.test.ts | 1021 | const expression = "service.name = 'api-gateway'"; | COMMENT |
| LOW | …components/MarkdownContent/MarkdownContent.module.scss | 1 | @use '../../../../../../../../styles/scrollbar' as *; | COMMENT |
| LOW | …tend/src/pages/DashboardsListPage/utils/filterQuery.ts | 1 | // Pure, side-effect-free helpers over the backend list-filter DSL string | COMMENT |
| LOW | …dsListPage/components/NewDashboardModal/importUtils.ts | 1 | import { | COMMENT |
| LOW | …ModulePage/LiveLogs/stories/LiveLogs.stories.mocks.tsx | 101 | // is open for an instant. The chart's other source is the payload the | COMMENT |
| LOW | frontend/src/pages/Services/Metrics.test.tsx | 41 | COMMENT | |
| LOW | frontend/src/pages/Services/Metrics.test.tsx | 61 | // /6d4af7f0-4884-4a37-abd4-6bdbee29fa04/i, | COMMENT |
| LOW | …s/TraceDetailsV3/SpanDetailsPanel/SpanDetailsPanel.tsx | 141 | // key: 'copy-value', | COMMENT |
| LOW | …s/TraceDetailsV3/SpanDetailsPanel/SpanDetailsPanel.tsx | 261 | // Object.entries(selectedSpan.attributes || {}).forEach(([k, v]) => { | COMMENT |
| LOW | …/TraceFlamegraph/__tests__/computeVisualLayout.test.ts | 421 | // a, b → row 1 (no overlap, share row) | COMMENT |
| LOW | ee/anomaly/params.go | 41 | } | COMMENT |
| LOW | ee/anomaly/params.go | 61 | PastPeriodQuery qbtypes.QueryRangeRequest | COMMENT |
| LOW | ee/sqlschema/postgressqlschema/provider.go | 221 | // generate_series over indnkeyatts (count of key columns, excluding non-key | COMMENT |
| LOW | ee/query-service/anomaly/params.go | 41 | Seasonality Seasonality | COMMENT |
| LOW | ee/query-service/anomaly/params.go | 61 | CurrentPeriodQuery *v3.QueryRangeParamsV3 | COMMENT |
| LOW | tests/integration/tests/dashboard/03_v2_dashboard.py | 861 | assert {d["spec"]["display"]["name"] for d in response.json()["data"]["dashboards"]} == expected, query | COMMENT |
| LOW | tests/integration/tests/dashboard/03_v2_dashboard.py | 1321 | ) | COMMENT |
| LOW | …on/tests/querier_json_body/01_logs_json_body_new_qb.py | 21 | # ============================================================================ | COMMENT |
| LOW | …on/tests/querier_json_body/01_logs_json_body_new_qb.py | 1341 | ] | COMMENT |
| LOW | …egration/tests/querier_json_body/02_non_body_fields.py | 21 | # | COMMENT |
| LOW | …s/integration/tests/queriertraces/06_trace_operator.py | 41 | # T1 checkout-svc [SERVER] POST /checkout (5s) ← structural root, http.method=POST | COMMENT |
| LOW | …s/integration/tests/queriertraces/06_trace_operator.py | 61 | # A || B A=http.method EXISTS B=messaging.system='kafka' T1✓ T2✓ T3✓ T4✓ | COMMENT |
| LOW | tests/integration/tests/queriertraces/01_list.py | 1301 | # A scope attribute whose own name carries a `scope.` prefix. `scope.prefixed` | COMMENT |
| LOW | …integration/tests/queriertraces/10_filter_operators.py | 21 | # No clean/corrupt factor: this file targets operator/parser resolution, which is | COMMENT |
| LOW | …s/integration/tests/ruler/01_basic_alert_conditions.py | 541 | } | COMMENT |
| LOW | …s/integration/tests/ruler/01_basic_alert_conditions.py | 561 | # wait_time_seconds=90, | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 21 | "query,result", | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 41 | # x[2].span_id, | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 61 | # # Logs stmt builder by default adds timestamp field to select fields and ignores user input timestamp fiel | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 81 | # BuilderQuery( | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 101 | # TelemetryFieldKey("attribute.timestamp"), | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 121 | # TelemetryFieldKey("attribute.timestamp"), | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 141 | # ], | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 461 | COMMENT | |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 481 | # # Order: no explicit order → ClickHouse internal storage order | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 501 | # # Values: x[0].trace_id="1", x[1].trace_id="", x[2].trace_id="", x[3].trace_id="" | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 521 | # # Justification (expected values and row order): | COMMENT |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 541 | # # Values: x[0]="", x[1]="2", x[2]="", x[3]="" (only x[1] has attribute.trace_id set) | COMMENT |
| LOW | …egration/tests/querierlogs/11_aggregation_functions.py | 21 | # queriertraces/02_aggregation.py::test_traces_aggregate_functions. Logs querier | COMMENT |
| LOW | …gration/tests/querierlogs/13_unknown_key_collisions.py | 21 | COMMENT | |
| LOW | tests/integration/tests/querierlogs/04_formula.py | 61 | resources={"service.name": name}, | COMMENT |
| LOW | tests/e2e/playwright.config.ts | 1 | import { defineConfig, devices } from '@playwright/test'; | COMMENT |
| LOW | tests/e2e/playwright.config.ts | 41 | // CI can archive the whole dir with `tar czf artifacts.tgz tests/e2e/artifacts`. | COMMENT |
| LOW | tests/e2e/pnpm-workspace.yaml | 1 | # Security floors for vulnerable transitive deps. Where possible, targets are | COMMENT |
| LOW | tests/e2e/tests/alerts/create/edge.spec.ts | 101 | // | COMMENT |
| LOW | tests/e2e/helpers/common.ts | 21 | } | COMMENT |
| LOW | tests/e2e/helpers/query-range-mock.ts | 1 | import type { Page, Route } from '@playwright/test'; | COMMENT |
| 111 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | frontend/src/container/LogsExplorerContext/utils.ts | 85 | // Step 1: Always include service.name and environment attributes | COMMENT |
| LOW⚡ | frontend/src/container/LogsExplorerContext/utils.ts | 88 | // Step 2: Find first category with attributes and pick first available | COMMENT |
| LOW⚡ | frontend/src/container/LogsExplorerContext/utils.ts | 93 | // Step 3: Fallback to current regex logic (only if no priority items found) | COMMENT |
| LOW⚡ | …/OnboardingV2Container/AddDataSource/AddDataSource.tsx | 278 | // Step 1: Parse the URL | COMMENT |
| LOW⚡ | …/OnboardingV2Container/AddDataSource/AddDataSource.tsx | 283 | // Step 2: Update or add the 'source' parameter | COMMENT |
| LOW | …/OnboardingV2Container/AddDataSource/AddDataSource.tsx | 304 | // Step 3: Return the updated URL as a string | COMMENT |
| LOW | …end/src/hooks/integration/gcp/useManualAccountSetup.ts | 45 | // Step 1: create the integration account. | COMMENT |
| LOW | …end/src/hooks/integration/gcp/useManualAccountSetup.ts | 63 | // Step 2: mimic the agent by checking in from the frontend (manual flow). | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 49 | * ### Step 1: Get Store State | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 62 | * ### Step 2: Build Query Key | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 82 | * ### Step 3: Fetch Data | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 100 | * ### Step 4: Add Refresh Button (Optional) | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 43 | # Step 1: invite and delete the first user | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 64 | # Step 2: re-invite and delete the same email (second deleted row) | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 86 | # Step 3: assert the DB has exactly two deleted rows for this email | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 107 | # Step 4: the unique index must still block a duplicate non-deleted row. | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 137 | # Step 5: a third deleted row must be accepted (excluded from partial index) | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 150 | # Step 6: confirm three deleted rows now exist | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 23 | ## Step 1: Register the kind | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 35 | ## Step 2: Register the resource | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 45 | ## Step 3: Grant permissions to managed roles | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 57 | ## Step 4: Wire the route | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 78 | ## Step 5: Backfill existing organizations (only if needed) | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 89 | ## Step 6: Update the golden testdata and regenerate CI-checked artifacts | COMMENT |
| LOW | .claude/skills/authz-configurator/SKILL.md | 111 | ## Step 7: Write integration tests | COMMENT |
| LOW⚡ | pkg/queryparser/queryfilterextractor/clickhouse.go | 442 | // Step 1: Search in CTE and Joins, this will take us to very end of the SubQueries and CTE | COMMENT |
| LOW⚡ | pkg/queryparser/queryfilterextractor/clickhouse.go | 451 | // Step 2: Once we're sure there are no SubQueries and CTE we just find all the selectItem | COMMENT |
| LOW | pkg/types/dashboardtypes/perses_dashboard_test.go | 1968 | // Step 1: Unmarshal + validate + normalize (what the API handler does). | COMMENT |
| LOW⚡ | pkg/types/dashboardtypes/perses_dashboard_test.go | 1984 | // Step 2: Marshal to JSON (simulates writing to DB). | COMMENT |
| LOW⚡ | pkg/types/dashboardtypes/perses_dashboard_test.go | 1988 | // Step 3: Unmarshal from JSON (simulates reading from DB). | COMMENT |
| LOW | pkg/types/dashboardtypes/perses_dashboard_test.go | 2004 | // Step 4: Marshal again (simulates API response) and verify defaults. | COMMENT |
| LOW | pkg/types/telemetrytypes/field.go | 151 | // Step 1: Parse data type from the right (after the last ":") if not already specified | COMMENT |
| LOW | pkg/types/telemetrytypes/field.go | 162 | // Step 2: Parse field context from the left if not already specified | COMMENT |
| LOW | pkg/modules/tracedetail/impltracedetail/module.go | 171 | // Step 1: minimal fetch → build full tree → select visible window | COMMENT |
| LOW | pkg/modules/tracedetail/impltracedetail/module.go | 193 | // Step 2: full fetch for the selected window only | COMMENT |
| LOW | pkg/sqlmigration/081_migrate_metaresources_tuples.go | 68 | // Step 1: Delete all tuples with the old "metaresources" object_type. | COMMENT |
| LOW | pkg/sqlmigration/081_migrate_metaresources_tuples.go | 83 | // Step 2: Insert replacement tuples. | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 74 | // Step 1: Drop the wrong index on (id, provider, org_id) | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 83 | // Step 2: Normalize empty-string account_id to NULL | COMMENT |
| LOW | pkg/sqlmigration/069_update_cloud_integration_index.go | 95 | // Step 3: Fetch all active rows with non-null account_id, ordered for grouping | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 118 | // Step 4: Merge config from losers into keeper | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 123 | // Step 5: Reassign non-conflicting cloud_integration_service rows to keeper | COMMENT |
| LOW | pkg/sqlmigration/069_update_cloud_integration_index.go | 144 | // Step 6: Soft-delete all loser rows | COMMENT |
| LOW | pkg/sqlmigration/069_update_cloud_integration_index.go | 157 | // Step 7: Create the correct partial unique index on (account_id, provider, org_id) WHERE removed_at IS NULL | COMMENT |
| LOW⚡ | pkg/query-service/app/clickhouseReader/reader.go | 706 | // Step 1: Get top operations for the given service | COMMENT |
| LOW⚡ | pkg/query-service/app/clickhouseReader/reader.go | 715 | // Step 2: Get entry point operation names for the given service using GetTopLevelOperations | COMMENT |
| LOW | pkg/query-service/app/clickhouseReader/reader.go | 748 | // Step 3: Filter topOps based on entryPointSet (same as original) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/integration/tests/passwordauthn/04_password.py | 66 | # Create a reset password token via v2 PUT | COMMENT |
| MEDIUM | tests/integration/tests/passwordauthn/04_password.py | 218 | # Create a user specifically for testing forgot password | COMMENT |
| MEDIUM | tests/integration/tests/ttl/01_ttl.py | 910 | # Create a list of many TTL conditions to test performance and limits | COMMENT |
| MEDIUM | …s/integration/tests/logspipelines/01_logs_pipelines.py | 113 | # Create a pipeline first | COMMENT |
| MEDIUM | …s/integration/tests/logspipelines/01_logs_pipelines.py | 583 | # Create a pipeline first | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/03_oidc.py | 42 | # Create a saml client in the idp. | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/03_oidc.py | 48 | # Create a auth domain in signoz. | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/03_oidc.py | 88 | # Create a user in the idp. | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 36 | # Create a domain with google auth config | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 56 | # Create a domain with saml config | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 105 | # Create a domain with kind saml and a spec for oidc, this should fail because the spec does not match the kind | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 126 | # Create a domain with a kind but no spec | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 142 | # Create a domain with invalid name | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 163 | # Create a domain with no name | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/01_domain.py | 183 | # Create a domain with no config | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/02_saml.py | 45 | # Create a saml client in the idp. | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/02_saml.py | 51 | # Create a auth domain in signoz. | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/02_saml.py | 117 | # Create a user in the idp. | COMMENT |
| MEDIUM | tests/integration/tests/callbackauthn/02_saml.py | 147 | # Create a user in the idp. | COMMENT |
| MEDIUM | …/integration/tests/dashboard/05_v2_public_dashboard.py | 51 | # Create a v2 dashboard with one panel whose builder query carries a filter, | COMMENT |
| MEDIUM | …s/integration/tests/ruler/01_basic_alert_conditions.py | 625 | # Create an alert channel using the given route | COMMENT |
| MEDIUM | tests/integration/tests/ruler/04_disabled_rule.py | 71 | # Create an alert channel using the given route | COMMENT |
| MEDIUM | tests/integration/tests/ruler/04_disabled_rule.py | 85 | # Create the disabled alert rule | COMMENT |
| MEDIUM | tests/integration/tests/basepath/01_oidc.py | 44 | # Create an oidc client in the idp with the prefixed callback. | COMMENT |
| MEDIUM | tests/integration/tests/basepath/01_oidc.py | 90 | # Create a user in the idp. | COMMENT |
| MEDIUM | tests/integration/tests/basepath/02_saml.py | 42 | # Create a saml client in the idp with the prefixed ACS. | COMMENT |
| MEDIUM | tests/integration/tests/basepath/02_saml.py | 85 | # Create a user in the idp. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | frontend/src/container/LogsExplorerContext/utils.ts | 85 | // Step 1: Always include service.name and environment attributes | COMMENT |
| LOW⚡ | frontend/src/container/LogsExplorerContext/utils.ts | 88 | // Step 2: Find first category with attributes and pick first available | COMMENT |
| LOW⚡ | frontend/src/container/LogsExplorerContext/utils.ts | 93 | // Step 3: Fallback to current regex logic (only if no priority items found) | COMMENT |
| LOW⚡ | …/OnboardingV2Container/AddDataSource/AddDataSource.tsx | 278 | // Step 1: Parse the URL | COMMENT |
| LOW⚡ | …/OnboardingV2Container/AddDataSource/AddDataSource.tsx | 283 | // Step 2: Update or add the 'source' parameter | COMMENT |
| LOW | …/OnboardingV2Container/AddDataSource/AddDataSource.tsx | 304 | // Step 3: Return the updated URL as a string | COMMENT |
| LOW | …end/src/hooks/integration/gcp/useManualAccountSetup.ts | 45 | // Step 1: create the integration account. | COMMENT |
| LOW | …end/src/hooks/integration/gcp/useManualAccountSetup.ts | 63 | // Step 2: mimic the agent by checking in from the frontend (manual flow). | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 49 | * ### Step 1: Get Store State | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 62 | * ### Step 2: Build Query Key | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 82 | * ### Step 3: Fetch Data | COMMENT |
| LOW | frontend/src/store/globalTime/index.ts | 100 | * ### Step 4: Add Refresh Button (Optional) | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 43 | # Step 1: invite and delete the first user | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 64 | # Step 2: re-invite and delete the same email (second deleted row) | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 86 | # Step 3: assert the DB has exactly two deleted rows for this email | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 107 | # Step 4: the unique index must still block a duplicate non-deleted row. | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 137 | # Step 5: a third deleted row must be accepted (excluded from partial index) | COMMENT |
| LOW | …ntegration/tests/passwordauthn/08_user_unique_index.py | 150 | # Step 6: confirm three deleted rows now exist | COMMENT |
| LOW | pkg/telemetryschema/tracestelemetryschema/storage.go | 259 | // once clickHouse dependency is updated, we need to check if we can remove it. | COMMENT |
| LOW⚡ | pkg/queryparser/queryfilterextractor/clickhouse.go | 442 | // Step 1: Search in CTE and Joins, this will take us to very end of the SubQueries and CTE | COMMENT |
| LOW⚡ | pkg/queryparser/queryfilterextractor/clickhouse.go | 451 | // Step 2: Once we're sure there are no SubQueries and CTE we just find all the selectItem | COMMENT |
| LOW | …parser/queryfilterextractor/clickhouse_originparser.go | 147 | // for functions, we need to check if the function is excluded function or a JSON extraction function with nested JSON | COMMENT |
| LOW | pkg/types/dashboardtypes/perses_dashboard_test.go | 1968 | // Step 1: Unmarshal + validate + normalize (what the API handler does). | COMMENT |
| LOW⚡ | pkg/types/dashboardtypes/perses_dashboard_test.go | 1984 | // Step 2: Marshal to JSON (simulates writing to DB). | COMMENT |
| LOW⚡ | pkg/types/dashboardtypes/perses_dashboard_test.go | 1988 | // Step 3: Unmarshal from JSON (simulates reading from DB). | COMMENT |
| LOW | pkg/types/dashboardtypes/perses_dashboard_test.go | 2004 | // Step 4: Marshal again (simulates API response) and verify defaults. | COMMENT |
| LOW | pkg/types/telemetrytypes/field.go | 151 | // Step 1: Parse data type from the right (after the last ":") if not already specified | COMMENT |
| LOW | pkg/types/telemetrytypes/field.go | 162 | // Step 2: Parse field context from the left if not already specified | COMMENT |
| LOW | pkg/modules/tracedetail/impltracedetail/module.go | 171 | // Step 1: minimal fetch → build full tree → select visible window | COMMENT |
| LOW | pkg/modules/tracedetail/impltracedetail/module.go | 193 | // Step 2: full fetch for the selected window only | COMMENT |
| LOW | pkg/sqlmigration/081_migrate_metaresources_tuples.go | 68 | // Step 1: Delete all tuples with the old "metaresources" object_type. | COMMENT |
| LOW | pkg/sqlmigration/081_migrate_metaresources_tuples.go | 83 | // Step 2: Insert replacement tuples. | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 74 | // Step 1: Drop the wrong index on (id, provider, org_id) | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 83 | // Step 2: Normalize empty-string account_id to NULL | COMMENT |
| LOW | pkg/sqlmigration/069_update_cloud_integration_index.go | 95 | // Step 3: Fetch all active rows with non-null account_id, ordered for grouping | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 118 | // Step 4: Merge config from losers into keeper | COMMENT |
| LOW⚡ | pkg/sqlmigration/069_update_cloud_integration_index.go | 123 | // Step 5: Reassign non-conflicting cloud_integration_service rows to keeper | COMMENT |
| LOW | pkg/sqlmigration/069_update_cloud_integration_index.go | 144 | // Step 6: Soft-delete all loser rows | COMMENT |
| LOW | pkg/sqlmigration/069_update_cloud_integration_index.go | 157 | // Step 7: Create the correct partial unique index on (account_id, provider, org_id) WHERE removed_at IS NULL | COMMENT |
| LOW | pkg/query-service/app/traces/v4/enrich.go | 20 | // we need to check if the field is static and return false if isColumn is not set | COMMENT |
| LOW⚡ | pkg/query-service/app/clickhouseReader/reader.go | 706 | // Step 1: Get top operations for the given service | COMMENT |
| LOW⚡ | pkg/query-service/app/clickhouseReader/reader.go | 715 | // Step 2: Get entry point operation names for the given service using GetTopLevelOperations | COMMENT |
| LOW | pkg/query-service/app/clickhouseReader/reader.go | 748 | // Step 3: Filter topOps based on entryPointSet (same as original) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/integration/tests/dashboard/03_v2_dashboard.py | 1824 | # explicit [] that must echo back as [] (yet stay absent, never null, when unset), | COMMENT |
| HIGH | tests/integration/tests/dashboard/03_v2_dashboard.py | 1910 | # whose unset slices must be omitted (not null) on read-back. | COMMENT |
| HIGH | …on/tests/querier_json_body/01_logs_json_body_new_qb.py | 459 | # log4 (no user): IS NOT NULL(null)=false → NOT found. | COMMENT |
| HIGH⚡ | …s/integration/tests/queriertraces/06_trace_operator.py | 82 | # The two POST spans are tied so their relative order is undefined; catalog-svc | COMMENT |
| HIGH⚡ | …s/integration/tests/queriertraces/06_trace_operator.py | 185 | "expression": "A && B", | CODE |
| HIGH⚡ | …s/integration/tests/queriertraces/06_trace_operator.py | 198 | "expression": "A || B", | CODE |
| HIGH⚡ | …s/integration/tests/queriertraces/06_trace_operator.py | 211 | "expression": "A || B", | CODE |
| HIGH | tests/integration/tests/queriertraces/01_list.py | 985 | return zero rows (rows is null, surfaced as an empty list). | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | frontend/src/lib/dashboard/getQueryResults.ts | 329 | response.payload.data.newResult.data.result.map((queryData) => { | CODE |
| CRITICAL⚡ | …rrorDetails/stories/__story_mockdata__/errorDetails.ts | 82 | \tat io.signoz.sample.payment.GatewayClient.authorize(GatewayClient.java:74) | CODE |
| CRITICAL⚡ | …rrorDetails/stories/__story_mockdata__/errorDetails.ts | 83 | \tat io.signoz.sample.payment.PaymentService.charge(PaymentService.java:112) | CODE |
| CRITICAL⚡ | …rrorDetails/stories/__story_mockdata__/errorDetails.ts | 84 | \tat io.signoz.sample.payment.PaymentController.pay(PaymentController.java:48) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ettings/AuthDomain/CreateEdit/CreateEdit.utils.test.ts | 56 | { domain: 'example.com', adminEmail: 'admin@example.com' }, | CODE |
| LOW | …ettings/AuthDomain/CreateEdit/CreateEdit.utils.test.ts | 60 | 'example.com': 'admin@example.com', | CODE |
| LOW | …ettings/AuthDomain/CreateEdit/CreateEdit.utils.test.ts | 76 | 'example.com': 'admin@example.com', | CODE |
| LOW | …ettings/AuthDomain/CreateEdit/CreateEdit.utils.test.ts | 129 | domainToAdminEmail: { 'example.com': 'admin@example.com' }, | CODE |
| LOW | …ettings/AuthDomain/CreateEdit/CreateEdit.utils.test.ts | 135 | { domain: 'example.com', adminEmail: 'admin@example.com' }, | CODE |
| LOW | …d/src/container/RoutingPolicies/__tests__/testUtils.ts | 82 | displayName: 'John Doe', | CODE |
| LOW | …r/AIAssistant/components/ApprovalCard/ApprovalCard.tsx | 313 | const op = line.op === 'add' ? 'placeholder' : line.op; | CODE |
| LOW | …r/AIAssistant/components/ApprovalCard/ApprovalCard.tsx | 327 | const op = line.op === 'remove' ? 'placeholder' : line.op; | CODE |
| LOW | …r/AIAssistant/components/ApprovalCard/ApprovalCard.tsx | 345 | type RenderOp = LineOp | 'placeholder'; | CODE |
| LOW | …r/AIAssistant/components/ApprovalCard/ApprovalCard.tsx | 432 | [styles.diffLinePlaceholder]: op === 'placeholder', | CODE |
| LOW | frontend/src/container/LogDetailedView/util.test.ts | 133 | '{"name": "John", "age": 30, "address": {"street": "123 Main St", "city": "Anytown", "state": "CA"}}'; | CODE |
| LOW | frontend/src/container/LogDetailedView/util.test.ts | 139 | street: '123 Main St', | CODE |
| LOW | …rc/components/QuickFilters/tests/QuickFilters.test.tsx | 539 | expect(minDuration).toHaveProperty('placeholder', '0'); | CODE |
| LOW | …rc/components/QuickFilters/tests/QuickFilters.test.tsx | 541 | expect(maxDuration).toHaveProperty('placeholder', '100000000'); | CODE |
| LOW | …/src/components/QueryBuilderV2/__tests__/utils.test.ts | 443 | value: 'user@example.com', | CODE |
| LOW | …/src/components/QueryBuilderV2/__tests__/utils.test.ts | 464 | "is_active = true AND is_deleted = false AND email = 'user@example.com' AND description = 'Contains \"quotes\" and \ | CODE |
| LOW | …/src/components/QueryBuilderV2/__tests__/utils.test.ts | 1459 | expect(formatValueForExpression('user@example.com')).toBe( | CODE |
| LOW | …/src/components/QueryBuilderV2/__tests__/utils.test.ts | 1460 | "'user@example.com'", | CODE |
| LOW | …mponents/QueryBuilderV2/__tests__/QueryAddOns.test.tsx | 177 | [QueryBuilderField.Limit, 'input-Limit', 'placeholder'], | CODE |
| LOW | …mponents/QueryBuilderV2/__tests__/QueryAddOns.test.tsx | 178 | [QueryBuilderField.Legend, 'input-Legend format', 'placeholder'], | CODE |
| LOW | …mponents/QueryBuilderV2/__tests__/QueryAddOns.test.tsx | 220 | 'placeholder', | CODE |
| LOW | frontend/src/components/Input/index.tsx | 47 | placeholder?: InputProps['placeholder']; | CODE |
| LOW | frontend/src/lib/__fixtures__/getRandomColor.ts | 21 | 'Lorem Ipsum', | CODE |
| LOW | frontend/src/lib/__fixtures__/getRandomColor.ts | 38 | 'Lorem Ipsum2', | CODE |
| LOW | frontend/src/lib/__fixtures__/getRandomColor.ts | 55 | 'Lorem Ipsum3', | CODE |
| LOW | …tPassword/stories/__story_mockdata__/forgotPassword.ts | 13 | { id: 'org-acme', name: 'Acme Corp' }, | CODE |
| LOW | …sListPage/stories/__story_mockdata__/dashboardsList.ts | 333 | displayName: 'John Doe', | CODE |
| LOW | …nd/src/pages/Login/stories/__story_mockdata__/login.ts | 19 | { id: 'org-acme', name: 'Acme Corp' }, | CODE |
| LOW | tests/integration/tests/callbackauthn/03_oidc.py | 418 | assert found_user["displayName"] == "John Doe" | CODE |
| LOW | tests/e2e/tests/alerts/create/v2.spec.ts | 55 | 'placeholder', | CODE |
| LOW | …tryschema/logstelemetryschema/filter_expr_logs_test.go | 852 | expectedArgs: []any{"user@example.com"}, | CODE |
| LOW | …tryschema/logstelemetryschema/filter_expr_logs_test.go | 918 | expectedArgs: []any{"user@example.com"}, | CODE |
| LOW | …rtmanager/alertmanagernotify/opsgenie/opsgenie_test.go | 560 | {"shrinks to fit", strings.Repeat("lorem ipsum ", 500), 1000, false}, | CODE |
| LOW | …rtmanager/alertmanagernotify/opsgenie/opsgenie_test.go | 561 | {"budget too small", strings.Repeat("lorem ipsum ", 500), 10, true}, | CODE |
| LOW | pkg/tokenizer/jwttokenizer/provider_test.go | 64 | Email: valuer.MustNewEmail("test@test.com"), | CODE |
| LOW | pkg/tokenizer/jwttokenizer/provider_test.go | 75 | Email: valuer.MustNewEmail("test@test.com"), | CODE |
| LOW | pkg/valuer/email_test.go | 16 | {name: "Valid", val: "test@test.com", want: Email{val: "test@test.com"}, pass: true}, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …MessagingQueues/MQDetails/MetricPage/MetricPageUtil.ts | 423 | // Use kebab-case title as requested | COMMENT |
| HIGH | …ypes/cloudintegrationtypes/cloudprovider_azure_test.go | 1 | // file is generated by AI | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/seeder/server.py | 86 | except Exception as e: | CODE |
| LOW | tests/seeder/server.py | 99 | except Exception as e: | CODE |
| LOW | tests/seeder/server.py | 113 | except Exception as e: | CODE |
| LOW | tests/seeder/server.py | 124 | except Exception as e: | CODE |
| LOW | tests/seeder/server.py | 138 | except Exception as e: | CODE |
| LOW | tests/seeder/server.py | 149 | except Exception as e: | CODE |
| LOW | tests/seeder/server.py | 163 | except Exception as e: | CODE |
| MEDIUM | tests/seeder/server.py | 94 | def delete_traces() -> Response: | CODE |
| MEDIUM | tests/seeder/server.py | 119 | def delete_logs() -> Response: | CODE |
| MEDIUM | tests/seeder/server.py | 144 | def delete_metrics() -> Response: | CODE |
| LOW | tests/e2e/bootstrap/setup.py | 58 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ryschema/logstelemetryschema/json_condition_builder.go | 178 | // else ClickHouse may not utilize index | COMMENT |
| MEDIUM | pkg/types/spantypes/flamegraph_trace.go | 74 | startLevel = max(0, endLevel-levelLimit) // utilize the page size if endLevel is clamped | CODE |
| MEDIUM | pkg/query-service/app/logs/v4/query_builder.go | 224 | // by default clickhouse is not able to utilize indexes for keys with all operators. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …sts/integration/tests/cloudintegrations/05_services.py | 594 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration/bootstrap/setup.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/integration/tests/passwordauthn/07_user_fga.py | 37 | def _set_actor_role(signoz: types.SigNoz, admin_token: str, transaction_groups: list[dict]) -> None: | CODE |
| LOW | tests/e2e/bootstrap/basepath/setup.py | 5 | __all__ = ["test_setup", "test_teardown"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …egration/tests/promqlconformance/01_upstream_corpus.py | 30 | CODE | |
| LOW | …/integration/tests/querierlogs/07_list_expectations.py | 717 | CODE | |
| LOW | …n/tests/promapiconformance/01_prometheus_api_corpus.py | 24 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/e2e/bootstrap/basepath/setup.py | 3 | CODE | |
| LOW | tests/e2e/bootstrap/basepath/setup.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/contributing/development.md | 92 | > [running more than one instance](#how-do-i-run-more-than-one-instance) if you need that for agentic testing. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/volume-migration/migrate.sh | 81 | # Check if docker is available | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/query-service/rules/base_rule.go | 457 | // TODO: implement caching for query parsing results to avoid re-parsing the query + cache invalidation | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/.storybook/public/mockServiceWorker.js | 146 | async function handleRequest(event, requestId) { | CODE |