Open source observability platform for logs, metrics, traces, frontend monitoring, pipelines and LLM observability. A sophisticated, simple and highly performant alternative to Datadog, Splunk, and Elasticsearch with 140x lower storage costs and single binary deployment.
This report presents the forensic synthetic code analysis of openobserve/openobserve, a TypeScript project with 21,540 GitHub stars. SynthScan v2.0 examined 2,616,566 lines of code across 6206 source files, recording 11468 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 7.8 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 11468 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/eslint.config.js | 93 | // ── no-hardcoded-px ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/eslint.config.js | 146 | // ── .css ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/eslint.config.js | 160 | // ── .vue <style> ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/eslint.config.js | 763 | // ── Stylesheets ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 18 | // ── Replay state machine ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 91 | // ── Locator bundle ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 148 | // ── Version-2 settle block ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 183 | // ── Version-2 assertions ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 237 | // ── OpenObserve Extension (playwright-crx) recorder protocol ──────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 391 | // ── Live data pushed over the port ────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/types/synthetics.ts | 667 | // ── Private locations (GET /{org}/synthetics/locations + /{id}) ────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 11 | // ─── IDB mock helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 130 | // ─── openDB ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 146 | // ─── mergeValues ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 184 | // ─── mergeMultipleValues ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 230 | // ─── getValues ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 268 | // ─── evictExpired ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueDB.spec.ts | 281 | // ─── trimToMaxFields ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 21 | // ── Bridge test helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 82 | // ── Test suite ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 96 | // ── detectExtension ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 197 | // ── startRecording ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 199 | // ── capabilities (P1 handshake) ──────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 342 | // ── startRecordingFrom (P2 restore-then-record) ─────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 721 | // ── Cancelling a restore ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 821 | // ── Recovering from a failed prefix ───────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 1020 | // ── stopRecording ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 1048 | // ── cancelRecording ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 1065 | // ── replay ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 1158 | // ── Stop ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticsRecorder.spec.ts | 1332 | // ── The bridge dies mid-replay ────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.spec.ts | 63 | // ─── Return value structure ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.spec.ts | 92 | // ─── resetFieldValues ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.spec.ts | 141 | // ─── cancelFieldStream ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.spec.ts | 184 | // ─── fetchFieldValues ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticResults.ts | 128 | // ── Stream schema fields ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticResults.ts | 186 | // ── Effective p95 — falls back to client-side computation from runs ────── | COMMENT |
| MEDIUM | web/src/composables/useSyntheticResults.ts | 203 | // ── Steps: fetch via synthetics_results log stream ───────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.ts | 66 | // ─── Trace ID helpers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.ts | 79 | // ─── Public API ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useFieldValuesStream.ts | 128 | // ─── Stream handlers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …b/src/composables/useSuggestions.serverCatalog.spec.ts | 60 | // ─── Phase 2 (tmp/code.md B4) — the fetch itself must be wired ──────────────── | COMMENT |
| MEDIUM | …b/src/composables/useSuggestions.serverCatalog.spec.ts | 169 | // ─── Surfaces that never call getSuggestions ───────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useUnauthorizedErrorGrouper.ts | 42 | // ── URL → {label, urlPath} extraction ─────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useUnauthorizedErrorGrouper.ts | 107 | // ── Module-level singleton state ───────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useUnauthorizedErrorGrouper.ts | 166 | // ── Public API ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueStore.spec.ts | 3 | // ─── Mock fieldValueDB ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueStore.spec.ts | 12 | // ─── Mock extractValuesFromHits ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueStore.spec.ts | 30 | // ─── scheduleWrite behaviour ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueStore.spec.ts | 94 | // ─── captureFromValuesApi ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/fieldValueStore.spec.ts | 168 | // ─── getFieldValuesForSuggestion ────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/usePromqlSuggestions.spec.ts | 496 | // ─── tmp/code.md item 18 (section E) — the catalog behind these keywords ───── | COMMENT |
| MEDIUM | web/src/composables/usePromqlSuggestions.spec.ts | 631 | // ─── Removed with the series endpoint (tmp/code.md D11) ────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 103 | // ─── Default Values ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 216 | // ─── Composable ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 252 | // ── Core State ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 258 | // ── Headless OForm ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 385 | // ── Anomaly Detection State ───────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 494 | // ── Expand / UI State ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/src/composables/useAlertForm.ts | 550 | // ── Wizard State (kept for anomaly flow) ──────────────────────────────── | COMMENT |
| 3593 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/eslint.config.js | 21 | // parser hands to a rule as an AST — `parse` takes an `offset`, so the positions it returns | COMMENT |
| LOW | web/eslint.config.js | 641 | ], | COMMENT |
| LOW | web/vite.config.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/vite.config.ts | 141 | }, | COMMENT |
| LOW | web/vite.config.ts | 281 | return (id: string) => { | COMMENT |
| LOW | web/vitest.config.ts | 61 | // column is meant to read in the user's own timezone — so those tests can | COMMENT |
| LOW | web/cypress.config.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | …posables/usePrebuiltDestinations.comprehensive.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/tests/unit/services/alert_destination.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/main.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/aws-exports.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/types/i18n.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/types/alertLibrary.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/types/synthetics.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/types/synthetics.ts | 81 | // pre-ticked silently inverted the journey (spec X-9.3). | COMMENT |
| LOW | web/src/composables/useSyntheticEvidence.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.ts | 121 | // Synchronous callback invoked when recording stops externally (user closes the extension | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.ts | 141 | const REPLAY_TIMEOUT_MS = 15 * 60 * 1000; | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.ts | 261 | * getStatus reply has no `installed` flag — any non-null response means | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.ts | 541 | // Same class of command as `replay`, and for the same reason: the extension | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.ts | 721 | // died between stopRecording and replay (bfcache, SW suspend, etc.). | COMMENT |
| LOW | web/src/composables/useTreeInteraction.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSyntheticsRecorder.spec.ts | 201 | // The extension is user-installed and updates asynchronously, so O2 always runs | COMMENT |
| LOW | web/src/composables/usePrebuiltDestinations.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useLogsHighlighter.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/usePipelines.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useFieldValuesStream.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useMetricsCorrelationDashboard.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSyntheticResults.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useTextHighlighter.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useLogs.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useLogs.ts | 361 | } | COMMENT |
| LOW | web/src/composables/useWorker.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useFieldValuesStream.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | …b/src/composables/useSuggestions.serverCatalog.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSessionActivity.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useChunkedContent.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useTreeVisualization.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useIngestion.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useUnauthorizedErrorGrouper.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useFolderIcons.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useStreams.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSloFormat.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useMcpCredential.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useServiceGraphTree.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useFunctions.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useMetricsExplorer.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/router.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useErrorTracking.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useAlertInsights.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useStickyColumns.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/usePromqlSuggestions.spec.ts | 561 | // Caller-supplied lists replacing the catalog outright is already covered by | COMMENT |
| LOW | web/src/composables/usePromqlSuggestions.spec.ts | 621 | // runs on a query update — so a freshly opened PromQL editor has an EMPTY | COMMENT |
| LOW | web/src/composables/useWorker.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useSessionReplay.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useWidenRange.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useFunctions.spec.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| LOW | web/src/composables/useServiceCorrelation.ts | 1 | // Copyright 2026 OpenObserve Inc. | COMMENT |
| 4792 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/composables/rum/useCorrelatedTracesStream.ts | 215 | // Step 2: only unresolved ids, only unprobed streams. | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 430 | // Step 1: Expand variables for scopes | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 433 | // Step 2: Populate state | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 454 | // Step 3: Build dependency graph | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 457 | // Step 4: Detect cycles | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 463 | // Step 5: Mark global independent variables as ready to load | COMMENT |
| LOW | web/src/composables/dashboard/useVariablesManager.ts | 536 | // Step 6: Initialize committed state (empty at first) | COMMENT |
| LOW | …/plugins/correlation/TelemetryCorrelationDashboard.vue | 2900 | // Step 1: Try to extract trace_id from the log record | COMMENT |
| LOW | web/src/plugins/logs/Index.vue | 676 | * As we are redirecting stream explorer to logs page, we need to check if the user has changed the stream type from | COMMENT |
| LOW | web/src/plugins/logs/SearchBar.vue | 3669 | //before we set the time to the dateTimeRef.value we need to check if the startTime and endTime difference | COMMENT |
| LOW⚡ | web/src/plugins/logs/SearchBar.spec.ts | 4221 | // Step 1: user types full SQL query — auto-detect turns on SQL mode | COMMENT |
| LOW⚡ | web/src/plugins/logs/SearchBar.spec.ts | 4225 | // Step 2: user removes 'select * from otel_demo where ', leaving filter | COMMENT |
| LOW⚡ | web/src/plugins/logs/SearchBar.spec.ts | 4228 | // Step 3: sqlMode must be off so run-query uses filter mode | COMMENT |
| LOW | web/src/plugins/logs/patterns/PatternList.spec.ts | 103 | // Since we're using virtual scroll, we need to check if the component | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 131 | // Step 1: discover dynamic prefix groups from the field set | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 134 | // Step 2: build flat field objects with resolved group keys | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 145 | // Step 3: bucket by group key | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 153 | // Step 4: sort groups | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 158 | // Step 5: inject label rows | COMMENT |
| LOW⚡ | web/src/utils/llmUtils.ts | 268 | // Step 1: Parse JSON string if needed | COMMENT |
| LOW⚡ | web/src/utils/llmUtils.ts | 278 | // Step 2: Extract meaningful text from parsed object | COMMENT |
| LOW⚡ | web/src/utils/alerts/conditionsFormatter.ts | 240 | // Step 1: Format the value (add quotes if needed, based on type) | COMMENT |
| LOW⚡ | web/src/utils/alerts/conditionsFormatter.ts | 247 | // Step 2: Build the condition string (column operator value) | COMMENT |
| LOW⚡ | web/src/utils/alerts/conditionsFormatter.ts | 257 | // Step 3: Add logical operator prefix (except for first item at index 0) | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 75 | // Step 1: Aggregate y_axis values by breakdown, ensuring missing values are set to empty string | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 90 | // Step 2: Sort and extract the top keys based on the configured number of top results | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 106 | // Step 3: Initialize result array and others object for aggregation | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 126 | // Step 4: Add 'others' aggregation to the result array if enabled | COMMENT |
| LOW | …/utils/dashboard/variables/variablesDependencyUtils.ts | 322 | // Step 1: Initialize nodes | COMMENT |
| LOW | …/utils/dashboard/variables/variablesDependencyUtils.ts | 334 | // Step 2: Build edges | COMMENT |
| LOW | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 78 | // Step 1: Find appropriate converter for this chart type | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 91 | // Step 2: Preprocess data (common for all chart types) | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 95 | // Step 3: Initialize extras object | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 102 | // Step 4: Delegate to chart-specific converter | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 106 | // Step 5: Apply common chart configurations | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 120 | // Step 6: Apply comprehensive legend configuration (same as SQL charts) | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 127 | // Step 7: Apply annotations (if applicable) | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 133 | // Step 8: Handle empty data case | COMMENT |
| LOW⚡ | web/src/utils/dashboard/sql/shared/contextBuilder.ts | 116 | // Step 1: Get the X-Axis key | COMMENT |
| LOW⚡ | web/src/utils/dashboard/sql/shared/contextBuilder.ts | 119 | // Step 2: Get the Y-Axis key | COMMENT |
| LOW⚡ | web/src/utils/templates/validation.ts | 46 | // Step 1: Replace quoted placeholders first: "{placeholder}" -> "test" | COMMENT |
| LOW⚡ | web/src/utils/templates/validation.ts | 49 | // Step 2: Iteratively replace bare placeholders (simple identifiers only) | COMMENT |
| LOW | …b/src/components/logstream/AssociatedRegexPatterns.vue | 745 | //so we need to check if the policy or apply_at value is changed and if it is then we need to update the isFormDirty | COMMENT |
| LOW | web/src/components/pipeline/NodeForm/Query.vue | 557 | //before assigning the sql , we need to check if the sql does limit is applied or not | COMMENT |
| LOW⚡ | …omponents/ingestion/recommended/AWSIntegrationTile.vue | 421 | // Step 1: Ensure folders exist | COMMENT |
| LOW⚡ | …omponents/ingestion/recommended/AWSIntegrationTile.vue | 424 | // Step 2: Download dashboard JSON to get the actual title | COMMENT |
| LOW | …omponents/ingestion/recommended/AWSIntegrationTile.vue | 436 | // Step 3: Check if dashboard already exists by listing all dashboards in the folder | COMMENT |
| LOW | web/src/components/alerts/AddDestination.vue | 871 | // Step 1: Parse metadata and remove the credential_ prefix. `metadata` is not | COMMENT |
| LOW | web/src/components/alerts/AddDestination.vue | 891 | // Step 2: Restore sensitive fields from destination properties. | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1935 | // Step 1: Get stream schema (like logs page does) | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1939 | // Step 2: Extract schema fields (like logs page does) | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1949 | // Step 3: Get semantic groups to resolve dimension names to field patterns | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1955 | // Step 4: For each dimension, find the matching schema field | COMMENT |
| LOW⚡ | web/src/components/alerts/QueryEditorDialog.vue | 697 | // Step 1: grow the VRL pane (sqlEditorMaximized = false triggers CSS) | COMMENT |
| LOW⚡ | web/src/components/alerts/QueryEditorDialog.vue | 701 | // Step 2: after two animation frames the browser has finished laying out | COMMENT |
| LOW | web/src/components/iam/quota/Quota.vue | 1310 | //if the active type is json then we need to check if the changes are there in the changedValues | COMMENT |
| LOW | web/src/components/iam/quota/Quota.vue | 1325 | //if the active type is table then we need to check if the changes are there in the jsonStrToDisplay | COMMENT |
| LOW | web/src/components/functions/EnrichmentTableList.vue | 573 | //here we need to check if the action is there or not | COMMENT |
| LOW | web/src/views/LogStream.vue | 1098 | // We need to check if stream is present in store, if not then we need to fetch the stream | COMMENT |
| LOW⚡ | tests/api-testing/tests/rum/test_rum.py | 157 | # Step 1: fetch a valid rum token | COMMENT |
| 737 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/composables/rum/useCorrelatedTracesStream.ts | 215 | // Step 2: only unresolved ids, only unprobed streams. | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 430 | // Step 1: Expand variables for scopes | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 433 | // Step 2: Populate state | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 454 | // Step 3: Build dependency graph | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 457 | // Step 4: Detect cycles | COMMENT |
| LOW⚡ | web/src/composables/dashboard/useVariablesManager.ts | 463 | // Step 5: Mark global independent variables as ready to load | COMMENT |
| LOW | web/src/composables/dashboard/useVariablesManager.ts | 536 | // Step 6: Initialize committed state (empty at first) | COMMENT |
| LOW | …/plugins/correlation/TelemetryCorrelationDashboard.vue | 2900 | // Step 1: Try to extract trace_id from the log record | COMMENT |
| LOW⚡ | web/src/plugins/logs/SearchBar.spec.ts | 4221 | // Step 1: user types full SQL query — auto-detect turns on SQL mode | COMMENT |
| LOW⚡ | web/src/plugins/logs/SearchBar.spec.ts | 4225 | // Step 2: user removes 'select * from otel_demo where ', leaving filter | COMMENT |
| LOW⚡ | web/src/plugins/logs/SearchBar.spec.ts | 4228 | // Step 3: sqlMode must be off so run-query uses filter mode | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 131 | // Step 1: discover dynamic prefix groups from the field set | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 134 | // Step 2: build flat field objects with resolved group keys | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 145 | // Step 3: bucket by group key | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 153 | // Step 4: sort groups | COMMENT |
| LOW⚡ | web/src/utils/fieldCategories.bench.ts | 158 | // Step 5: inject label rows | COMMENT |
| LOW⚡ | web/src/utils/llmUtils.ts | 268 | // Step 1: Parse JSON string if needed | COMMENT |
| LOW⚡ | web/src/utils/llmUtils.ts | 278 | // Step 2: Extract meaningful text from parsed object | COMMENT |
| LOW⚡ | web/src/utils/alerts/conditionsFormatter.ts | 240 | // Step 1: Format the value (add quotes if needed, based on type) | COMMENT |
| LOW⚡ | web/src/utils/alerts/conditionsFormatter.ts | 247 | // Step 2: Build the condition string (column operator value) | COMMENT |
| LOW⚡ | web/src/utils/alerts/conditionsFormatter.ts | 257 | // Step 3: Add logical operator prefix (except for first item at index 0) | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 75 | // Step 1: Aggregate y_axis values by breakdown, ensuring missing values are set to empty string | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 90 | // Step 2: Sort and extract the top keys based on the configured number of top results | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 106 | // Step 3: Initialize result array and others object for aggregation | COMMENT |
| LOW | web/src/utils/dashboard/sqlProcessData.ts | 126 | // Step 4: Add 'others' aggregation to the result array if enabled | COMMENT |
| LOW | …/utils/dashboard/variables/variablesDependencyUtils.ts | 322 | // Step 1: Initialize nodes | COMMENT |
| LOW | …/utils/dashboard/variables/variablesDependencyUtils.ts | 334 | // Step 2: Build edges | COMMENT |
| LOW | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 78 | // Step 1: Find appropriate converter for this chart type | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 91 | // Step 2: Preprocess data (common for all chart types) | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 95 | // Step 3: Initialize extras object | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 102 | // Step 4: Delegate to chart-specific converter | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 106 | // Step 5: Apply common chart configurations | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 120 | // Step 6: Apply comprehensive legend configuration (same as SQL charts) | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 127 | // Step 7: Apply annotations (if applicable) | COMMENT |
| LOW⚡ | …b/src/utils/dashboard/promql/convertPromQLChartData.ts | 133 | // Step 8: Handle empty data case | COMMENT |
| LOW⚡ | web/src/utils/dashboard/sql/shared/contextBuilder.ts | 116 | // Step 1: Get the X-Axis key | COMMENT |
| LOW⚡ | web/src/utils/dashboard/sql/shared/contextBuilder.ts | 119 | // Step 2: Get the Y-Axis key | COMMENT |
| LOW⚡ | web/src/utils/templates/validation.ts | 46 | // Step 1: Replace quoted placeholders first: "{placeholder}" -> "test" | COMMENT |
| LOW⚡ | web/src/utils/templates/validation.ts | 49 | // Step 2: Iteratively replace bare placeholders (simple identifiers only) | COMMENT |
| LOW⚡ | …omponents/ingestion/recommended/AWSIntegrationTile.vue | 421 | // Step 1: Ensure folders exist | COMMENT |
| LOW⚡ | …omponents/ingestion/recommended/AWSIntegrationTile.vue | 424 | // Step 2: Download dashboard JSON to get the actual title | COMMENT |
| LOW | …omponents/ingestion/recommended/AWSIntegrationTile.vue | 436 | // Step 3: Check if dashboard already exists by listing all dashboards in the folder | COMMENT |
| LOW | web/src/components/alerts/AddDestination.vue | 871 | // Step 1: Parse metadata and remove the credential_ prefix. `metadata` is not | COMMENT |
| LOW | web/src/components/alerts/AddDestination.vue | 891 | // Step 2: Restore sensitive fields from destination properties. | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1935 | // Step 1: Get stream schema (like logs page does) | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1939 | // Step 2: Extract schema fields (like logs page does) | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1949 | // Step 3: Get semantic groups to resolve dimension names to field patterns | COMMENT |
| LOW⚡ | web/src/components/alerts/IncidentDetailDrawer.vue | 1955 | // Step 4: For each dimension, find the matching schema field | COMMENT |
| LOW⚡ | web/src/components/alerts/QueryEditorDialog.vue | 697 | // Step 1: grow the VRL pane (sqlEditorMaximized = false triggers CSS) | COMMENT |
| LOW⚡ | web/src/components/alerts/QueryEditorDialog.vue | 701 | // Step 2: after two animation frames the browser has finished laying out | COMMENT |
| LOW⚡ | tests/api-testing/tests/rum/test_rum.py | 157 | # Step 1: fetch a valid rum token | COMMENT |
| LOW⚡ | tests/api-testing/tests/rum/test_rum.py | 162 | # Step 2: ingest one valid RUM data record so _rumdata exists with a `service` column | COMMENT |
| LOW⚡ | tests/api-testing/tests/rum/test_rum.py | 206 | # Step 1: fetch a valid rum token | COMMENT |
| LOW⚡ | tests/api-testing/tests/rum/test_rum.py | 211 | # Step 2: ingest a log with a unique identifier we can search for | COMMENT |
| LOW | tests/api-testing/tests/rum/test_rum.py | 175 | # Step 3: wait until the _rumdata stream schema is registered and queryable | COMMENT |
| LOW | tests/api-testing/tests/rum/test_rum.py | 192 | # Step 4: a service value that was never ingested yields empty hits, not an error | COMMENT |
| LOW | tests/api-testing/tests/rum/test_rum.py | 227 | # Step 3: poll search until the unique message appears in _rumlog | COMMENT |
| LOW⚡ | …i-testing/tests/pipelines/test_enrichment_table_url.py | 325 | # Step 1: Create the enrichment table | COMMENT |
| LOW | …i-testing/tests/pipelines/test_enrichment_table_url.py | 337 | # Step 2: Wait for initial job to complete | COMMENT |
| LOW | …i-testing/tests/pipelines/test_enrichment_table_url.py | 350 | # Step 3: Reload with retry=true and empty URL | COMMENT |
| 721 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/main.ts | 205 | function showNewVersionNotification() { | CODE |
| LOW | web/src/composables/useLogsHighlighter.ts | 488 | function createStyledSpanWithClasses( | CODE |
| LOW | web/src/composables/useLogsHighlighter.ts | 544 | function isLogLineWithMixedContent(value: string): boolean { | CODE |
| LOW | web/src/composables/useLogsHighlighter.ts | 567 | function colorizeObjectWithClasses( | CODE |
| LOW | web/src/composables/useMetricsCorrelationDashboard.ts | 48 | export function useMetricsCorrelationDashboard(t: TranslateFn) { | CODE |
| LOW | web/src/composables/useServiceCorrelation.ts | 366 | export function clearSemanticGroupsCaches() { | CODE |
| LOW | web/src/composables/useServiceCorrelation.ts | 375 | export function getSemanticGroupsCacheStatus(): Record< | CODE |
| LOW | web/src/composables/useDimensionSelector.spec.ts | 31 | function buildSamplesWithCardinality( | CODE |
| LOW | web/src/composables/useDimensionSelector.ts | 401 | function selectDimensionsFromSchema( | CODE |
| LOW | web/src/composables/useTextHighlighter.ts | 415 | function processTextWithHighlights( | CODE |
| LOW | web/src/composables/useMetricSubjectButtons.ts | 187 | function patternsForSemanticGroups(semanticIds: string[], semanticGroups: FieldAlias[]): RegExp[] { | CODE |
| LOW | web/src/composables/useMetricSubjectButtons.ts | 287 | export function buildWorkloadChipDimensions( | CODE |
| LOW | web/src/composables/useCorrelationDefaultSlug.ts | 112 | export function extractCorrelationFilters( | CODE |
| LOW | web/src/composables/useCorrelationDefaultSlug.ts | 172 | export function buildCorrelationWhereClause(filters: SavedFilter[]): string { | CODE |
| LOW | web/src/composables/useLatencyInsightsAnalysis.ts | 72 | export function useLatencyInsightsAnalysis(t: TranslateFn) { | CODE |
| LOW | web/src/composables/useLatencyInsightsDashboard.ts | 29 | export function useLatencyInsightsDashboard(t: TranslateFn) { | CODE |
| LOW | …b/src/composables/synthetics/syntheticResultsSchema.ts | 1309 | export function computePartitionStability(runs: SyntheticRun[]): PartitionStability[] { | CODE |
| LOW | …b/src/composables/synthetics/syntheticResultsSchema.ts | 1719 | export function buildProtocolRunDetailSql( | CODE |
| LOW | web/src/composables/rum/useCorrelatedTracesStream.ts | 52 | export default function useCorrelatedTracesStream(t: TranslateFn) { | CODE |
| LOW | web/src/composables/alerts/useAlertLibrary.spec.ts | 132 | function respondOnceWithUnparseableBody() { | CODE |
| LOW | web/src/composables/alerts/useDependencyGraph.ts | 349 | export function invalidateDependencyGraphCache() { | CODE |
| LOW | web/src/composables/dashboard/promqlChunkProcessor.ts | 41 | export function createPromQLChunkProcessor(options: PromQLChunkProcessorOptions) { | CODE |
| LOW | web/src/test/unit/workers/rumcssworker.spec.js | 47 | function replaceAbsoluteUrlsWithProxies(proxyUrl, cssString, excludedDomains = []) { | CODE |
| LOW | web/src/test/unit/helpers/mockRumPerformanceTab.ts | 46 | export function createRumPerformanceTabMock(overrides: RumPerformanceTabMockOverrides = {}) { | CODE |
| LOW | web/src/enterprise/components/OnlineEvals.vue | 989 | async function triggerScoreConfigLibraryImport() { | CODE |
| LOW | web/src/enterprise/components/OnlineEvals.vue | 999 | async function handleScoreConfigLibraryImported() { | CODE |
| LOW | web/src/enterprise/components/OnlineEvals.vue | 1031 | async function triggerScorerLibraryImport() { | CODE |
| LOW | web/src/enterprise/components/OnlineEvals.vue | 1041 | async function handleScorerLibraryImported() { | CODE |
| LOW | …prise/components/AIObservability/ExperimentBrowser.vue | 527 | function translateComparisonReason(reason: ComparisonIneligibilityReason) { | CODE |
| LOW | …rc/enterprise/components/onlineEvals/ScorerLibrary.vue | 306 | async function resolveRequiredScoreConfig(name: string): Promise<ScoreConfig> { | CODE |
| LOW | …mponents/onlineEvals/composables/useOnlineEvalsData.ts | 74 | async function ensureScoreConfigVersions(orgId: string, entityIdValue: string) { | CODE |
| LOW | …onents/onlineEvals/composables/useJobMatchedTargets.ts | 13 | export function buildJobMatchedTargetsTimeRange(nowMs = Date.now()) { | CODE |
| LOW | …onents/onlineEvals/composables/useJobMatchedTargets.ts | 35 | export function buildJobMatchedTargetsSql( | CODE |
| LOW | …e/components/onlineEvals/composables/useQualityRuns.ts | 200 | export function buildEvaluatorSpanLookupSql( | CODE |
| LOW | …rprise/components/onlineEvals/forms/ScorerFormPage.vue | 1238 | async function handleScoreConfigSelection() { | CODE |
| LOW | …rprise/components/onlineEvals/forms/ScorerFormPage.vue | 1244 | async function prepareSelectedScoreConfigVersion(keepSelectedVersion: boolean) { | CODE |
| LOW | …e/components/onlineEvals/forms/job/JobInputMapping.vue | 351 | function updateSpanSelectorBinding(scorerId: string, selectorId: string) { | CODE |
| LOW | …erprise/components/onlineEvals/utils/scoreThreshold.ts | 131 | export function buildUnhealthyCaseBranches( | CODE |
| LOW | …c/enterprise/components/onlineEvals/utils/routeSync.ts | 123 | export function buildCrossNavigationQuery( | CODE |
| LOW | …erprise/components/onlineEvals/utils/agentFilterSql.ts | 28 | export function buildScoresAgentFilterWhere( | CODE |
| LOW | …erprise/components/onlineEvals/utils/agentFilterSql.ts | 49 | export function buildEvaluatorAgentFilterWhere( | CODE |
| LOW⚡ | …enterprise/components/onlineEvals/utils/jobMappings.ts | 35 | export function jobMappingVariablesForScorer( | CODE |
| LOW⚡ | …enterprise/components/onlineEvals/utils/jobMappings.ts | 42 | export function mappingUsesSystemProvidedSpans( | CODE |
| LOW⚡ | …enterprise/components/onlineEvals/utils/jobMappings.ts | 50 | export function buildJobInputMappingPayload( | CODE |
| LOW | …enterprise/components/onlineEvals/utils/jobMappings.ts | 69 | export function normalizeJobInputMappings(value: any, selectedScorerIds: string[]) { | CODE |
| LOW | …omponents/onlineEvals/utils/systemProvidedVariables.ts | 20 | export function systemProvidedVariablesForScope( | CODE |
| LOW | …rise/components/onlineEvals/utils/importScoreConfig.ts | 46 | export function normalizeScoreConfigInput(raw: unknown): Partial<ScoreConfigPayload> | null { | CODE |
| LOW | …rise/components/onlineEvals/utils/importScoreConfig.ts | 71 | function normalizeHealthyThreshold(ht: any): Record<string, any> | undefined { | CODE |
| LOW | …erprise/components/onlineEvals/utils/latestScoreSql.ts | 89 | export function latestScoreAttemptsFromSql(whereClause?: string | null): string { | CODE |
| LOW | …prise/components/onlineEvals/utils/completionWindow.ts | 29 | export function completionWindowDefaultsForScope( | CODE |
| LOW | …prise/components/onlineEvals/utils/completionWindow.ts | 54 | export function completionWindowLimitsForScope( | CODE |
| LOW | …prise/components/onlineEvals/utils/completionWindow.ts | 96 | export function completionWindowConfigFromJob( | CODE |
| LOW | …prise/components/onlineEvals/utils/completionWindow.ts | 118 | export function buildCompletionConfigPayloads( | CODE |
| LOW | …rise/components/onlineEvals/utils/exportScoreConfig.ts | 20 | export function stripScoreConfigForExport(row: ScoreConfig): ExportedScoreConfig { | CODE |
| LOW | …rise/components/onlineEvals/utils/exportScoreConfig.ts | 49 | function normalizeExportHealthyThreshold(ht: any): Record<string, any> | undefined { | CODE |
| LOW | …rise/components/onlineEvals/utils/exportScoreConfig.ts | 65 | export function exportScoreConfigFileName(row: ScoreConfig): string { | CODE |
| LOW | …c/enterprise/components/onlineEvals/utils/jobFilter.ts | 11 | export function createEmptyJobFilterGroup(): V2Group { | CODE |
| LOW | …c/enterprise/components/onlineEvals/utils/jobFilter.ts | 15 | export function normalizeJobFilterCondition(value: any): V2Group { | CODE |
| LOW | …c/enterprise/components/onlineEvals/utils/jobFilter.ts | 115 | export function buildJobFilterConditionPayload(group: V2Group) { | CODE |
| LOW | …c/enterprise/components/onlineEvals/utils/jobFilter.ts | 120 | export function buildOptionalJobConditionPayload(group: V2Group) { | CODE |
| 568 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | web/src/composables/useDashboardPanel.spec.ts | 860 | panel.dashboardPanelData.meta.stream.selectedStreamFields.push( | CODE |
| CRITICAL | web/src/composables/useDashboardPanel.spec.ts | 3156 | panel.dashboardPanelData.meta.stream.selectedStreamFields.push(field); | CODE |
| CRITICAL | web/src/composables/useAlertForm.ts | 1157 | formData.value.query_condition.aggregation.group_by.forEach((field: string) => { | CODE |
| CRITICAL | …ables/dashboard/useDashboardPanel.promqlLabels.spec.ts | 175 | expect(p.dashboardPanelData.meta.promql.labelValuesMap.get("service")).toEqual([ | CODE |
| CRITICAL | …ables/dashboard/useDashboardPanel.promqlLabels.spec.ts | 221 | expect(p.dashboardPanelData.meta.promql.labelValuesMap.get("service")).toEqual(["api-gateway"]); | CODE |
| CRITICAL⚡ | web/src/composables/useLogs/useSearchBar.ts | 1305 | // ] of searchObj.data.queryResults.partitionDetail.partitions.entries()) { | COMMENT |
| CRITICAL⚡ | web/src/composables/useLogs/useSearchBar.ts | 1314 | // searchObj.data.queryResults.partitionDetail.paginations.push( | COMMENT |
| CRITICAL⚡ | web/src/composables/useLogs/useSearchBar.ts | 1317 | // searchObj.data.queryResults.partitionDetail.partitionTotal.push(-1); | COMMENT |
| CRITICAL | web/src/composables/useLogs/useSearchBar.ts | 965 | // // searchObj.data.queryResults.partitionDetail.partitions.forEach( | COMMENT |
| CRITICAL | web/src/composables/useLogs/useSearchBar.ts | 975 | // ] of searchObj.data.queryResults.partitionDetail.partitions.entries()) { | COMMENT |
| CRITICAL | web/src/composables/useLogs/useSearchBar.ts | 1179 | // searchObj.data.queryResults.partitionDetail.paginations.push( | COMMENT |
| CRITICAL | web/src/composables/useLogs/useSearchBar.ts | 1182 | // searchObj.data.queryResults.partitionDetail.partitionTotal.push( | COMMENT |
| CRITICAL | web/src/composables/useLogs/useSearchBar.ts | 1232 | // searchObj.data.queryResults.partitionDetail.paginations.push( | COMMENT |
| CRITICAL | web/src/composables/useLogs/useSearchBar.ts | 1238 | // searchObj.data.queryResults.partitionDetail.partitionTotal.push( | COMMENT |
| CRITICAL | …b/src/composables/useLogs/useSearchHistogramManager.ts | 120 | payload.queryReq.query.sql = searchObj.data.histogramQuery.query.sql.replace( | CODE |
| CRITICAL | web/src/composables/useLogs/useHistogram.ts | 599 | // searchObj.data.queryResults.partitionDetail.partitions.map( | COMMENT |
| CRITICAL | web/src/composables/useLogs/usePagination.ts | 181 | // searchObj.data.queryResults.partitionDetail.partitions.forEach( | COMMENT |
| CRITICAL | web/src/composables/useLogs/usePagination.ts | 196 | ] of searchObj.data.queryResults.partitionDetail.partitions.entries()) { | CODE |
| CRITICAL⚡ | web/src/plugins/traces/SearchResult.vue | 303 | const RGIndex = this.searchObj.data.resultGrid.columns.indexOf(col.name); | CODE |
| CRITICAL⚡ | web/src/plugins/traces/SearchResult.vue | 304 | this.searchObj.data.resultGrid.columns.splice(RGIndex, 1); | CODE |
| CRITICAL⚡ | web/src/plugins/traces/SearchResult.vue | 306 | const SFIndex = this.searchObj.data.stream.selectedFields.indexOf(col.name); | CODE |
| CRITICAL⚡ | web/src/plugins/traces/SearchResult.vue | 308 | this.searchObj.data.stream.selectedFields.splice(SFIndex, 1); | CODE |
| CRITICAL | web/src/plugins/pipelines/PipelineFlow.spec.ts | 280 | wrapper.vm.pipelineObj.currentSelectedPipeline.nodes.push({ id: "1" }); | CODE |
| CRITICAL | web/src/plugins/pipelines/PipelineFlow.spec.ts | 368 | wrapper.vm.pipelineObj.currentSelectedPipeline.nodes.push({ id: "1" }); | CODE |
| CRITICAL | web/src/plugins/logs/Index.vue | 404 | stream_name: this.searchObj.data.stream.selectedStream.join(","), | CODE |
| CRITICAL | web/src/plugins/logs/Index.vue | 440 | stream_name: this.searchObj.data.stream.selectedStream.join(","), | CODE |
| CRITICAL | web/src/plugins/logs/Index.vue | 468 | stream_name: this.searchObj.data.stream.selectedStream.join(","), | CODE |
| CRITICAL | web/src/plugins/logs/Index.vue | 498 | stream_name: this.searchObj.data.stream.selectedStream.join(","), | CODE |
| CRITICAL | web/src/plugins/logs/Index.vue | 899 | (!store.state.logs.logs.data.stream.selectedStream.includes( | CODE |
| CRITICAL | web/src/plugins/logs/Index.vue | 3268 | // this.searchObj.data.stream.selectedStream.hasOwnProperty("value") && | COMMENT |
| CRITICAL | web/src/plugins/logs/SearchResult.vue | 958 | colSizes?.[this.searchObj.data.stream.selectedStream.join(",")]?.[0] || {}; | CODE |
| CRITICAL | web/src/plugins/logs/SearchResult.vue | 959 | this.searchObj.data.resultGrid.colSizes[this.searchObj.data.stream.selectedStream.join(",")] = | CODE |
| CRITICAL | web/src/plugins/logs/SearchResult.vue | 974 | this.searchObj.data.stream.selectedStream.join(",") | CODE |
| CRITICAL | web/src/plugins/logs/SearchResult.vue | 978 | this.searchObj.data.stream.selectedStream.join(",") | CODE |
| CRITICAL | web/src/plugins/logs/SearchResult.vue | 1070 | const RGIndex = this.searchObj.data.resultGrid.columns.findIndex((c: any) => c.id === col.id); | CODE |
| CRITICAL | web/src/plugins/logs/SearchResult.vue | 1071 | if (RGIndex !== -1) this.searchObj.data.resultGrid.columns.splice(RGIndex, 1); | CODE |
| CRITICAL | web/src/utils/alerts/alertValidation.ts | 496 | !input.query_condition.aggregation.having.value.toString().trim().length || | CODE |
| CRITICAL | web/src/components/alerts/AddAlert.spec.ts | 816 | form.state.fieldMeta.name.errors.map((e: any) => (typeof e === "string" ? e : e?.message)), | CODE |
| CRITICAL | web/src/components/alerts/TemplateList.vue | 486 | query.type = router.currentRoute.value.query.type.toString() as string; | CODE |
| CRITICAL | web/src/components/alerts/PreviewAlert.vue | 1429 | props.formData.query_condition.aggregation.having.column.trim() !== ""; | CODE |
| CRITICAL | web/src/components/alerts/steps/CompareWithPast.spec.ts | 688 | parentForm.state.values.query_condition.multi_time_range.map((r: any) => r.offSet), | CODE |
| CRITICAL | …/components/dashboards/addPanel/DrilldownPopUp.spec.ts | 598 | wrapper.vm.drilldownData.data.variables.push({ | CODE |
| CRITICAL | …/components/dashboards/addPanel/DrilldownPopUp.spec.ts | 976 | wrapper.vm.drilldownData.data.variables.push({ | CODE |
| CRITICAL | …omponents/dashboards/addPanel/ColorPaletteDropDown.vue | 130 | <div class="pt-3" v-if="dashboardPanelData.data.config.color.mode.startsWith('continuous')"> | CODE |
| CRITICAL⚡ | …/components/dashboards/addPanel/PanelFieldList.spec.ts | 310 | mockReturn.dashboardPanelData.meta.stream.streamResults.map((s: any) => s.name), | CODE |
| CRITICAL | …nents/dashboards/addPanel/DashboardQueryEditor.spec.ts | 462 | wrapper.vm.dashboardPanelData.data.queries.push({ | CODE |
| CRITICAL | …/components/promql/components/PromQLBuilderOptions.vue | 216 | const streamFields = props.dashboardPanelData.meta.streamFields.groupedFields.find( | CODE |
| CRITICAL | …ews/DatabaseMonitoring/dbmServerMetricsSection.spec.ts | 183 | expect(messages.dbm.detail.serverMetrics.offHint.toLowerCase()).toContain( | CODE |
| CRITICAL | web/src/views/Dashboards/addPanel/AddPanel.spec.ts | 973 | wrapper.vm.dashboardPanelData.data.queries.push(newQuery); | CODE |
| CRITICAL | web/src/views/Dashboards/addPanel/AddPanel.spec.ts | 3760 | wrapper.vm.dashboardPanelData.data.title.trim() === "" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/eslint.config.js | 345 | "placeholder", | CODE |
| LOW | web/eslint.config.js | 575 | input: ["placeholder"], | CODE |
| LOW | web/eslint.config.js | 576 | textarea: ["placeholder"], | CODE |
| LOW | web/src/composables/useSyntheticsRecorder.spec.ts | 1126 | { name: "EMAIL", value: "test@test.com" }, | CODE |
| LOW | web/src/composables/useSyntheticsRecorder.spec.ts | 1137 | expect(sentCmd.steps[1].value).toBe("test@test.com"); | CODE |
| LOW | web/src/composables/useTextHighlighter.spec.ts | 241 | const result = textHighlighter.getSingleSemanticColor("user@example.com", colors); | CODE |
| LOW | web/src/composables/useTextHighlighter.spec.ts | 476 | expect(result).toContain("user@example.com"); | CODE |
| LOW | web/src/composables/useTextHighlighter.spec.ts | 835 | 'Query: SELECT * FROM users WHERE email = "user@example.com" AND status = "active" LIMIT 100'; | CODE |
| LOW | web/src/composables/useTextHighlighter.spec.ts | 844 | expect(result).toContain("user@example.com"); | CODE |
| LOW | web/src/composables/useSelectAutocomplete.spec.ts | 759 | user: { name: "John Doe", email: "john@example.com" }, | CODE |
| LOW | web/src/composables/useLogsHighlighter.spec.ts | 409 | const result = logsHighlighter.detectSemanticType("user@example.com"); | CODE |
| LOW | web/src/composables/useLogsHighlighter.spec.ts | 580 | email: "user@example.com", | CODE |
| LOW | web/src/composables/usePrebuiltDestinations.spec.ts | 321 | recipients: "user@example.com", | CODE |
| LOW | web/src/composables/useSearchInputUsingRegex.spec.ts | 12 | { name: "John Doe", id: 1 }, | CODE |
| LOW | web/src/composables/useSearchInputUsingRegex.spec.ts | 70 | expect(filteredOptions.value.some((option: any) => option.name === "John Doe")).toBe(true); | CODE |
| LOW | web/src/composables/useSearchInputUsingRegex.spec.ts | 93 | expect(filteredOptions.value[0].name).toBe("John Doe"); | CODE |
| LOW | web/src/composables/useSearchInputUsingRegex.spec.ts | 106 | expect(filteredOptions.value.some((option: any) => option.name === "John Doe")).toBe(true); | CODE |
| LOW | web/src/composables/rum/useMobileSessionReplay.ts | 222 | if (w.type === "placeholder") { | CODE |
| LOW | …b/src/composables/useLogs/useTemplateTokenizer.spec.ts | 352 | expect(wildcardLabel("<*>", ["user@example.com", "admin@test.com"])).toBe("email"); | CODE |
| LOW | …b/src/composables/useLogs/useTemplateTokenizer.spec.ts | 419 | expect(inferTypeFromValues(["user@example.com", "admin@test.org"])).toBe("email"); | CODE |
| LOW | web/src/locales/languages/it-IT.json | 1963 | "placeholder": "ad es. ingest-bot", | CODE |
| LOW | web/src/locales/languages/it-IT.json | 11087 | "placeholder": "Scegli un file CSV", | CODE |
| LOW | web/src/locales/languages/it-IT.json | 12290 | "placeholder": "Seleziona tipo di autenticazione", | CODE |
| LOW | web/src/locales/languages/it-IT.json | 12485 | "placeholder": "Seleziona scorer", | CODE |
| LOW | web/src/locales/languages/it-IT.json | 12517 | "placeholder": "Seleziona un valore", | CODE |
| LOW | web/src/locales/languages/ko-KR.json | 1963 | "placeholder": "예: ingest-bot", | CODE |
| LOW | web/src/locales/languages/ko-KR.json | 11087 | "placeholder": "CSV 파일 선택", | CODE |
| LOW | web/src/locales/languages/ko-KR.json | 12290 | "placeholder": "인증 유형 선택", | CODE |
| LOW | web/src/locales/languages/ko-KR.json | 12485 | "placeholder": "스코어러 선택", | CODE |
| LOW | web/src/locales/languages/ko-KR.json | 12517 | "placeholder": "값 선택", | CODE |
| LOW | web/src/locales/languages/es-ES.json | 1963 | "placeholder": "ej. ingest-bot", | CODE |
| LOW | web/src/locales/languages/es-ES.json | 11087 | "placeholder": "Selecciona un archivo CSV", | CODE |
| LOW | web/src/locales/languages/es-ES.json | 12290 | "placeholder": "Seleccionar tipo de autenticación", | CODE |
| LOW | web/src/locales/languages/es-ES.json | 12485 | "placeholder": "Seleccionar evaluadores", | CODE |
| LOW | web/src/locales/languages/es-ES.json | 12517 | "placeholder": "Selecciona un valor", | CODE |
| LOW | web/src/locales/languages/zh-CN.json | 1963 | "placeholder": "例如 ingest-bot", | CODE |
| LOW | web/src/locales/languages/zh-CN.json | 11087 | "placeholder": "选择 CSV 文件", | CODE |
| LOW | web/src/locales/languages/zh-CN.json | 12290 | "placeholder": "选择身份验证类型", | CODE |
| LOW | web/src/locales/languages/zh-CN.json | 12485 | "placeholder": "选择评分器", | CODE |
| LOW | web/src/locales/languages/zh-CN.json | 12517 | "placeholder": "选择一个值", | CODE |
| LOW | web/src/locales/languages/tr-TR.json | 1963 | "placeholder": "ör. ingest-bot", | CODE |
| LOW | web/src/locales/languages/tr-TR.json | 11087 | "placeholder": "Bir CSV dosyası seçin", | CODE |
| LOW | web/src/locales/languages/tr-TR.json | 12290 | "placeholder": "Kimlik Doğrulama Türü Seç", | CODE |
| LOW | web/src/locales/languages/tr-TR.json | 12485 | "placeholder": "Puanlayıcıları Seç", | CODE |
| LOW | web/src/locales/languages/tr-TR.json | 12517 | "placeholder": "Bir değer seçin", | CODE |
| LOW | web/src/locales/languages/pt-PT.json | 1963 | "placeholder": "ex.: ingest-bot", | CODE |
| LOW | web/src/locales/languages/pt-PT.json | 11087 | "placeholder": "Escolha um arquivo CSV", | CODE |
| LOW | web/src/locales/languages/pt-PT.json | 12290 | "placeholder": "Selecione o Tipo de Autenticação", | CODE |
| LOW | web/src/locales/languages/pt-PT.json | 12485 | "placeholder": "Selecionar Avaliadores", | CODE |
| LOW | web/src/locales/languages/pt-PT.json | 12517 | "placeholder": "Selecione um valor", | CODE |
| LOW | web/src/locales/languages/pl-PL.json | 1963 | "placeholder": "np. ingest-bot", | CODE |
| LOW | web/src/locales/languages/pl-PL.json | 11087 | "placeholder": "Wybierz plik CSV", | CODE |
| LOW | web/src/locales/languages/pl-PL.json | 12290 | "placeholder": "Wybierz typ uwierzytelniania", | CODE |
| LOW | web/src/locales/languages/pl-PL.json | 12485 | "placeholder": "Wybierz oceniaczy", | CODE |
| LOW | web/src/locales/languages/pl-PL.json | 12517 | "placeholder": "Wybierz wartość", | CODE |
| LOW | web/src/locales/languages/de-DE.json | 1963 | "placeholder": "z.B. ingest-bot", | CODE |
| LOW | web/src/locales/languages/de-DE.json | 11087 | "placeholder": "CSV-Datei auswählen", | CODE |
| LOW | web/src/locales/languages/de-DE.json | 12290 | "placeholder": "Auth-Typ auswählen", | CODE |
| LOW | web/src/locales/languages/de-DE.json | 12485 | "placeholder": "Scorer auswählen", | CODE |
| LOW | web/src/locales/languages/de-DE.json | 12517 | "placeholder": "Wert auswählen", | CODE |
| 313 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test-data/query-agent/compute_counts.py | 13 | cd tests/test-data/query-agent && python3 compute_counts.py | STRING |
| HIGH | tests/test-data/query-agent/gen_q201_q400.py | 8 | cd tests/test-data/query-agent && python3 gen_q201_q400.py | STRING |
| HIGH | tests/test-data/query-agent/gen_q1003_q1052.py | 10 | cd tests/test-data/query-agent && python3 gen_q1003_q1052.py | STRING |
| HIGH | tests/api-testing/tests/vortex/test_schema_evolution.py | 929 | assert present == 10, f"'present' group (fc not null) must be 10; got {present}" | CODE |
| HIGH⚡ | …ts/api-testing/tests/pipelines/test_js_result_array.py | 26 | if (rows[i].newdata > 50) { filtered.push(rows[i]); } | CODE |
| HIGH⚡ | …ts/api-testing/tests/pipelines/test_js_result_array.py | 29 | for (var i = 0; i < filtered.length; i++) { rows.push(filtered[i]); }""" | CODE |
| HIGH | …ts/api-testing/tests/pipelines/test_js_result_array.py | 124 | rows.push(newRow); | CODE |
| HIGH | …ts/api-testing/tests/pipelines/test_js_result_array.py | 158 | row.doubled = (row.value || 0) * 2;""" | CODE |
| HIGH | …ts/api-testing/tests/pipelines/test_js_result_array.py | 180 | for (var i = 0; i < rows.length; i++) { sum += rows[i].value || 0; } | CODE |
| HIGH⚡ | tests/api-testing/tests/pipelines/test_js_enrichment.py | 178 | """Graceful handling when the enrichment table doesn't exist (should return null).""" | STRING |
| HIGH⚡ | tests/api-testing/tests/pipelines/test_js_enrichment.py | 182 | "if (data === null || data === undefined) { row.status = 'table_not_found'; }\n" | CODE |
| HIGH⚡ | tests/api-testing/tests/pipelines/test_js_enrichment.py | 182 | "if (data === null || data === undefined) { row.status = 'table_not_found'; }\n" | CODE |
| HIGH⚡ | tests/api-testing/tests/pipelines/test_js_enrichment.py | 202 | "if (userData === null || userData === undefined) { row.lookup_result = 'key_not_found'; }\n" | CODE |
| HIGH⚡ | tests/api-testing/tests/pipelines/test_js_enrichment.py | 202 | "if (userData === null || userData === undefined) { row.lookup_result = 'key_not_found'; }\n" | CODE |
| HIGH | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 1257 | # Ingest test data with event_name = null (field set to null) | COMMENT |
| HIGH | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 1363 | # Test passes - pipeline works with event_name=null, data timing is secondary | COMMENT |
| HIGH | …tests/pipelines/test_functions_meta_org_restriction.py | 10 | `isEnterprise || isCloud || org === "_meta"`, baked at build time). Since API | STRING |
| HIGH | …tests/pipelines/test_functions_meta_org_restriction.py | 92 | "function": "row.count = (row.count || 0) + 1;", | CODE |
| HIGH | …tests/pipelines/test_functions_meta_org_restriction.py | 114 | "function": "row.count = (row.count || 0) + 1;", | CODE |
| HIGH | tests/api-testing/tests/search/test_try_cast.py | 30 | # kubernetes_namespace_name is null, and `assert field in hit` would fail | COMMENT |
| HIGH | tests/api-testing/support/panel_queries.py | 221 | null, so a column can legitimately be absent from some rows — or from every | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …e/components/onlineEvals/composables/useQualityData.ts | 154 | // the percentile aggregator skips NULLs, keeping the query robust. | COMMENT |
| MEDIUM | …mponents/alerts/PrebuiltDestinationForm.schema.spec.ts | 20 | // keeps that coverage robust and mount-free. | COMMENT |
| MEDIUM | web/src/lib/core/Button/OButtonGroup.vue | 35 | // seamless single pill). | COMMENT |
| MEDIUM | tests/test-data/query-agent/data_gen.py | 21 | # compute oracle and the test harness share the same BASE_TS. Without | COMMENT |
| MEDIUM | tests/test-data/query-agent/compute_counts.py | 464 | # Persist the BASE_TS so the test harness uses the same value. | COMMENT |
| MEDIUM⚡ | tests/test-data/query-agent/gen_q201_q400.py | 640 | # Multi-level coalesce with CONCAT (june6: comprehensive fallback) | COMMENT |
| MEDIUM | tests/test-data/query-agent/gen_q201_q400.py | 73 | # Multiple aggregate functions with GROUP BY (june6: comprehensive stats) | COMMENT |
| MEDIUM | tests/test-data/query-agent/gen_q201_q400.py | 409 | # Complex LIKE OR chain across 8 fields (june6: comprehensive search) | COMMENT |
| MEDIUM | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 747 | # Edge case tests for comprehensive validation | COMMENT |
| MEDIUM | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 903 | # Ingest comprehensive test data | COMMENT |
| MEDIUM | tests/mobile-testing/utils/maestro.js | 2 | // so flows are robust — no coordinate taps. | COMMENT |
| MEDIUM | …t-tests/RegressionSet/Alerts/alerts-regression.spec.js | 161 | test("Bug #9967: PromQL alert creation - comprehensive validation", { | CODE |
| MEDIUM | …t-tests/RegressionSet/Alerts/alerts-regression.spec.js | 165 | testLogger.info('Testing Bug #9967 fix - comprehensive validation'); | CODE |
| MEDIUM | …t-tests/RegressionSet/Alerts/alerts-regression.spec.js | 269 | testLogger.info('✅ Bug #9967 comprehensive test completed - all scenarios verified'); | CODE |
| MEDIUM | tests/ui-testing/pages/generalPages/sanityPage.js | 1069 | // Click refresh button with robust waits | COMMENT |
| MEDIUM | …ts/ui-testing/pages/generalPages/dateTimePickerPage.js | 45 | // which tab is active — more robust than reading variant-driven classes. | COMMENT |
| MEDIUM | tests/ui-testing/pages/alertsPages/alertManagement.js | 212 | // Target the Delete item by data-test (robust to label/shortcut-hint changes) | COMMENT |
| MEDIUM | tests/ui-testing/pages/alertsPages/alertsPage.js | 1662 | // Close with robust handling for dialog backdrops | COMMENT |
| MEDIUM | tests/ui-testing/pages/alertsPages/alertsPage.js | 1698 | // Close with robust handling for dialog backdrops | COMMENT |
| MEDIUM | tests/ui-testing/pages/reportsPages/reportsPage.js | 113 | // within. More robust than relying on a standalone embedded-name data-test | COMMENT |
| MEDIUM | tests/ui-testing/pages/logsPages/logsPage.js | 3360 | // Use the same robust waiting pattern as clickSavedViewSearchInput(): | COMMENT |
| MEDIUM | tests/ui-testing/pages/logsPages/logsPage.js | 9446 | // Find anomaly column index by header text (more robust than hardcoded index) | COMMENT |
| MEDIUM⚡ | …ts/ui-testing/pages/dashboardPages/dashboard-filter.js | 471 | // New robust function for nested group filter conditions | COMMENT |
| MEDIUM | .github/workflows/pure-api-spec-guard.yml | 5 | # (tests/api-testing/), not the browser harness. Only added/renamed *.spec.js | COMMENT |
| MEDIUM | src/config/src/meta/dashboards/mod.rs | 95 | /// future versions of the dashboard should utilize the `created_at` Unix | COMMENT |
| MEDIUM | src/compaction/src/bloom/builder.rs | 45 | /// `create_tantivy_index` produces a single segment, but this is robust to that changing. | COMMENT |
| MEDIUM | …/enrichment_data/src/enrichment_table/url_processor.rs | 919 | /// Using reqwest for its robust async streaming support and production-ready | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/api-testing/tests/conftest.py | 12 | CODE | |
| LOW | tests/api-testing/tests/conftest.py | 12 | CODE | |
| LOW | tests/api-testing/tests/conftest.py | 12 | CODE | |
| LOW | tests/api-testing/tests/conftest.py | 12 | CODE | |
| LOW | tests/api-testing/tests/test_framework_selfcheck.py | 8 | CODE | |
| LOW | tests/api-testing/tests/test_framework_selfcheck.py | 22 | CODE | |
| LOW | tests/api-testing/tests/test_framework_selfcheck.py | 22 | CODE | |
| LOW | tests/api-testing/tests/vortex/conftest.py | 9 | CODE | |
| LOW | tests/api-testing/tests/vortex/conftest.py | 21 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_api_format.py | 16 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_api_format.py | 24 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_fts.py | 14 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_fts.py | 16 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_fts.py | 24 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_data_integrity.py | 12 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_data_integrity.py | 19 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_performance.py | 13 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_config.py | 11 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_config.py | 22 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_config.py | 22 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_schema_evolution.py | 22 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_schema_evolution.py | 25 | CODE | |
| LOW | tests/api-testing/tests/vortex/test_downsampling.py | 15 | CODE | |
| LOW | …sts/api-testing/tests/vortex/test_format_conversion.py | 22 | CODE | |
| LOW | …sts/api-testing/tests/vortex/test_format_conversion.py | 28 | CODE | |
| LOW | tests/api-testing/tests/ingest/test_bulk.py | 17 | CODE | |
| LOW | tests/api-testing/tests/ingest/test_logs.py | 13 | CODE | |
| LOW | tests/api-testing/tests/rum/test_rum.py | 16 | CODE | |
| LOW | …ts/api-testing/tests/pipelines/test_js_result_array.py | 12 | CODE | |
| LOW | tests/api-testing/tests/pipelines/test_js_enrichment.py | 32 | CODE | |
| LOW | …tests/pipelines/test_functions_meta_org_restriction.py | 1 | CODE | |
| LOW | tests/api-testing/tests/pipelines/test_functions.py | 20 | CODE | |
| LOW | tests/api-testing/tests/pipelines/test_pipeline.py | 29 | CODE | |
| LOW | tests/api-testing/tests/orgs/test_serviceaccounts.py | 18 | CODE | |
| LOW | tests/api-testing/tests/orgs/test_organisations.py | 11 | CODE | |
| LOW | tests/api-testing/tests/orgs/test_ingestion_tokens.py | 17 | CODE | |
| LOW | tests/api-testing/tests/search/test_join_queries.py | 17 | CODE | |
| LOW | tests/api-testing/tests/search/test_fuzzy_match.py | 14 | CODE | |
| LOW | tests/api-testing/tests/search/test_search.py | 2 | CODE | |
| LOW | tests/api-testing/tests/search/test_streaming.py | 34 | CODE | |
| LOW | tests/api-testing/tests/search/test_advanced_sql.py | 18 | CODE | |
| LOW | tests/api-testing/tests/search/test_summary.py | 32 | CODE | |
| LOW | tests/api-testing/tests/search/test_try_cast.py | 13 | CODE | |
| LOW | tests/api-testing/tests/alerts/test_v1.py | 21 | CODE | |
| LOW | tests/api-testing/tests/alerts/conftest.py | 8 | CODE | |
| LOW | tests/api-testing/tests/alerts/test_multialert_api.py | 16 | CODE | |
| LOW | …sts/api-testing/tests/alerts/test_multialert_firing.py | 10 | CODE | |
| LOW | tests/api-testing/tests/alerts/multialert_helpers.py | 16 | CODE | |
| LOW | tests/api-testing/tests/alerts/test_composite_alerts.py | 11 | CODE | |
| LOW | …pi-testing/tests/alerts/test_multialert_transitions.py | 9 | CODE | |
| LOW | tests/api-testing/tests/alerts/test_v2.py | 32 | CODE | |
| LOW | …api-testing/tests/alerts/test_multialert_regression.py | 11 | CODE | |
| LOW | tests/api-testing/tests/dashboards/conftest.py | 7 | CODE | |
| LOW | …/api-testing/tests/dashboards/test_dashboard_panels.py | 16 | CODE | |
| LOW | …-testing/tests/dashboards/test_dashboard_cte_panels.py | 25 | CODE | |
| LOW | tests/api-testing/tests/workflow/test_workflow.py | 3 | CODE | |
| LOW | tests/api-testing/tests/workflow/test_workflow.py | 4 | CODE | |
| LOW | tests/api-testing/tests/workflow/test_workflow.py | 5 | CODE | |
| LOW | tests/api-testing/tests/workflow/test_workflow.py | 6 | CODE | |
| LOW | tests/api-testing/tests/workflow/test_workflow.py | 7 | CODE | |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test-data/query-agent/compute_counts.py | 348 | # Create a pre-filtered view so EVERY query (CTEs, subqueries, etc.) | COMMENT |
| MEDIUM | …i-testing/tests/pipelines/test_enrichment_table_url.py | 45 | # Initialize page object | COMMENT |
| MEDIUM | …i-testing/tests/pipelines/test_enrichment_table_url.py | 87 | # Create the enrichment table (200 means job saved, runs async in background) | COMMENT |
| MEDIUM | …i-testing/tests/pipelines/test_enrichment_table_url.py | 116 | # Create the enrichment table first | COMMENT |
| MEDIUM | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 246 | # Create the pipeline | COMMENT |
| MEDIUM | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 481 | # Create the pipeline | COMMENT |
| MEDIUM | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 1203 | # Create the pipeline | COMMENT |
| MEDIUM | tests/api-testing/tests/pipelines/test_backfill.py | 437 | # Create a pipeline and backfill job | COMMENT |
| MEDIUM | tests/api-testing/tests/pipelines/test_backfill.py | 607 | # Create a pipeline first | COMMENT |
| MEDIUM | tests/api-testing/tests/pipelines/test_backfill.py | 705 | # Create a real pipeline first | COMMENT |
| MEDIUM | tests/api-testing/tests/pipelines/test_backfill.py | 730 | # Create a REALTIME pipeline (not scheduled) | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_dashboards.py | 211 | # Create a dashboard first | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_dashboards.py | 243 | # Create a dashboard first | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_dashboards.py | 670 | # Create a dashboard with panels first | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_dashboards.py | 726 | # Create a dashboard | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_dashboards.py | 792 | # Create a dashboard | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_folders.py | 34 | # Create a dashboards folder | COMMENT |
| MEDIUM | tests/api-testing/tests/dashboards/test_folders.py | 171 | # Create a alerts folder | COMMENT |
| MEDIUM | …api-testing/helpers/workflow/pages/destination_page.py | 63 | skip_tls_verify_value = False # Define the skip_tls_verify_value | CODE |
| MEDIUM | …api-testing/helpers/workflow/pages/destination_page.py | 204 | # Define the payload for the PUT request | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/api-testing/env.sh | 18 | # Check if yq is available (preferred method) | COMMENT |
| LOW | tests/api-testing/env.sh | 35 | # Check if we're entering the env section | COMMENT |
| LOW | tests/api-testing/env.sh | 41 | # Check if we're leaving the env section (next top-level key) | COMMENT |
| LOW | tests/api-testing/tests/rum/test_sourcemap_api.py | 366 | # Check if there are multiple frames (cross-chunk) | COMMENT |
| LOW | …testing/tests/pipelines/test_function_test_endpoint.py | 169 | # Check if error message is present in results | COMMENT |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 354 | # Check if data went to literal template name (indicating substitution failure) | COMMENT |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 554 | # Check if data went to literal template name (indicating substitution failure) | COMMENT |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 1354 | # Check if the stream was created at all | COMMENT |
| LOW | tests/api-testing/tests/search/test_max_query_range.py | 654 | # Set max_query_range to 0 (disabled) | COMMENT |
| LOW | tests/api-testing/tests/search/test_max_query_range.py | 839 | # Set max_query_range to 1 hour | COMMENT |
| LOW | tests/api-testing/tests/alerts/test_history.py | 45 | # Check if triggers stream already exists | COMMENT |
| LOW | …i-testing/tests/dashboards/test_multi_window_vrl_v2.py | 567 | # Check if function_error is reported in metadata | STRING |
| LOW | …api-testing/helpers/workflow/pages/destination_page.py | 294 | # Check if any templates of the specified type exist | COMMENT |
| LOW | …api-testing/helpers/workflow/pages/destination_page.py | 315 | # Check if any templates of the specified type exist | COMMENT |
| LOW | …api-testing/helpers/workflow/pages/destination_page.py | 339 | # Check if any templates of the specified type exist | COMMENT |
| LOW | …/api-testing/helpers/workflow/pages/enrichment_page.py | 36 | # Read the file content as binary | COMMENT |
| LOW⚡ | …/api-testing/helpers/workflow/pages/enrichment_page.py | 187 | # Check if it's keyed by table_name | COMMENT |
| LOW⚡ | …/api-testing/helpers/workflow/pages/enrichment_page.py | 194 | # Check if it's a single status object | COMMENT |
| LOW | …ts/api-testing/helpers/workflow/pages/template_page.py | 180 | # Check if any templates of the specified type exist | COMMENT |
| LOW | …ts/api-testing/helpers/workflow/pages/template_page.py | 201 | # Check if any templates of the specified type exist | COMMENT |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 693 | # Check if any alerts of the specified type exist | COMMENT |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 715 | # Check if any templates of the specified type exist | COMMENT |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 30 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 81 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 132 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 183 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 454 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 504 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 553 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/alert_page.py | 602 | "type": None, # Set it to None or remove it | CODE |
| LOW | tests/ui-testing/env.sh | 18 | # Check if yq is available (preferred method) | COMMENT |
| LOW | tests/ui-testing/env.sh | 35 | # Check if we're entering the env section | COMMENT |
| LOW | tests/ui-testing/env.sh | 41 | # Check if we're leaving the env section (next top-level key) | COMMENT |
| LOW | .github/workflows/playwright.yml | 552 | # Check if directory exists and contains reports | COMMENT |
| LOW | .github/workflows/playwright-auto-rerun.yml | 68 | # Check if gh is already installed | COMMENT |
| LOW | .github/workflows/bug-checker.yml | 99 | # Check if already processed by Bug Checker Agent | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/api-testing/tests/streams/test_settings_dedup.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/ingest/test_metrics.py | 4 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/ingest/test_bulk.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/ingest/test_logs.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/rum/test_sourcemap_api.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/rum/test_sourcemap_rbac.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/rum/test_rum.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | …-testing/tests/pipelines/test_enrichment_table_join.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …ts/api-testing/tests/pipelines/test_js_result_array.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/pipelines/test_js_enrichment.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | …testing/tests/pipelines/test_function_test_endpoint.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | …i-testing/tests/pipelines/test_enrichment_table_url.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/pipelines/test_functions.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/api-testing/tests/pipelines/test_backfill.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/pipelines/test_pipeline.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/orgs/test_serviceaccounts.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/orgs/test_organisations.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/api-testing/tests/orgs/test_ingestion_tokens.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_join_queries.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_fuzzy_match.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_max_query_range.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_search.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_streaming.py | 49 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_streaming.py | 109 | def _set_streaming_enabled(session, base_url: str, enabled: bool) -> None: | CODE |
| LOW | tests/api-testing/tests/search/test_advanced_sql.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_summary.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/search/test_try_cast.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/alerts/test_v1.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/alerts/test_composite_alerts.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/alerts/test_history.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/alerts/test_v2.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/dashboards/conftest.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | …i-testing/tests/dashboards/test_multi_window_vrl_v2.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/dashboards/test_dashboards.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/api-testing/tests/dashboards/test_multi_window_vrl.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …/api-testing/tests/dashboards/test_dashboard_panels.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | …-testing/tests/dashboards/test_dashboard_cte_panels.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | tests/api-testing/tests/dashboards/test_folders.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/workflow/test_org_passcode.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/workflow/test_kvstore.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/users/test_users.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/tests/slos/test_slo_validation.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/support/sse.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/support/panel_queries.py | 33 | __all__ = [ | CODE |
| LOW | tests/api-testing/helpers/sourcemap_helpers.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/api-testing/helpers/workflow/pages/user_page.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | …-testing/helpers/workflow/pages/serviceaccount_page.py | 5 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/coverage.sh | 98 | except Exception as e: | CODE |
| LOW | tests/test-data/query-agent/compute_counts.py | 376 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/ingest/test_bulk.py | 157 | except Exception as e: | CODE |
| LOW⚡ | tests/api-testing/tests/rum/test_sourcemap_api.py | 114 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/rum/test_sourcemap_rbac.py | 99 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/rum/test_sourcemap_rbac.py | 121 | except Exception as e: | CODE |
| LOW | …-testing/tests/pipelines/test_enrichment_table_join.py | 141 | except Exception as e: | CODE |
| LOW⚡ | …i-testing/tests/pipelines/test_enrichment_table_url.py | 66 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/pipelines/test_functions.py | 65 | except Exception as e: | CODE |
| LOW⚡ | tests/api-testing/tests/pipelines/test_backfill.py | 90 | except Exception as e: | CODE |
| LOW⚡ | tests/api-testing/tests/pipelines/test_backfill.py | 100 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/pipelines/test_pipeline.py | 245 | except Exception as e: | CODE |
| LOW | …/api-testing/tests/query_agent/test_explain_analyze.py | 107 | except Exception as e: | CODE |
| LOW | …ts/api-testing/tests/query_agent/test_5_concurrency.py | 131 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/orgs/test_serviceaccounts.py | 65 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/search/test_join_queries.py | 123 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/search/test_streaming.py | 182 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/alerts/test_v1.py | 67 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/alerts/test_composite_alerts.py | 96 | except Exception as exc: # cleanup must not hide the assertion that failed | CODE |
| LOW | tests/api-testing/tests/alerts/test_v2.py | 184 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/alerts/test_v2.py | 189 | except Exception as e: | CODE |
| LOW⚡ | tests/api-testing/tests/alerts/test_v2.py | 231 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/dashboards/conftest.py | 121 | except Exception as e: | CODE |
| LOW | tests/api-testing/tests/dashboards/conftest.py | 166 | except Exception as e: | CODE |
| LOW⚡ | tests/api-testing/tests/slos/test_slo_validation.py | 89 | except Exception as exc: # cleanup must never mask a test result | CODE |
| LOW | …api-testing/tests/regression/test_logs_to_logs_join.py | 115 | except Exception as e: | CODE |
| LOW | tests/api-testing/support/wait.py | 58 | except Exception as e: | CODE |
| LOW | tests/api-testing/support/panel_queries.py | 109 | except Exception as e: | CODE |
| LOW | tests/api-testing/support/fixtures.py | 44 | except Exception as e: | CODE |
| LOW | tests/api-testing/support/fixtures.py | 55 | except Exception as e: | CODE |
| LOW | tests/api-testing/support/fixtures.py | 71 | except Exception as e: | CODE |
| LOW | tests/api-testing/helpers/sourcemap_helpers.py | 236 | except Exception as e: | CODE |
| LOW | tests/api-testing/helpers/sourcemap_helpers.py | 261 | except Exception: | CODE |
| MEDIUM | tests/api-testing/helpers/workflow/pages/alert_page.py | 247 | print(f"Error processing alert {alert}: {str(e)}") | CODE |
| MEDIUM | tests/api-testing/helpers/workflow/pages/alert_page.py | 301 | print(f"Error processing alert {alert}: {str(e)}") | CODE |
| LOW | scripts/translations/translator.py | 569 | except Exception as e: # noqa: BLE001 — network / API / rate-limit errors | CODE |
| LOW | .github/scripts/o2_metrics_resync.py | 40 | except Exception as e: | CODE |
| LOW | .github/scripts/o2_metrics_resync.py | 112 | except Exception as e: | CODE |
| LOW | .github/scripts/parse-api-junit.py | 89 | except Exception as e: # noqa: BLE001 - skip unreadable/partial files | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | web/src/components/O2AIChat.vue | 1671 | // AI-generated chat title state | COMMENT |
| HIGH | web/src/components/O2AIChat.vue | 2363 | // Handle title events - AI-generated chat title from first message | COMMENT |
| HIGH | web/src/components/O2AIChat.vue | 3412 | // Prefer AI-generated title, fallback to default | COMMENT |
| HIGH | web/src/components/O2AIChat.vue | 3558 | resetTitleState(); // Clear AI-generated title for new chat | CODE |
| HIGH | web/src/components/O2AIChat.vue | 5940 | // AI-generated title | COMMENT |
| HIGH | src/config/src/meta/alerts/incidents.rs | 275 | /// AI-generated root cause analysis (markdown) — the current report | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/src/plugins/traces/threadView.utils.spec.ts | 7 | // multipart / agentic injection text) so a future SDK rev doesn't | COMMENT |
| MEDIUM | web/src/plugins/workflows/WorkflowCanvas.vue | 481 | // Trigger + Action start scaffold shows; once ANY node exists we fall back to the | COMMENT |
| MEDIUM | web/src/plugins/workflows/useWorkflowCanvas.ts | 1125 | // The empty-canvas start scaffold's second slot: the same picker restricted to | COMMENT |
| MEDIUM | web/src/plugins/workflows/useWorkflowCanvas.ts | 1299 | // Empty-canvas scaffold "Action first" path: if the user placed the action | COMMENT |
| MEDIUM | web/src/plugins/workflows/useWorkflowCanvas.ts | 1301 | // auto-wire the new trigger into it so the two-node chain the scaffold implied | COMMENT |
| MEDIUM⚡ | web/src/plugins/workflows/useWorkflowCanvas.ts | 1317 | // Empty-canvas scaffold "Action" slot picked: place the workflow's FIRST step. | COMMENT |
| MEDIUM⚡ | web/src/plugins/workflows/useWorkflowCanvas.ts | 1321 | // at the scaffold's action-slot position; adding the trigger afterwards auto-wires | COMMENT |
| MEDIUM⚡ | web/src/plugins/workflows/useWorkflowCanvas.ts | 1322 | // into it (see addTriggerNode). `position` is the click point the scaffold card | COMMENT |
| MEDIUM | web/src/components/workflows/WorkflowEditor.vue | 439 | // Empty-canvas scaffold's Action slot — the workflow's first step (appends after | COMMENT |
| MEDIUM | tests/api-testing/tests/alerts/test_multialert_api.py | 22 | # Save-time guardrails: a multi-alert opt-in is rejected unless it is the | COMMENT |
| MEDIUM | src/core/src/traces/service_graph/processor.rs | 210 | /// of `agent → model`/`agent → tool`. Real agentic traces are single-agent (the | COMMENT |
| MEDIUM | src/core/src/traces/service_graph/processor.rs | 241 | /// agentic traces); `MAX` gives a deterministic pick if that ever fails to hold. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test-data/query-agent/compute_counts.py | 31 | CODE | |
| LOW | tests/test-data/query-agent/compute_counts.py | 191 | CODE | |
| LOW | tests/test-data/query-agent/compute_counts.py | 338 | CODE | |
| LOW | tests/test-data/query-agent/compute_counts.py | 439 | CODE | |
| LOW | tests/test-data/query-agent/compute_counts.py | 212 | CODE | |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 165 | CODE | |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 401 | CODE | |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 607 | CODE | |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 761 | CODE | |
| LOW | …s/api-testing/tests/pipelines/test_pipeline_dynamic.py | 895 | CODE | |
| LOW | tests/api-testing/tests/query_agent/conftest.py | 87 | CODE | |
| LOW | tests/api-testing/tests/query_agent/conftest.py | 134 | CODE | |
| LOW | tests/api-testing/tests/query_agent/conftest.py | 258 | CODE | |
| LOW | tests/api-testing/tests/query_agent/conftest.py | 169 | CODE | |
| LOW | tests/api-testing/tests/search/test_search.py | 1067 | CODE | |
| LOW | tests/api-testing/tests/search/test_search.py | 1147 | CODE | |
| LOW | tests/api-testing/tests/alerts/test_history.py | 38 | CODE | |
| LOW | …i-testing/tests/dashboards/test_multi_window_vrl_v2.py | 125 | CODE | |
| LOW | tests/api-testing/tests/dashboards/test_dashboards.py | 60 | CODE | |
| LOW | tests/api-testing/tests/dashboards/test_dashboards.py | 428 | CODE | |
| LOW | …/api-testing/tests/dashboards/test_multi_window_vrl.py | 389 | CODE | |
| LOW | tests/api-testing/support/sse.py | 72 | CODE | |
| LOW | tests/api-testing/helpers/sourcemap_helpers.py | 223 | CODE | |
| LOW | …/api-testing/helpers/workflow/pages/enrichment_page.py | 204 | CODE | |
| LOW | scripts/translations/translator.py | 382 | CODE | |
| LOW | scripts/translations/translator.py | 751 | CODE | |
| LOW | .github/scripts/o2_metrics_resync.py | 99 | CODE | |
| LOW | .github/scripts/assert_integrity.py | 58 | CODE | |
| LOW | .github/scripts/assert_integrity.py | 88 | CODE | |
| LOW | .github/scripts/assert_integrity.py | 124 | CODE | |
| LOW | .github/scripts/assert_integrity.py | 137 | CODE | |
| LOW | .github/scripts/parse-api-junit.py | 82 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | config/prebuilt-destinations.json | 199 | "Authorization": "GenieKey YOUR_API_KEY" | CODE |
| HIGH | scripts/translations/README.md | 116 | export DEEPSEEK_API_KEY=your_api_key | CODE |
| HIGH | src/infra/src/table/entity/README.md | 7 | Be sure to replace `YOUR_DATABASE_URL` with the database connection string. Alternatively, if you set the environment va | CODE |
| HIGH | src/infra/src/table/entity/README.md | 33 | --database-url YOUR_DATABASE_URL | CODE |
| HIGH | src/config/src/prebuilt_loader.rs | 658 | "GenieKey YOUR_API_KEY".to_string(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/api-testing/helpers/workflow/verifydeleted_objects.py | 0 | verify objects in the openobserve running instance. | STRING |
| HIGH | …s/api-testing/helpers/workflow/verifyedited_objects.py | 0 | verify objects in the openobserve running instance. | STRING |
| HIGH | tests/api-testing/helpers/workflow/verify_objects.py | 0 | verify objects in the openobserve running instance. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/api-testing/env.sh | 6 | # Usage: | COMMENT |
| LOW | tests/ui-testing/env.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/test-assist-ci-batch.sh | 8 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …-testing/tests/pipelines/test_enrichment_table_join.py | 161 | CODE | |
| LOW | tests/api-testing/tests/alerts/test_composite_alerts.py | 42 | CODE | |
| LOW | …api-testing/tests/regression/test_logs_to_logs_join.py | 135 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/ok-to-test.yml | 23 | # See app.yml for an example app manifest - you can use fake URLs when generating | COMMENT |