Automatically provision and manage TLS certificates in Kubernetes
This report summarizes scanner evidence for cert-manager/cert-manager, a Go project with 14,144 GitHub stars. SynthScan examined 261,171 lines of code across 1125 source files, recording 666 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 639 finding(s).
Are imports declared and package/API names verified? 27 finding(s).
Are wrappers, guards, and repeated structures necessary? 0 finding(s).
Which changes need focused human review? 666 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 666 distinct pattern matches across 9 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 | .clomonitor.yml | 1 | # License scanning information | COMMENT |
| LOW | cmd/cainjector/app/controller.go | 101 | // Why do we disable the cache for v1.Secret? | COMMENT |
| LOW | cmd/cainjector/app/controller.go | 121 | // This initial list operation can place enormous load on | COMMENT |
| LOW | design/20190708.certificate-request-crd.md | 121 | ## Proposal | COMMENT |
| LOW | design/20200326.extensible-certificate-controller.md | 121 | // | COMMENT |
| LOW | design/20200326.extensible-certificate-controller.md | 141 | // for the next certificate iteration. | COMMENT |
| LOW | design/20200326.extensible-certificate-controller.md | 161 | // the options on the Certificate resource are compared against the | COMMENT |
| LOW | design/acme-orders-challenges-crd.md | 81 | // If the Issuer does not exist, processing will be retried. | COMMENT |
| LOW | design/acme-orders-challenges-crd.md | 101 | // Config specifies a mapping from DNS identifiers to how those identifiers | COMMENT |
| LOW | design/acme-orders-challenges-crd.md | 141 | // State represents the state of an ACME resource, such as an Order. | COMMENT |
| LOW | design/acme-orders-challenges-crd.md | 161 | // If an Order is marked 'Ready', the corresponding certificate | COMMENT |
| LOW | design/acme-orders-challenges-crd.md | 181 | // Expired signifies that an ACME resource has expired. | COMMENT |
| LOW | design/acme-orders-challenges-crd.md | 261 | // or not. | COMMENT |
| LOW | tools/setup-integration-test-dependencies.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | test/webhook/testwebhook.go | 61 | // If `--tls-cert-file` or `--tls-private-key-file` are explicitly provided | COMMENT |
| LOW | …st/integration/certificates/metrics_controller_test.go | 241 | certmanager_certificate_challenge_status{domain="example.com",name="test-challenge-status",namespace="testns",processing | COMMENT |
| LOW | …egration/certificates/stalled_request_recovery_test.go | 61 | // willing to change: a CertificateRequest that an external issuer left with a | COMMENT |
| LOW | test/e2e/framework/addon/internal/globals.go | 41 | SupportsGlobal() bool | COMMENT |
| LOW | test/e2e/framework/log/log.go | 41 | COMMENT | |
| LOW | test/e2e/framework/helper/featureset/featureset.go | 41 | // IPAddressFeature denotes tests that set the IPAddresses field. | COMMENT |
| LOW | test/e2e/framework/helper/featureset/featureset.go | 61 | COMMENT | |
| LOW | test/e2e/framework/helper/featureset/featureset.go | 101 | // certificates with an ML-DSA private key. | COMMENT |
| LOW | test/e2e/suite/issuers/ca/fixtures.go | 41 | // Issuer: C = UK, O = cert-manager, CN = cert-manager testing CA | COMMENT |
| LOW | test/e2e/suite/issuers/ca/fixtures.go | 61 | // CA:TRUE | COMMENT |
| LOW | test/e2e/suite/issuers/ca/fixtures.go | 101 | } | COMMENT |
| LOW | test/e2e/suite/issuers/ca/fixtures.go | 121 | // a5:a7:75:ce:37:69:db:1d:6e:6a:cc:af:3a:e6:c2: | COMMENT |
| LOW | test/e2e/suite/issuers/ca/fixtures.go | 181 | // Validity | COMMENT |
| LOW | test/e2e/suite/issuers/ca/fixtures.go | 201 | // X509v3 Subject Key Identifier: | COMMENT |
| LOW | test/e2e/suite/certificaterequests/approval/approval.go | 461 | }, | COMMENT |
| LOW | …/suite/conformance/certificatesigningrequests/suite.go | 41 | // returns an SignerName to that Issuer that will be used as the SignerName | COMMENT |
| LOW | …/suite/conformance/certificatesigningrequests/suite.go | 61 | COMMENT | |
| LOW | test/e2e/suite/conformance/certificates/suite.go | 41 | // IssuerRef on Certificate resources that this suite creates. | COMMENT |
| LOW | deploy/charts/cert-manager/README.template.md | 1061 | apiVersion: webhook.config.cert-manager.io/v1alpha1 | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 1 | # +docs:section=Global | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 21 | # If a component-specific nodeSelector is also set, it will be merged and take precedence. | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 41 | priorityClassName: "" | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 81 | # +docs:property | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 101 | COMMENT | |
| LOW | deploy/charts/cert-manager/values.yaml | 121 | # | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 141 | COMMENT | |
| LOW | deploy/charts/cert-manager/values.yaml | 161 | # +docs:property | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 181 | # +docs:property | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 201 | # registry: "" | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 221 | # digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20 | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 241 | # Override the "cert-manager.name" value, which is used to annotate some of | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 261 | # "{{ .Chart.Name }}-helm-chart/version": "{{ .Chart.Version }}" | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 281 | # | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 301 | # # See https://cert-manager.io/docs/cli/controller/ | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 321 | # dnsNames: | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 341 | # Forces cert-manager to use only the recursive nameservers for verification. | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 361 | COMMENT | |
| LOW | deploy/charts/cert-manager/values.yaml | 381 | # command: [aws_signing_helper] | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 401 | # secretName: cert | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 441 | COMMENT | |
| LOW | deploy/charts/cert-manager/values.yaml | 461 | # +docs:property | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 481 | # podDnsPolicy: "None" | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 501 | # - bar.remote | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 561 | # defaultIssuerKind: "" | COMMENT |
| LOW | deploy/charts/cert-manager/values.yaml | 581 | COMMENT | |
| LOW | deploy/charts/cert-manager/values.yaml | 601 | runtimeClassName: "" | COMMENT |
| 563 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/e2e/suite/certificates/othernamesan.go | 149 | UTF8Value: "user@example.org", | CODE |
| LOW | test/e2e/suite/certificates/othernamesan.go | 164 | UTF8Value: "user@example.org", | CODE |
| LOW | third_party/forked/acme/rfc8555_test.go | 363 | const email = "mailto:user@example.org" | CODE |
| LOW | third_party/forked/acme/rfc8555_test.go | 441 | const email = "mailto:user@example.org" | CODE |
| LOW | third_party/forked/acme/rfc8555_test.go | 589 | const email = "mailto:user@example.org" | CODE |
| LOW | third_party/forked/acme/rfc8555_test.go | 723 | const email = "mailto:user@example.org" | CODE |
| LOW | pkg/util/pki/csr_test.go | 450 | UTF8String: "user@example.org", | CODE |
| LOW | pkg/util/pki/csr_test.go | 728 | UTF8Value: "user@example.org", | CODE |
| LOW⚡ | pkg/util/pki/csr_test.go | 754 | EmailAddresses: []string{"user@example.org", "alt-email@example.org"}, | CODE |
| LOW⚡ | pkg/util/pki/csr_test.go | 758 | UTF8Value: "user@example.org", | CODE |
| LOW⚡ | pkg/util/pki/csr_test.go | 762 | UTF8Value: "user@example.org", | CODE |
| LOW | pkg/util/pki/csr_test.go | 773 | {Tag: nameTypeRFC822Name, Class: 2, Bytes: []byte("user@example.org")}, | CODE |
| LOW | pkg/util/pki/csr_test.go | 774 | {Tag: nameTypeRFC822Name, Class: 2, Bytes: []byte("alt-email@example.org")}, | CODE |
| LOW | pkg/util/pki/csr_test.go | 795 | UTF8Value: "user@example.org", | CODE |
| LOW | pkg/util/pki/nameconstraints_test.go | 59 | PermittedEmailAddresses: []string{"user@example.com"}, | CODE |
| LOW | pkg/util/pki/nameconstraints_test.go | 87 | PermittedEmailAddresses: []string{"user@example.com"}, | CODE |
| LOW | pkg/controller/certificate-shim/helper_test.go | 474 | assert.Equal(t, []string{"test@example.com", "admin@example.com"}, crt.Spec.EmailAddresses) | CODE |
| LOW | pkg/controller/certificate-shim/sync_test.go | 706 | cmapi.IngressSecretTemplate: `{ "annotations": { "example-annotation" : "dummy-value" }, "labels": | CODE |
| LOW | pkg/controller/certificate-shim/sync_test.go | 730 | "example-annotation": "dummy-value", | CODE |
| LOW | pkg/controller/certificate-shim/sync_test.go | 733 | "example-label": "dummy-value", | CODE |
| LOW | pkg/controller/certificate-shim/sync_test.go | 753 | cmapi.IngressSecretTemplate: `{ "annotations": { "cert-manager.io/disallowed-annotation" : "dummy-v | CODE |
| LOW | …oller/certificaterequests/venafi/custom_fields_test.go | 31 | {"name": "Authoriser Name", "value": "John Doe"},{"name": "Division", "value": "BU1"} | CODE |
| LOW | …oller/certificaterequests/venafi/custom_fields_test.go | 36 | {Name: "Authoriser Name", Value: "John Doe"}, | CODE |
| LOW | …oller/certificaterequests/venafi/custom_fields_test.go | 51 | {Name: "Authoriser Name", Value: "John Doe"}, | CODE |
| LOW | pkg/issuer/acme/setup_test.go | 123 | someEmail = "test@test.com" | CODE |
| LOW | pkg/issuer/acme/dns/digitalocean/digitalocean_test.go | 306 | Token("fake-token"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | deploy/charts/cert-manager/values.yaml | 661 | # Create a ServiceMonitor to add cert-manager to Prometheus. | COMMENT |
| MEDIUM | deploy/charts/cert-manager/values.yaml | 705 | # Create a PodMonitor to add cert-manager to Prometheus. | COMMENT |
| MEDIUM | deploy/charts/cert-manager/values.yaml | 1187 | # Create the CA Injector deployment | COMMENT |
| MEDIUM | hack/verify-upgrade.sh | 133 | # Create a cert-manager issuer and cert | COMMENT |
| MEDIUM | hack/verify-upgrade.sh | 193 | # Create a cert-manager issuer and cert | COMMENT |
| MEDIUM | make/config/samplewebhook/chart/templates/pki.yaml | 2 | # Create a selfsigned Issuer, in order to create a root CA certificate for | COMMENT |
| MEDIUM | make/config/samplewebhook/chart/templates/pki.yaml | 40 | # Create an Issuer that uses the above generated CA certificate to issue certs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …troller/certificates/readiness/readiness_controller.go | 420 | c.scheduledWorkQueue.Add(key, crt.Status.ACME.ARI.NextCheck.Time.Sub(now)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/controller/certificates/policies/checks.go | 219 | // This comparison is a lot less robust than comparing against the CertificateRequest | COMMENT |
| MEDIUM | hack/latest-base-images.sh | 25 | # We use the nonroot variants of the distroless images to follow best practices around container security. | COMMENT |
| MEDIUM | hack/latest-kind-images.sh | 35 | # It can be made more robust if / when Kind | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …terequest/approval/certificaterequest_approval_test.go | 409 | // TODO: implement me | COMMENT |
| LOW | …terequest/approval/certificaterequest_approval_test.go | 414 | // TODO: implement me | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | make/config/kind/cluster.yaml | 19 | # TIP: If you are running kind on a computer with corporate MITM VPN, you can add | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/controller/certificate-shim/ingresses/controller.go | 80 | // We re-queue on "Update" because we need to check if the Certificate is | COMMENT |
| LOW | pkg/controller/certificate-shim/gateways/controller.go | 66 | // Gateway because we need to check if the Certificate is still up to date. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/controller/certificates/policies/checks.go | 350 | // NOTE: This function only compares the values of annotations and labels that | COMMENT |