CNCF Jaeger, a Distributed Tracing Platform
This report presents the forensic synthetic code analysis of jaegertracing/jaeger, a Go project with 22,993 GitHub stars. SynthScan v2.0 examined 199,723 lines of code across 1529 source files, recording 299 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 2.3 places this repository in the Likely human-written 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 299 distinct pattern matches across 13 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⚡ | …al/mcptools/internal/criticalpath/criticalpath_test.go | 17 | // ┌──────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | …al/mcptools/internal/criticalpath/criticalpath_test.go | 19 | // └──┬──────────▲─────────┬──────────▲───┘ | COMMENT |
| MEDIUM⚡ | …al/mcptools/internal/criticalpath/criticalpath_test.go | 22 | // ▼──────────┤ ▼──────────┤ | COMMENT |
| MEDIUM⚡ | …al/mcptools/internal/criticalpath/criticalpath_test.go | 24 | // └──────────┘ └──────────┘ | COMMENT |
| MEDIUM | examples/reverse-proxy/docker-compose.yml | 20 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/reverse-proxy/docker-compose.yml | 22 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/reverse-proxy/docker-compose.yml | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/reverse-proxy/docker-compose.yml | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/reverse-proxy/docker-compose.yml | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/reverse-proxy/docker-compose.yml | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 114 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 145 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 203 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/e2e/ui-reverse-proxy.sh | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 21 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 24 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 124 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 126 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 165 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 169 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 197 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 201 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 229 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 232 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 283 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 289 | # ============================================================================ | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 19 | // ── safeNum ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 34 | // ── sanitizeMetricName ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 79 | // ── sanitizeSnapshots ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 218 | // ── computeMetrics ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 289 | // ── formatMetricsDetail ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 376 | // ── computeCoverage ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 447 | // ── buildCommentBody ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 527 | // ── postCheckRun ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/scripts/ci-summary-report-publish.test.js | 553 | // ── postOrUpdateComment ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/actions/verify-metrics-snapshot/action.yaml | 5 | # ───────────────────────────── | COMMENT |
| MEDIUM⚡ | monitoring/jaeger-mixin/generate/main.go | 72 | // ── Row 1: Collector - Ingestion ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | monitoring/jaeger-mixin/generate/main.go | 77 | // ── Row 2: Collector - Export ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | monitoring/jaeger-mixin/generate/main.go | 82 | // ── Row 3: Storage ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | monitoring/jaeger-mixin/generate/main.go | 87 | // ── Row 4: Query ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | monitoring/jaeger-mixin/generate/main.go | 92 | // ── Row 5: System ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | monitoring/jaeger-mixin/generate/main.go | 147 | // ── Collector - Ingestion ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | monitoring/jaeger-mixin/generate/main.go | 177 | // ── Collector - Export ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | monitoring/jaeger-mixin/generate/main.go | 207 | // ── Storage ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | monitoring/jaeger-mixin/generate/main.go | 228 | // ── Query ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | monitoring/jaeger-mixin/generate/main.go | 249 | // ── System ──────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .fossa.yml | 1 | # Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | doc.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | .mockery.header.txt | 1 | // Copyright (c) The Jaeger Authors. | COMMENT |
| LOW | cmd/jaeger/builder.yaml | 1 | # Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | …nternal/extension/jaegerquery/internal/query_parser.go | 81 | COMMENT | |
| LOW | …nternal/extension/jaegerquery/internal/query_parser.go | 201 | // Why the API is designed using an end time (endTs) and lookback: | COMMENT |
| LOW | …nternal/extension/jaegerquery/internal/query_parser.go | 221 | // | COMMENT |
| LOW | …nternal/extension/jaegerquery/internal/query_parser.go | 321 | // - "unspecified": when no span kind specified in span. | COMMENT |
| LOW | …aeger/internal/extension/jaegerquery/internal/flags.go | 41 | // by DefaultQueryOptions via configoptional.Default, and a user's partial | COMMENT |
| LOW | …aeger/internal/extension/jaegerquery/internal/flags.go | 61 | // the UI. Set to 0 to disable the health checker (advertised capability | COMMENT |
| LOW | …eger/internal/extension/jaegerquery/internal/ui/doc.go | 1 | // Copyright (c) 2018 The Jaeger Authors. | COMMENT |
| LOW | …nternal/mcptools/internal/criticalpath/criticalpath.go | 21 | // The algorithm begins with the top-level span and iterates through the last finishing children (LFCs). | COMMENT |
| LOW | …nal/extension/jaegerquery/internal/jaegerai/handler.go | 21 | "github.com/jaegertracing/jaeger/internal/telemetry/otelsemconv" | COMMENT |
| LOW | …/extension/jaegerquery/internal/jaegerai/dispatcher.go | 21 | // returns an immediate `{acknowledged: true}` ack. The browser observes | COMMENT |
| LOW | …/extension/jaegerquery/internal/jaegerai/dispatcher.go | 41 | // in ContextualToolsStore for any callbacks that come back. | COMMENT |
| LOW | …/extension/jaegerquery/internal/jaegerai/dispatcher.go | 61 | Result any `json:"result"` | COMMENT |
| LOW | …/extension/jaegerquery/internal/jaegerai/dispatcher.go | 121 | // response. | COMMENT |
| LOW | …/extension/jaegerquery/internal/jaegerai/dispatcher.go | 141 | // frontend exposes. | COMMENT |
| LOW | …sion/jaegerquery/internal/jaegerai/contextual_tools.go | 1 | // Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | …sion/jaegerquery/internal/jaegerai/contextual_tools.go | 21 | // corrupt the stored snapshot by mutating decoded maps. | COMMENT |
| LOW | …ion/jaegerquery/internal/jaegerai/trace_propagation.go | 1 | // Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | …nsion/jaegerquery/internal/jaegerai/session_streams.go | 21 | // handler mints a session id when it opens a turn, registers the stream and the | COMMENT |
| LOW | …extension/jaegerquery/internal/jaegerai/translation.go | 41 | } else { | COMMENT |
| LOW | …extension/jaegerquery/internal/jaegerai/translation.go | 221 | COMMENT | |
| LOW | …sion/jaegerquery/internal/jaegerai/streaming_client.go | 21 | COMMENT | |
| LOW | …sion/jaegerquery/internal/jaegerai/streaming_client.go | 181 | c.emit(aguievents.NewToolCallEndEvent(toolCallID)) | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/mcp_ui_tools.go | 21 | methodCallTool = "tools/call" | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/mcp_endpoint.go | 21 | // "/api/ai/mcp/" pattern jaeger-query mounts, so all three coexist on one mux: | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/mcp_endpoint.go | 41 | type sessionIDContextKey struct{} | COMMENT |
| LOW | …on/jaegerquery/internal/jaegerai/aihealth/acp_check.go | 21 | // probe-connection lifecycle. The SDK logs every disconnect at INFO via | COMMENT |
| LOW | …l/extension/jaegerquery/internal/adjuster/clockskew.go | 21 | warningSkewAdjustDisabled = "clock skew adjustment disabled; not applying calculated delta of %v" | COMMENT |
| LOW | …ger/internal/extension/jaegerquery/querysvc/service.go | 81 | adjuster.StandardAdjusters(options.MaxClockSkewAdjust)..., | COMMENT |
| LOW | …ger/internal/extension/jaegerquery/querysvc/service.go | 161 | // FindTraceSummaries searches for traces matching the query and returns an iterator | COMMENT |
| LOW | cmd/internal/flags/doc.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | cmd/internal/printconfig/command_test.go | 1 | // Copyright (c) 2024 The Jaeger Authors. | COMMENT |
| LOW | cmd/remote-storage/config.yaml | 21 | # Multi-tenancy configuration (optional) | COMMENT |
| LOW | internal/metrics/package.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | internal/tools/empty.go | 1 | // Copyright (c) 2024 The Jaeger Authors. | COMMENT |
| LOW | internal/converter/doc.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | internal/converter/thrift/doc.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | internal/converter/thrift/jaeger/doc.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | internal/proto-gen/storage/v2/trace_storage.pb.go | 1421 | // is compatible with the grpc package it is being compiled against. | COMMENT |
| LOW | internal/proto-gen/storage/v2/trace_storage.pb.go | 1441 | GetServices(ctx context.Context, in *GetServicesRequest, opts ...grpc.CallOption) (*GetServicesResponse, error) | COMMENT |
| LOW | internal/proto-gen/storage/v2/trace_storage.pb.go | 1601 | COMMENT | |
| LOW | internal/proto-gen/storage/v2/trace_storage.pb.go | 1621 | // FindTraces returns a stream that retrieves traces matching query parameters. | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 21 | // This is a compile-time assertion to ensure that this generated file | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 41 | // remote_endpoint is the server. | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 101 | // producers and consumers. However, they can also represent in-process | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 121 | // Randomly generated, unique identifier for a trace, set on all spans within | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 141 | // Epoch microseconds of the start of this span, possibly absent if | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 161 | // The host that recorded this span, primarily for query by service name. | COMMENT |
| LOW | internal/proto-gen/zipkin/zipkin.pb.go | 381 | COMMENT | |
| LOW | internal/proto-gen/api_v2/metrics/otelspankind.pb.go | 21 | // proto package needs to be updated. | COMMENT |
| LOW | internal/sampling/samplingstrategy/adaptive/options.go | 21 | // and the system does not need to send an updated sampling probability (the "control signal" u(t) | COMMENT |
| LOW | internal/sampling/samplingstrategy/adaptive/options.go | 41 | BucketsForCalculation int `mapstructure:"calculation_buckets"` | COMMENT |
| LOW | …ationstrategy/percentage_increase_capped_calculator.go | 1 | // Copyright (c) 2018 The Jaeger Authors. | COMMENT |
| LOW | internal/sampling/http/handler_test.go | 81 | // handler must emit metrics | COMMENT |
| LOW | internal/storage/v1/api/doc.go | 1 | // Copyright (c) 2019 The Jaeger Authors. | COMMENT |
| LOW | internal/storage/v1/api/metricstore/interface.go | 21 | // GetErrorRates gets the error rate metrics for a given list of services grouped by service | COMMENT |
| LOW | internal/storage/v1/api/metricstore/interface.go | 41 | // RatePer is the duration in which the per-second rate of change is calculated for a cumulative counter metric. | COMMENT |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/ai-sidecar/gemini/test_tracing.py | 18 | def test_extract_trace_context_with_valid_traceparent_parents_under_it() -> None: | CODE |
| LOW⚡ | scripts/ai-sidecar/gemini/test_tracing.py | 29 | def test_extract_trace_context_with_no_meta_returns_current_context() -> None: | CODE |
| LOW⚡ | scripts/ai-sidecar/gemini/test_tracing.py | 36 | def test_extract_trace_context_with_non_dict_meta_returns_current_context() -> None: | CODE |
| LOW⚡ | scripts/ai-sidecar/gemini/test_tracing.py | 41 | def test_extract_trace_context_with_empty_meta_returns_current_context() -> None: | CODE |
| LOW⚡ | scripts/ai-sidecar/gemini/test_tracing.py | 46 | def test_extract_trace_context_ignores_unrelated_meta_keys() -> None: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar_helpers.py | 37 | def _extract_contextual_tools(meta: Any) -> list[dict[str, Any]]: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar_helpers.py | 57 | def _build_gemini_contextual_tool(contextual_tools: list[dict[str, Any]]) -> types.Tool | None: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar_helpers.py | 103 | def _extract_function_declaration(tool: Any) -> types.FunctionDeclaration | None: | CODE |
| LOW | scripts/ai-sidecar/gemini/test_sidecar_workflow.py | 243 | def test_complete_acp_workflow_with_fake_agent() -> None: | CODE |
| LOW | scripts/lint/dco_check.py | 363 | def get_common_ancestor_commit_hash( | CODE |
| LOW | scripts/lint/dco_check.py | 406 | def get_default_branch_from_remote( | CODE |
| LOW | scripts/lint/import-order-cleanup.py | 8 | def cleanup_imports_and_return(imports): | CODE |
| LOW | scripts/lint/updateLicense.py | 76 | def build_constraint_end_index(): | CODE |
| LOW | scripts/utils/compare_metrics.py | 30 | def extract_metrics_with_labels(metrics, strip_prefix=None): | CODE |
| LOW | scripts/utils/compare_metrics.py | 44 | def remove_overlapping_metrics(all_in_one_data, other_json_data): | CODE |
| LOW | scripts/utils/metrics-md.py | 7 | def generate_spans_markdown_table(v1_spans, v2_spans): | CODE |
| LOW | scripts/utils/metrics-md.py | 35 | def generate_combined_markdown_table(common_metrics, v1_metrics, v2_metrics): | CODE |
| LOW | scripts/release/formatter.py | 8 | def extract_section_from_file(file_path, start_marker, end_marker): | CODE |
| LOW | scripts/release/notes.py | 72 | def num_commits_since_prev_tag(token, base_url, branch, verbose): | CODE |
| LOW | scripts/e2e/compare_metrics.py | 71 | def suppress_transient_labels(metric_name, labels): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 57 | def test_extracts_name_before_braces(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 60 | def test_returns_bare_name_when_no_braces(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 70 | def test_empty_input_returns_empty(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 73 | def test_pure_removals_are_truncated(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 79 | def test_pure_additions_are_truncated(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 85 | def test_interleaves_removed_and_added_lines(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 96 | def test_interleaved_truncation_adds_ellipsis(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 105 | def test_no_ellipsis_when_within_limit(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 114 | def test_parses_added_removed_and_modified(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 131 | def test_accumulates_exclusion_counts(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 139 | def test_zero_exclusion_count_when_no_exclusion_lines(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 147 | def test_raw_diff_sections_populated(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 183 | def test_total_changes_header_present(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 192 | def test_added_section_rendered(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 202 | def test_removed_section_rendered(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 212 | def test_modified_section_rendered(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 222 | def test_diff_sample_block_present_for_changed_metric(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 231 | def test_exclusion_count_shown(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 255 | def test_metric_names_list_sorted(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 265 | def test_metric_names_deduped(self): | CODE |
| LOW⚡ | scripts/e2e/metrics_summary_test.py | 274 | def test_added_only_produces_correct_output(self): | CODE |
| LOW | scripts/e2e/compare_metrics_test.py | 45 | def test_identical_snapshots_returns_empty(self): | STRING |
| LOW | scripts/e2e/compare_metrics_test.py | 50 | def test_empty_snapshots_returns_empty(self): | STRING |
| LOW | scripts/e2e/compare_metrics_test.py | 63 | def test_new_metric_in_current_snapshot_produces_diff(self): | STRING |
| LOW | scripts/e2e/compare_metrics_test.py | 77 | def test_exclusion_count_difference_does_not_produce_diff(self): | STRING |
| LOW⚡ | scripts/e2e/compare_metrics_test.py | 93 | def test_mixed_regression_and_new_metric_returns_diff(self): | STRING |
| LOW⚡ | scripts/e2e/compare_metrics_test.py | 103 | def test_regression_with_exclusions_includes_exclusion_summary(self): | STRING |
| LOW⚡ | scripts/e2e/compare_metrics_test.py | 111 | def test_no_exclusions_means_no_exclusion_summary(self): | STRING |
| LOW⚡ | scripts/e2e/compare_metrics_test.py | 120 | def test_excluded_labels_are_dropped(self): | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/otel-demo/generate_traces.py | 29 | except Exception as e: | CODE |
| LOW | examples/oci/load-generator/generate_traces.py | 24 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar.py | 266 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar.py | 304 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar.py | 424 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar.py | 506 | except Exception: | CODE |
| LOW | scripts/ai-sidecar/gemini/ws_commands.py | 25 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/ws_commands.py | 41 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/mcp_bridge.py | 61 | except Exception as exc: | CODE |
| LOW | scripts/ai-sidecar/gemini/mcp_bridge.py | 105 | except Exception as e: | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar_helpers.py | 99 | except Exception: | CODE |
| LOW | scripts/lint/updateLicense.py | 175 | except Exception as error: | CODE |
| MEDIUM | scripts/utils/compare_metrics.py | 123 | print(f"Error running metrics_md.py: {e}") | CODE |
| LOW⚡ | scripts/release/formatter.py | 56 | except Exception as e: | CODE |
| LOW⚡ | scripts/release/formatter.py | 63 | except Exception as e: | CODE |
| LOW⚡ | scripts/release/formatter.py | 69 | except Exception as e: | CODE |
| MEDIUM | scripts/release/update-changelog.py | 58 | print("Error: Could not find template end marker", file=sys.stderr) | CODE |
| MEDIUM | scripts/release/rotate-managers.py | 43 | print("Error: Could not find release managers table", file=sys.stderr) | CODE |
| MEDIUM | scripts/release/rotate-managers.py | 56 | print("Error: No data lines found in release managers table", file=sys.stderr) | CODE |
| MEDIUM⚡ | scripts/release/rotate-managers.py | 80 | print("Error: Could not find any valid versions in the table", file=sys.stderr) | CODE |
| MEDIUM⚡ | scripts/release/rotate-managers.py | 90 | print(f"Error: First data row is malformed (expected at least 2 columns): {first_row}", file=sys.stderr) | CODE |
| LOW | scripts/e2e/metrics_summary.sh | 198 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/config/tlscfg/testdata/gen-certs.sh | 92 | # Creating the client and server certificate. | COMMENT |
| MEDIUM | …al/storage/v1/cassandra/schema/migration/V002toV003.sh | 6 | # Create a new operation_names_v2 table and copy all data from operation_names table | COMMENT |
| MEDIUM | scripts/release/prepare.sh | 63 | # Create a new branch | COMMENT |
| MEDIUM | scripts/release/prepare.sh | 155 | # Create the PR | COMMENT |
| MEDIUM | scripts/release/update-changelog.py | 61 | # Create the new changelog section | COMMENT |
| MEDIUM⚡ | scripts/release/rotate-managers.py | 94 | # Create the new row for the bottom | COMMENT |
| MEDIUM | .github/actions/verify-metrics-snapshot/action.yaml | 81 | # Create an empty stub so the diff artifact is always uploaded on PRs. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/otel-demo/deploy-all.sh | 282 | # Check if ingress files exist | COMMENT |
| LOW | scripts/lint/dco_check.py | 68 | # Set default to env var value if it exists | COMMENT |
| LOW | scripts/lint/dco_check.py | 753 | # Check if base revision is provided to the environment, e.g. | COMMENT |
| LOW | scripts/lint/dco_check.py | 808 | # Check if pull request | COMMENT |
| LOW | scripts/lint/dco_check.py | 868 | # Check if pull request | COMMENT |
| LOW | scripts/lint/dco_check.py | 1037 | # Check if the commit should be ignored because of the commit author email | COMMENT |
| LOW | scripts/lint/dco_check.py | 1043 | # Check if the commit should be ignored because of the commit author email pattern | COMMENT |
| LOW | scripts/lint/dco_check.py | 1185 | # Check if there are any infractions | COMMENT |
| LOW | scripts/release/prepare.sh | 80 | # Verify if the directory exists and is not empty | COMMENT |
| LOW | scripts/release/notes.py | 168 | # Check if the pull request has changelog label | COMMENT |
| LOW | scripts/e2e/spm.sh | 192 | # Check if this operation is in the expected list | COMMENT |
| LOW | scripts/e2e/compare_metrics.py | 202 | # Check if there are any differences | COMMENT |
| LOW | scripts/e2e/metrics_summary.py | 38 | # Check if this line contains a metric change | COMMENT |
| LOW | scripts/e2e/metrics_summary.sh | 137 | # Output results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …nal/extension/jaegerquery/internal/jaegerai/handler.go | 294 | // agentic-loop spans under this request's span, joining what would | COMMENT |
| MEDIUM | …/extension/jaegerquery/internal/jaegerai/dispatcher.go | 120 | // Gemini's agentic loop continues with a "tool dispatched" function | COMMENT |
| MEDIUM | …ion/jaegerquery/internal/jaegerai/trace_propagation.go | 16 | // a sidecar that extracts it parents its own agentic-loop spans under this | COMMENT |
| MEDIUM | scripts/ai-sidecar/README.md | 59 | ### Step 3 — Replace the agentic loop | COMMENT |
| MEDIUM | scripts/ai-sidecar/gemini/sidecar.py | 73 | # (shape: {name, description?, parameters?}). The agentic loop uses | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/ai-sidecar/gemini/sidecar.py | 309 | CODE | |
| LOW | scripts/lint/dco_check.py | 663 | CODE | |
| LOW | scripts/lint/import-order-cleanup.py | 42 | CODE | |
| LOW | scripts/lint/updateLicense.py | 30 | CODE | |
| LOW | scripts/utils/compare_metrics.py | 44 | CODE | |
| LOW | scripts/release/notes.py | 108 | CODE | |
| LOW | scripts/release/rotate-managers.py | 32 | CODE | |
| LOW | scripts/release/draft.py | 54 | CODE | |
| LOW | scripts/e2e/filter_coverage.py | 16 | CODE | |
| LOW | scripts/e2e/compare_metrics.py | 45 | CODE | |
| LOW | scripts/e2e/compare_metrics.py | 71 | CODE | |
| LOW | scripts/e2e/metrics_summary.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/ai-sidecar/gemini/tracing.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/ai-sidecar/gemini/sidecar.py | 51 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/ai-sidecar/gemini/ws_commands.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/ai-sidecar/gemini/mcp_bridge.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/ai-sidecar/gemini/main.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/lint/dco_check.py | 236 | def set_options(self, args: argparse.Namespace) -> None: | CODE |
| LOW | scripts/lint/dco_check.py | 281 | def set_options(self, options: Options) -> None: | CODE |
| LOW | scripts/lint/updateLicense.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | scripts/release/update-changelog.py | 46 | def update_changelog(version: str, release_date: str, changelog_content: str, ui_changelog: str = None) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/storage/v2/grpc/README.md | 25 | ### Step 1: Clone the Jaeger Repository | COMMENT |
| LOW | internal/storage/v2/grpc/README.md | 34 | ### Step 2: Run the Integration Tests | COMMENT |
| LOW | examples/oci/README.md | 61 | ### Step 1: Deploy the NGINX Ingress Controller | COMMENT |
| LOW | examples/oci/README.md | 73 | ### Step 2: Verify the Ingress Controller | COMMENT |
| LOW | examples/oci/README.md | 92 | ### Step 3: Apply the Ingress Resource | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/jaeger/builder.yaml | 9 | # Usage: | COMMENT |
| LOW | scripts/lint/check-line-endings.py | 12 | # Usage: | COMMENT |
| LOW | scripts/e2e/filter_coverage.py | 8 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …r/internal/extension/jaegerquery/internal/ui/assets.go | 28 | return httpfs.PrefixedFS("placeholder", http.FS(placeholderAssetsFS)) | CODE |
| LOW | docs/adr/009-ui-base-path-auto-detection.md | 326 | 4. Deep-link: `GET /external/trace/<dummy-id>` → 200, serves `index.html` with inline script. | CODE |
| LOW | docs/rfc/0002-ai-gateway-contextual-tools.md | 356 | - Dispatcher's ext_method handler switches from "placeholder" to | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/ai-sidecar/gemini/test_tracing.py | 4 | CODE | |
| LOW | scripts/ai-sidecar/gemini/test_sidecar_workflow.py | 4 | CODE |