CNCF Jaeger, a Distributed Tracing Platform
This report summarizes scanner evidence for jaegertracing/jaeger, a Go project with 23,360 GitHub stars. SynthScan examined 274,375 lines of code across 1834 source files, recording 524 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 2.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 409 finding(s).
Are imports declared and package/API names verified? 42 finding(s).
Are wrappers, guards, and repeated structures necessary? 204 finding(s).
Which changes need focused human review? 524 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 524 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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/config-kafka-ingester-sync.yaml | 1 | # Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | cmd/jaeger/config.yaml | 41 | ui: | COMMENT |
| LOW | cmd/jaeger/config-kafka-ingester-dead-letter.yaml | 1 | # Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | cmd/jaeger/config-kafka-ingester-dead-letter.yaml | 21 | # in the connector's sending queue (no pipeline `batch` processor), offsets are marked | COMMENT |
| LOW | cmd/jaeger/config-kafka-ingester-dead-letter.yaml | 141 | # min_size must be positive: at 0 the batcher flushes every record as it | COMMENT |
| LOW | cmd/jaeger/builder.yaml | 1 | # Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | cmd/jaeger/internal/extension/jaegerquery/config.go | 21 | type Config struct { | COMMENT |
| LOW | …nal/extension/jaegerquery/queryinterceptor/resolver.go | 1 | // Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | …nternal/extension/jaegerquery/internal/query_parser.go | 81 | // - The minimum step size for Prometheus-compliant metrics backends is 1ms, | COMMENT |
| LOW | …nternal/extension/jaegerquery/internal/query_parser.go | 201 | } | COMMENT |
| LOW | …al/extension/jaegerquery/internal/route_tag_handler.go | 21 | // | COMMENT |
| LOW | …ernal/extension/jaegerquery/internal/static_handler.go | 41 | // BackendCapabilities is the JSON shape injected into index.html via the | COMMENT |
| LOW | …eger/internal/extension/jaegerquery/internal/ui/doc.go | 1 | // Copyright (c) 2018 The Jaeger Authors. | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/mcptools/params.go | 21 | // mcpSessionTimeout caps an idle MCP session when the handler keeps sessions | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/mcptools/params.go | 41 | // are served. | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/mcptools/params.go | 61 | DisableLocalhostProtection bool `mapstructure:"disable_localhost_protection" valid:"optional"` | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/mcptools/server.go | 101 | // shared telemetry server. The HTTP shell captures the server by pointer, so | COMMENT |
| LOW | …/extension/jaegerquery/internal/mcptools/middleware.go | 201 | data, err := json.Marshal(result) | 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 | …ion/jaegerquery/internal/jaegerai/endpoint_turn_mcp.go | 21 | // "/api/ai/mcp/" pattern jaeger-query mounts, so all three coexist on one mux: | COMMENT |
| LOW | …tension/jaegerquery/internal/jaegerai/endpoint_chat.go | 21 | ) | COMMENT |
| LOW | …tension/jaegerquery/internal/jaegerai/endpoint_chat.go | 41 | mcpBaseURL string | COMMENT |
| LOW | …tension/jaegerquery/internal/jaegerai/endpoint_chat.go | 201 | defer closeACPSession(ctx, acpConn, init.AgentCapabilities, sess.SessionId, h.Logger) | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/jaegerai/config.go | 41 | // nothing else on the query port: the chat endpoint, the shared MCP endpoint, | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/jaegerai/config.go | 61 | // handshake, for agents that require authentication. The header name is the | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/jaegerai/config.go | 81 | // the UI. Set to 0 to disable the health checker (advertised capability | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/jaegerai/config.go | 101 | // single-host deployment, which then needs no configuration at all (see | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/jaegerai/config.go | 161 | return nil | COMMENT |
| LOW | …rnal/extension/jaegerquery/internal/jaegerai/config.go | 261 | // name-resolution path without depending on what DNS or /etc/hosts happens to answer | COMMENT |
| LOW | …ion/jaegerquery/internal/jaegerai/trace_propagation.go | 1 | // Copyright (c) 2026 The Jaeger Authors. | COMMENT |
| LOW | …extension/jaegerquery/internal/jaegerai/translation.go | 201 | } | COMMENT |
| LOW | …extension/jaegerquery/internal/jaegerai/translation.go | 221 | // JSON string suitable for TOOL_CALL_ARGS.delta. AG-UI streams args as | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/http_handler.go | 21 | // mux (see RegisterRoutes). | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/http_handler.go | 41 | // of the chat parameters. | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/http_handler.go | 81 | logger: p.Logger, | COMMENT |
| LOW | …sion/jaegerquery/internal/jaegerai/streaming_client.go | 21 | COMMENT | |
| LOW | …sion/jaegerquery/internal/jaegerai/streaming_client.go | 201 | // prompt). | COMMENT |
| LOW | …sion/jaegerquery/internal/jaegerai/streaming_client.go | 321 | // closeACPSession is a best-effort cleanup hook: it tells the agent to | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/mcp_ui_tools.go | 21 | // aggregators use for sub-domain prefixes and keeps a coincidental clash with a | COMMENT |
| LOW | …xtension/jaegerquery/internal/jaegerai/mcp_ui_tools.go | 41 | // turn declared it, the bare name is dispatched to the browser over its SSE | COMMENT |
| LOW | …tension/jaegerquery/internal/jaegerai/turn_registry.go | 21 | COMMENT | |
| LOW | …on/jaegerquery/internal/jaegerai/aihealth/acp_check.go | 21 | // silentACPLogger discards the ACP SDK's internal diagnostics for the | 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 | 141 | } | COMMENT |
| LOW | …ger/internal/extension/jaegerquery/querysvc/service.go | 261 | func (qs QueryService) SearchWithoutServiceName(ctx context.Context) (bool, error) { | COMMENT |
| LOW | …ger/internal/extension/jaegerquery/querysvc/service.go | 321 | } | COMMENT |
| LOW | …internal/extension/jaegerquery/querysvc/interceptor.go | 41 | // onTraceQuery runs every interceptor's OnTraceQuery in order, threading the context each returns into the | COMMENT |
| LOW | …eger/internal/extension/jaegerquery/querysvc/errors.go | 21 | // backend whose reader does not accept one (RFC 0013 §3.3). It names the backend's | COMMENT |
| LOW | …/jaeger/internal/exporters/storageexporter/exporter.go | 61 | // per-request cap. The two are measured differently: the batcher sizes a batch in | COMMENT |
| LOW | …jaeger/internal/exporters/storageexporter/connector.go | 21 | "github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore" | COMMENT |
| LOW | …jaeger/internal/exporters/storageexporter/connector.go | 41 | // reaching writeTraces. That is what couples a Kafka offset to durability in the | COMMENT |
| LOW | …jaeger/internal/exporters/storageexporter/connector.go | 121 | // The storage rejected documents it could not attribute to a span, so they | COMMENT |
| LOW | …jaeger/internal/exporters/storageexporter/connector.go | 161 | // spanKey identifies a span by the ids the storage reports a rejection with. | COMMENT |
| LOW | cmd/jaeger/internal/integration/binary.go | 81 | t.Logf("%s is ready", b.Name) | COMMENT |
| LOW | cmd/jaeger/internal/integration/integration_harness.go | 81 | // the ordinary suites range over the numeric sub-field; the backward-compatibility scenarios set | COMMENT |
| LOW | cmd/jaeger/internal/integration/integration_harness.go | 101 | // coverage for every test that ran afterwards. | COMMENT |
| LOW | cmd/jaeger/internal/telemetryfactory/factory.go | 21 | COMMENT | |
| 168 more matches not shown… | ||||
| 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 | 200 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 204 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 235 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 245 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 296 | # ============================================================================ | COMMENT |
| MEDIUM | .github/workflows/ci-orchestrator.yml | 302 | # ============================================================================ | 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⚡ | sdk/python/tests/test_expression.py | 34 | def test_an_unqualified_attribute_is_an_attr_term(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 44 | def test_a_level_qualified_attribute_carries_its_level(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 52 | def test_a_builtin_field_is_a_field_term_and_always_carries_a_level(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 79 | def test_a_comparison_reads_two_references_as_readily_as_one(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 89 | def test_attributes_of_two_levels_compare(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 99 | def test_a_correlated_event_query_quantifies_over_a_nested_term(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 213 | def test_a_single_predicate_needs_no_boolean_wrapper(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 219 | def test_repeating_one_combinator_builds_a_flat_n_ary_call(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 226 | def test_a_mix_of_combinators_still_nests(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 236 | def test_every_level_is_reachable_and_names_itself(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 271 | def test_each_level_carries_exactly_the_fields_the_data_model_defines(level, names): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 277 | def test_a_field_the_data_model_does_not_define_cannot_be_written(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 286 | def test_a_field_with_no_ordering_has_no_ordering_operators(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 294 | def test_the_closed_value_sets_are_published(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 300 | def test_only_a_collection_level_can_be_quantified_over(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 310 | def test_a_scalar_declares_no_type_unless_a_caller_sets_one(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 319 | def test_a_list_declares_no_element_type_of_its_own(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 330 | def test_a_mixed_list_carries_the_text_of_each_element(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 336 | def test_a_list_can_state_its_own_type(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 342 | def test_an_empty_list_is_refused(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 347 | def test_an_unsupported_python_value_is_refused(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 355 | def test_the_filter_is_a_bare_call_while_its_arguments_are_wrapped(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 362 | def test_the_terms_are_readable_when_printed(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 371 | def test_the_base_node_leaves_its_hook_to_subclasses(): | CODE |
| LOW⚡ | sdk/python/tests/test_expression.py | 376 | def test_a_combinator_needs_a_predicate(): | CODE |
| LOW | sdk/python/tests/test_expression.py | 159 | def test_every_operator_has_a_spelling(predicate, op): | CODE |
| LOW | sdk/python/tests/test_expression.py | 163 | def test_boolean_combinators_nest(): | CODE |
| LOW | sdk/python/tests/test_query.py | 19 | def test_a_query_renders_its_envelope_and_filter(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 58 | def test_repeated_where_calls_are_conjoined_once(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 66 | def test_a_single_predicate_is_the_filter_itself(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 72 | def test_a_query_is_reusable_because_each_step_returns_a_new_one(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 81 | def test_the_legacy_predicate_fields_still_render(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 111 | def test_a_filter_cannot_be_mixed_with_a_legacy_predicate_field(legacy): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 118 | def test_a_zero_duration_bound_still_counts_as_a_legacy_field(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 127 | def test_an_empty_attributes_map_sets_nothing(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 134 | def test_the_envelope_fields_are_not_predicates_and_mix_freely(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 139 | def test_a_time_range_is_required(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 148 | def test_last_ends_the_window_at_the_current_time(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 163 | def test_a_time_is_accepted_in_several_forms_and_read_as_utc(moment): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 167 | def test_a_numeric_duration_is_read_as_seconds(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 172 | def test_an_unusable_time_or_duration_is_refused(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 179 | def test_the_url_form_carries_the_filter_as_json(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 189 | def test_the_url_form_carries_the_legacy_attributes_as_json(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 196 | def test_a_query_is_readable_when_printed(): | CODE |
| LOW⚡ | sdk/python/tests/test_query.py | 200 | def test_the_package_reports_an_unknown_attribute(): | CODE |
| LOW | sdk/python/tests/test_e2e.py | 183 | def test_a_filter_the_backend_serves_finds_the_trace(client, trace_id, name, predicate): | CODE |
| LOW | sdk/python/tests/test_e2e.py | 198 | def test_a_filter_that_should_not_match_returns_nothing(client, trace_id, name, predicate): | CODE |
| LOW | sdk/python/tests/test_e2e.py | 204 | def test_a_conjunction_and_a_disjunction_both_reach_the_backend(client, trace_id): | CODE |
| LOW | sdk/python/tests/test_e2e.py | 236 | def test_a_filter_the_backend_cannot_serve_is_refused(client, trace_id, reason): | CODE |
| LOW | sdk/python/tests/test_client.py | 82 | def test_find_traces_streams_every_chunk(service): | CODE |
| LOW | sdk/python/tests/test_client.py | 89 | def test_the_filter_reaches_the_server_intact(service): | CODE |
| LOW | sdk/python/tests/test_client.py | 102 | def test_a_legacy_query_reaches_the_server_as_the_scalar_fields(service): | CODE |
| LOW⚡ | sdk/python/tests/test_client.py | 113 | def test_find_trace_summaries_flattens_the_chunks(service): | CODE |
| LOW⚡ | sdk/python/tests/test_client.py | 119 | def test_get_trace_passes_the_optional_time_bounds(service): | CODE |
| LOW⚡ | sdk/python/tests/test_client.py | 128 | def test_get_trace_without_time_bounds_leaves_them_unset(service): | CODE |
| LOW⚡ | sdk/python/tests/test_client.py | 136 | def test_the_metadata_endpoints_unwrap_their_responses(service): | CODE |
| LOW | sdk/python/tests/test_client.py | 150 | def test_a_caller_supplied_channel_outlives_the_client(): | CODE |
| LOW | sdk/python/tests/test_client.py | 165 | def test_a_tls_client_builds_a_secure_channel(): | CODE |
| LOW | sdk/python/tests/test_client.py | 170 | def test_a_query_without_a_time_range_fails_before_any_request(service): | CODE |
| LOW | sdk/python/tests/test_conformance.py | 80 | def test_the_builder_emits_a_call_the_idl_recognises(shape): | CODE |
| 62 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | .github/scripts/pr-quota-manager.test.js | 823 | const listedPRs = octokit.rest.issues.listComments.mock.calls.map(([{ issue_number }]) => issue_number); | CODE |
| CRITICAL | .github/scripts/pr-quota-manager.test.js | 843 | const listedPRs = octokit.rest.issues.listComments.mock.calls.map(([{ issue_number }]) => issue_number); | CODE |
| CRITICAL | .github/scripts/pr-quota-manager.test.js | 866 | const listedPRs = octokit.rest.issues.listComments.mock.calls.map(([{ issue_number }]) => issue_number); | CODE |
| CRITICAL | .github/scripts/pr-quota-manager.test.js | 888 | const listedPRs = octokit.rest.issues.listComments.mock.calls.map(([{ issue_number }]) => issue_number); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sdk/python/tests/test_e2e.py | 20 | CODE | |
| LOW | sdk/python/examples/search.py | 15 | CODE | |
| LOW | sdk/python/src/jaeger_query/query.py | 21 | CODE | |
| LOW | sdk/python/src/jaeger_query/client.py | 21 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 31 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 35 | CODE | |
| LOW | sdk/python/src/jaeger_query/__init__.py | 58 | CODE | |
| LOW | sdk/python/src/jaeger_query/expression.py | 30 | CODE | |
| LOW | sdk/python/src/jaeger_query/_time.py | 6 | CODE | |
| LOW | sdk/python/src/api_v3/capabilities_pb2_grpc.py | 4 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 4 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2.py | 25 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2.py | 26 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2.py | 27 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2.py | 28 | 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 | sdk/python/e2e/docker-compose.yml | 4 | # This file provides the storage that the Python SDK's end-to-end test runs against | COMMENT |
| MEDIUM | sdk/python/src/api_v3/capabilities_pb2_grpc.py | 88 | # This class is part of an EXPERIMENTAL API. | COMMENT |
| MEDIUM | sdk/python/src/api_v3/query_service_pb2_grpc.py | 179 | # This class is part of an EXPERIMENTAL API. | COMMENT |
| MEDIUM | scripts/release/prepare.sh | 66 | # Create a new branch | COMMENT |
| MEDIUM | scripts/release/prepare.sh | 165 | # 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 | sdk/python/tests/test_e2e.py | 119 | except Exception as error: # noqa: BLE001 - the point is to keep retrying | CODE |
| 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/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 |
|---|---|---|---|---|
| LOW | examples/otel-demo/deploy-all.sh | 479 | # 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 | 83 | # Verify if the directory exists and is not empty | COMMENT |
| LOW | scripts/release/notes.py | 210 | # 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 |
|---|---|---|---|---|
| LOW | sdk/python/examples/search.py | 38 | CODE | |
| LOW | scripts/lint/dco_check.py | 663 | CODE | |
| LOW | scripts/lint/replace_license_headers.py | 25 | 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 | 151 | CODE | |
| LOW | scripts/release/rotate-managers.py | 32 | CODE | |
| LOW | scripts/release/draft.py | 58 | 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 |
|---|---|---|---|---|
| MEDIUM | …tension/jaegerquery/internal/jaegerai/endpoint_chat.go | 220 | // agentic-loop spans under this request's span, joining what would | 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 | docs/rfc/0008-ai-gateway-mcp-tool-routing.md | 135 | MCP-over-ACP would keep MCP traffic on the ACP WebSocket, but it is not a supported integration path. It exists only in | CODE |
| MEDIUM | docs/rfc/0008-ai-gateway-mcp-tool-routing.md | 146 | - Issue [#8890][issue-8890] says it is *"implemented in the Go ACP SDK (`coder/acp-go-sdk v0.13.5+`)."* Overstated on bo | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sdk/python/src/jaeger_query/query.py | 66 | CODE | |
| LOW | sdk/python/src/api_v3/capabilities_pb2_grpc.py | 103 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 184 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 211 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 238 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 265 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 292 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 319 | CODE | |
| LOW | sdk/python/src/api_v3/query_service_pb2_grpc.py | 346 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sdk/python/src/jaeger_query/query.py | 31 | __all__ = ["Query"] | CODE |
| LOW | sdk/python/src/jaeger_query/client.py | 35 | __all__ = ["QueryClient"] | CODE |
| LOW | sdk/python/src/jaeger_query/__init__.py | 63 | __all__ = [ | CODE |
| LOW | sdk/python/src/jaeger_query/expression.py | 35 | __all__ = [ | 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 | 11 | # Usage: | COMMENT |
| LOW | scripts/lint/check-line-endings.py | 12 | # Usage: | COMMENT |
| LOW | scripts/e2e/filter_coverage.py | 8 | # Usage: | COMMENT |
| LOW | scripts/e2e/check_coverage_uploads.py | 16 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/release/notes.py | 76 | except (subprocess.CalledProcessError, OSError): | CODE |
| 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 | 358 | - Dispatcher's ext_method handler switches from "placeholder" to | CODE |