OpenTelemetry Collector
This report summarizes scanner evidence for open-telemetry/opentelemetry-collector, a Go project with 7,725 GitHub stars. SynthScan examined 319,965 lines of code across 2449 source files, recording 279 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.0 (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? 273 finding(s).
Are imports declared and package/API names verified? 4 finding(s).
Are wrappers, guards, and repeated structures necessary? 2 finding(s).
Which changes need focused human review? 279 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 279 distinct pattern matches across 8 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 | .golangci.yml | 261 | allow-parallel-runners: true | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 81 | # Optional: A list of platforms not supported by this component. | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 101 | # Container types: object (requires properties:), slice (requires values:), map (requires values:) | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 141 | # Optional: For number/integer types - maximum value (inclusive). | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 181 | anonymous: bool | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 221 | description: | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 261 | # All referenced attributes must be defined in the resource_attributes section. | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 281 | name_override: | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 301 | # Optional: map of metric names with the key being the metric name and value | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 321 | if_configured: | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 341 | entity: string | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 441 | # Optional: whether or not this metric is optional. Optional metrics may only be initialized | COMMENT |
| LOW | cmd/mdatagen/metadata-schema.yaml | 481 | stage: <alpha|beta|stable|deprecated> | COMMENT |
| LOW | cmd/mdatagen/internal/metadata.go | 841 | type Entity struct { | COMMENT |
| LOW | …l/samplereceiver/internal/metadata/generated_config.go | 541 | type HostArchResourceAttributeConfig struct { | COMMENT |
| LOW | …l/samplereceiver/internal/metadata/generated_config.go | 681 | type StringEnumResourceAttrResourceAttributeConfig struct { | COMMENT |
| LOW | …l/samplereceiver/internal/metadata/generated_config.go | 761 | COMMENT | |
| LOW | cmd/mdatagen/internal/samplemigrationscraper/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | cmd/builder/internal/builder/config.go | 101 | COMMENT | |
| LOW | extension/zpagesextension/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | extension/extensioncapabilities/interfaces.go | 21 | Dependencies() []component.ID | COMMENT |
| LOW | extension/memorylimiterextension/testdata/config.yaml | 1 | # check_interval is the time between measurements of memory usage for the | COMMENT |
| LOW | extension/extensionauth/server.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | extension/extensionauth/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | extension/xextension/storage/storage.go | 21 | // The component can use the client to manage state | COMMENT |
| LOW | extension/xextension/storage/storage.go | 61 | // | COMMENT |
| LOW | extension/xextension/storage/storage.go | 81 | // any of the collected operations. | COMMENT |
| LOW | extension/xextension/storage/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/configgrpc/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/confignet/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/confighttp/server.go | 81 | // through two representations (the deprecated flat fields and the 'keepalive' | COMMENT |
| LOW | config/confighttp/server.go | 101 | // fields directly; the 'keepalive' section decodes into Keepalive and is | COMMENT |
| LOW | config/confighttp/server.go | 141 | } | COMMENT |
| LOW | config/confighttp/server.go | 161 | // error and the warnings: programmatic values are neither deprecated usage nor | COMMENT |
| LOW | config/confighttp/server.go | 361 | handler = responseHeadersHandler(handler, sc.ResponseHeaders) | COMMENT |
| LOW | config/confighttp/generated_config.go | 81 | // Cookies configures the cookie management of the HTTP client. | COMMENT |
| LOW | config/confighttp/generated_config.go | 121 | // See the underlying https://github.com/rs/cors package for details. | COMMENT |
| LOW | config/confighttp/generated_config.go | 221 | // CompressionAlgorithms configures the list of compression algorithms the server can accept. | COMMENT |
| LOW | config/confighttp/generated_config.go | 241 | ReadHeaderTimeout time.Duration `mapstructure:"read_header_timeout"` | COMMENT |
| LOW | config/confighttp/client.go | 81 | COMMENT | |
| LOW | config/confighttp/client.go | 101 | // for ToClient to log. Only keys present in the configuration count for the | COMMENT |
| LOW | config/confighttp/client.go | 161 | cc.Keepalive.Get().MaxIdleConnsPerHost = cc.MaxIdleConnsPerHost | COMMENT |
| LOW | config/confighttp/client.go | 181 | // practice. Deprecated keys in the configuration are also recorded as warnings | COMMENT |
| LOW | config/confighttp/client.go | 201 | // Step 2: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/compression.go | 121 | 0x73, 0x4e, 0x61, 0x50, 0x70, 0x59, // "sNaPpY" | COMMENT |
| LOW | config/confighttp/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/configopaque/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/configtelemetry/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/configtelemetry/doc.go | 21 | // | COMMENT |
| LOW | config/configtls/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | config/configoptional/optional.go | 281 | // generally only be called by [confmap.Validate]. | COMMENT |
| LOW | processor/queuebatchprocessor/doc.go | 1 | // Copyright The OpenTelemetry Authors | COMMENT |
| LOW | processor/queuebatchprocessor/testdata/config.yaml | 1 | # Default configuration for the queue_batch processor, documenting the | COMMENT |
| LOW | processor/batchprocessor/config.go | 21 | // SendBatchSize is the size of a batch which after hit, will trigger it to be sent. | COMMENT |
| LOW | .chloggen/TEMPLATE.yaml | 21 | # e.g. '[user]' or '[user, api]' | COMMENT |
| LOW | .chloggen/xprocessorhelper-profiles-obsreport.yaml | 21 | # e.g. '[user]' or '[user, api]' | COMMENT |
| LOW | .chloggen/featuregate-allow-underscores.yaml | 21 | # e.g. '[user]' or '[user, api]' | COMMENT |
| LOW | .chloggen/queue-ref-pair-in-memory-queue.yaml | 21 | # e.g. '[user]' or '[user, api]' | COMMENT |
| LOW | .chloggen/reuse-message.yaml | 21 | # e.g. '[user]' or '[user, api]' | COMMENT |
| LOW | .chloggen/README.md | 1 | ### Changelog folder | COMMENT |
| 175 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | config/confighttp/server.go | 168 | // Step 1: fold a programmatically set Keepalive into the deprecated | COMMENT |
| LOW⚡ | config/confighttp/server.go | 177 | // Step 2: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/server.go | 100 | // Step 1: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/server.go | 114 | // Step 2: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/server.go | 132 | // Step 3: fold the decoded 'keepalive' section into the deprecated | COMMENT |
| LOW | config/confighttp/server.go | 191 | // Step 3: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/server.go | 208 | // Step 4: fold the decoded 'keepalive' section into the deprecated | COMMENT |
| LOW | config/confighttp/server.go | 222 | // Step 5: the deprecated fields now hold the effective settings; restore | COMMENT |
| LOW | config/confighttp/client.go | 109 | // Step 1: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/client.go | 123 | // Step 2: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/client.go | 190 | // Step 1: fold a programmatically set Keepalive into the deprecated | COMMENT |
| LOW | config/confighttp/client.go | 201 | // Step 2: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/client.go | 215 | // Step 3: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/client.go | 238 | // Step 4: fold the decoded 'keepalive' section into the deprecated | COMMENT |
| LOW | config/confighttp/client.go | 258 | // Step 5: the deprecated fields now hold the effective settings; restore | COMMENT |
| LOW | consumer/consumererror/error.go | 35 | // NOTE: This function will panic if passed an HTTP status between 200 and 299 inclusive. | COMMENT |
| LOW | consumer/consumererror/error.go | 54 | // NOTE: This function will panic if passed a *status.Status with an underlying | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | config/confighttp/server.go | 168 | // Step 1: fold a programmatically set Keepalive into the deprecated | COMMENT |
| LOW⚡ | config/confighttp/server.go | 177 | // Step 2: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/server.go | 100 | // Step 1: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/server.go | 114 | // Step 2: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/server.go | 132 | // Step 3: fold the decoded 'keepalive' section into the deprecated | COMMENT |
| LOW | config/confighttp/server.go | 191 | // Step 3: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/server.go | 208 | // Step 4: fold the decoded 'keepalive' section into the deprecated | COMMENT |
| LOW | config/confighttp/server.go | 222 | // Step 5: the deprecated fields now hold the effective settings; restore | COMMENT |
| LOW | config/confighttp/client.go | 109 | // Step 1: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/client.go | 123 | // Step 2: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/client.go | 190 | // Step 1: fold a programmatically set Keepalive into the deprecated | COMMENT |
| LOW | config/confighttp/client.go | 201 | // Step 2: decode the configuration. Deprecated keys overwrite their | COMMENT |
| LOW | config/confighttp/client.go | 215 | // Step 3: with the decoded values at hand, reject configurations mixing | COMMENT |
| LOW | config/confighttp/client.go | 238 | // Step 4: fold the decoded 'keepalive' section into the deprecated | COMMENT |
| LOW | config/confighttp/client.go | 258 | // Step 5: the deprecated fields now hold the effective settings; restore | COMMENT |
| LOW | …xporterhelper/internal/queuebatch/partition_batcher.go | 181 | // If we still have results to process, then we need to check if the last result has enough data to flush, or we add it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | receiver/otlpreceiver/otlphttp.go | 221 | // We are throttled. Wait before retrying as requested by the server. | COMMENT |
| HIGH | exporter/otlpexporter/otlp.go | 197 | // We are throttled. Wait before retrying as requested by the server. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …rter/exporterhelper/internal/queue/persistent_queue.go | 59 | // ┌───────file extension-backed queue───────┐ | COMMENT |
| MEDIUM | …rter/exporterhelper/internal/queue/persistent_queue.go | 65 | // └───────────────────────x─────|─────x─────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmd/mdatagen/internal/loader_test.go | 978 | labelsFile: "# This file is auto-generated. Do not edit manually.\nextension/storage/filestorage extension/storage/ | CODE |
| MEDIUM | internal/buildscripts/gen-certs.sh | 101 | # Creating the client and server certificates. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config/configoptional/optional_test.go | 326 | opt.GetOrInsertDefault().Name = "John Doe" | CODE |
| LOW | config/configoptional/optional_test.go | 357 | Name: "John Doe", | CODE |
| LOW | config/configoptional/optional_test.go | 367 | opt.GetOrInsertDefault().Name = "Jane Doe" | CODE |
| LOW | config/configoptional/optional_test.go | 395 | Name: "John Doe", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/mdatagen/metadata-schema.yaml | 406 | # Set this to true to skip that assertion for processors that intentionally detach or modify the context | COMMENT |