Commit Graph

1430 Commits

Author SHA1 Message Date
renovate[bot]
4e28fdce03 chore(deps): update actions/setup-go action to v7
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-16 06:11:20 +00:00
Anas Khan
492af39e14 test: assert Serve error synchronously after shutdown in TestServe (#1687)
TestServe started the server in a goroutine that captured Serve's
return value, slept two seconds, then called assert.NoError on it. The
test body returned immediately after Shutdown without ever joining that
goroutine, so the assertion ran after the test had already been recorded
as passed and could never affect its result (a dead assertion). It was
also wrong: closing the listener in Shutdown makes Serve return a
net.ErrClosed error, not nil.

Capture Serve's error over a buffered channel and assert it synchronously
in the test body after Shutdown, checking it wraps net.ErrClosed so the
check actually runs within the test's lifetime and catches an unexpected
Serve failure.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-15 07:07:10 +00:00
Anas Khan
6859e9c035 fix: clamp max-concurrency in custom analysis to avoid deadlock and panic (#1700)
RunCustomAnalysis built its worker semaphore directly from the unvalidated
a.MaxConcurrency field, unlike RunAnalysis which clamps the value first. With
the user-supplied --max-concurrency flag this caused two failures:

- --max-concurrency 0 makes an unbuffered channel, so the pre-send blocks
  waiting for a receiver that is only launched on the next line, deadlocking
  the whole analyze command whenever a custom analyzer is configured.
- --max-concurrency -1 makes make(chan struct{}, -1) panic with
  "makechan: size out of range".

Apply the same lower/upper bound clamp RunAnalysis already uses (default 10 for
non-positive values, cap at 100). Add regression tests covering both cases.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-14 15:58:07 +01:00
Anas Khan
1b7c117e8a test: assert hpa resource-configured error after the results loop (#1685)
TestHPAAnalyzerWithExistingScaleTargetRefWithoutSpecifyingResources placed
its "if !errorFound { t.Error(...) }" assertion inside the outer
"for _, analysis := range analysisResults" loop. When the analyzer emits
zero results (exactly the regression this test guards against, the
"does not have resource configured." detection breaking), the outer loop
body never runs, the assertion is skipped, and the test passes green.

Move the assertion after the outer loop and break out of it once the error
is found, matching the sibling HPA tests (TestHPAAnalyzerWithUnsuportedScaleTargetRef,
TestHPAAnalyzerWithNonExistentScaleTargetRef). Also drop the dead break that
sat inside the inner loop after its own break. Test-only change.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-14 08:12:02 +00:00
Anas Khan
f247b3ffb7 fix: resolve EKS default kubeconfig path across platforms (#1686)
The EKS integration analyzer built the default kubeconfig path from
os.Getenv("HOME") when no explicit --kubeconfig was provided. On Windows
the HOME environment variable is normally unset (Windows exposes
USERPROFILE, and HOMEDRIVE plus HOMEPATH), so os.Getenv("HOME") returned
"" and filepath.Join collapsed to the relative path .kube/config resolved
against the current working directory rather than the user's home. The
analyzer then loaded an empty config and reported "EKS cluster was not
detected" even when a valid ~/.kube/config existed.

Resolve the home directory with os.UserHomeDir() instead, matching the
convention already used elsewhere in the codebase (cmd/root.go), so the
default kubeconfig path works on Windows as well as Unix. The path
resolution is extracted into a small getKubeconfigPath helper and covered
by a unit test.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-14 08:09:55 +00:00
Anas Khan
58ab921e91 fix: guard against nil spec.replicas in deployment analyzer (#1683)
The Deployment analyzer dereferenced *deployment.Spec.Replicas without a
nil check. Spec.Replicas is a *int32 and, although the API server usually
defaults it to 1, a Deployment object whose replicas field is explicitly
unset (nil) panics the analyze run with a nil pointer dereference.

Guard the comparison with a nil check, mirroring the sibling StatefulSet
analyzer which already checks Spec.Replicas != nil before dereferencing.
Add a regression test that analyzes a Deployment with nil Spec.Replicas
and asserts Analyze does not panic.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-14 08:08:49 +00:00
renovate[bot]
8bda53be10 fix(deps): update k8s.io/utils digest to cf1189d (#1688)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 11:10:41 +01:00
Anas Khan
133dbe6f23 fix: point release-please extra-files at the real chart path (#1697)
The extra-files list in release-please-config.json referenced four paths
that do not exist in the repository (deploy/manifest.yaml, chart/Chart.yaml,
chart/values.yaml, container/manifests/deployment.yaml). release-please
silently skips missing extra-files (createIfMissing is false), so the
#x-release-please-version marker in charts/k8sgpt/Chart.yaml was never
bumped and its appVersion stayed frozen at v0.4.23 while releases advanced
to v0.4.35.

Because the chart's default image tag falls back to .Chart.AppVersion, a
default install of charts/k8sgpt deployed a stale image and stamped
app.kubernetes.io/version: v0.4.23 on the rendered resources.

Point extra-files at the file that actually carries the marker
(charts/k8sgpt/Chart.yaml) and bump appVersion to the current v0.4.35 so
the chart is correct now and release-please keeps it in sync going forward.

List the chart with type "generic" rather than as a plain string. A plain
.yaml string makes release-please run GenericYaml($.version) before the
Generic updater; GenericYaml re-serializes the document with a parser that
drops all comments, which would delete the #x-release-please-version marker
and rewrite the unrelated chart version field. The generic type runs only
the comment-aware Generic updater, so it bumps appVersion on the annotated
line and leaves the marker and the chart version intact. charts/k8sgpt/
values.yaml has no version marker, so it is not listed.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
2026-07-13 10:24:02 +01:00
renovate[bot]
c35c84ec67 chore(deps): update goreleaser/goreleaser-action action to v7 (#1694)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-10 14:34:36 +01:00
github-actions[bot]
d33935a7b6 chore(main): release 0.4.36 (#1676)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
v0.4.36
2026-07-10 14:16:37 +01:00
renovate[bot]
a2a01805dd chore(deps): update googleapis/release-please-action action to v5 (#1693)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-10 12:43:56 +01:00
renovate[bot]
2e57a6f231 fix(deps): update module golang.org/x/net to v0.55.0 [security] (#1678)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-09 20:31:14 +01:00
renovate[bot]
60268ca552 chore(deps): update docker/login-action action to v4 (#1662)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-09 07:34:15 +01:00
renovate[bot]
59ff7a98ed chore(deps): update docker/setup-buildx-action action to v4 (#1665)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-08 10:34:18 +01:00
Alex Jones
3353acdde9 chore: migrate to Go 1.26 and golangci-lint v2.12.2 (#1689)
Upstream k8s.io dependencies have moved past Go 1.24, so every Renovate
PR touching them now drags the go directive forward and fails lint under
the pinned golangci-lint v2.1.0 (built with go1.24). This unblocks
#1678, #1570, #1688 and #1346.

- go.mod: go 1.26.3, toolchain go1.26.5 (matches Renovate's rebases)
- golangci-lint: v2.1.0 -> v2.12.2 (built with go1.26)
- CI workflows: Go ~1.24 -> ~1.26
- container builder image: golang:1.26-alpine3.23

Signed-off-by: Alex Jones <alexsimonjones@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 10:17:59 +01:00
renovate[bot]
53ac3c1de7 chore(deps): update docker/metadata-action digest to dc80280 (#1681)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-07 12:45:47 +01:00
Anas Khan
60a9794363 fix: correct Vertex AI legacy model ids by removing stray asterisk (#1684)
The two Vertex AI "Legacy Stable Model" constants carried a trailing '*'
that leaked in from the footnote marker in Google's model-versions table:
ModelGeminiProV1_5 was "gemini-1.5-pro-002*" and ModelGeminiFlashV1_5 was
"gemini-1.5-flash-002*". The '*' is not part of the model id.

GetVertexAIModelOrDefault does an exact-match lookup and otherwise silently
returns VERTEXAI_MODELS[0]. Because VERTEXAI_MODELS held the asterisked
values, a user who correctly configured --model gemini-1.5-pro-002 failed
the exact match and was silently switched to the default model, so the two
legacy models could never be selected.

Remove the trailing '*' from both literals and add a unit test covering the
model and region resolvers.

Closes #1516

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
2026-07-07 12:36:48 +01:00
Anas Khan
238a97af1c fix: guard interplex cache Store and Load against nil grpc conn (#1682)
grpc.NewClient returns a nil *ClientConn when it fails (for example on an
invalid connection string). Store and Load registered defer conn.Close()
before checking the returned error, so a client-creation failure triggered a
nil pointer dereference in the deferred Close instead of returning the error.

Move defer conn.Close() to after the error check in both methods. Add a
regression test that drives Store and Load with an invalid connection string
and asserts they return an error without panicking.

The deferred conn.Close() now discards its error with a plain _ = conn.Close()
rather than logging it: grpc's ClientConn.Close() only returns a non-nil error
on a double-close, which can't happen from a single call site here, so a
logging branch would be dead code that patch coverage can never satisfy.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
2026-07-06 13:13:57 +01:00
renovate[bot]
de01885cea fix(deps): update k8s.io/utils digest to be93311 (#1674)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-02 16:14:46 +01:00
renovate[bot]
22296405a5 chore(deps): update golang docker tag to v1.26 (#1657)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-02 15:53:53 +01:00
renovate[bot]
8f6852cf17 chore(deps): update docker/setup-qemu-action action to v4 (#1666)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-01 20:56:39 +01:00
Dariusz Cydzik
2cda9d8069 fix: send temperature or top_p exclusively for Anthropic models (#1675)
Signed-off-by: Dariusz Cydzik <31630419+Darek07@users.noreply.github.com>
2026-07-01 19:32:27 +01:00
github-actions[bot]
c9ca6b469d chore(main): release 0.4.35 (#1664)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
v0.4.35
2026-07-01 10:36:09 +01:00
Anas Khan
315d28d06e fix: guard against nil TargetRef in Service not-ready endpoints (#1672)
The Service analyzer dereferenced EndpointAddress.TargetRef while building
the not-ready pod list, but TargetRef is optional and can be nil for
addresses not backed by a Pod (bare-IP or manually created Endpoints).
A single such address panicked the whole analyze run with a nil pointer
dereference. Only append the pod label when TargetRef is set; the address
is still counted so the failure message is unchanged. Adds a regression
test covering a not-ready address with no TargetRef.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-01 06:43:24 +01:00
Anas Khan
716c48aab9 fix: guard against empty conditions in Gateway/GatewayClass analyzers (#1670)
The Gateway and GatewayClass analyzers indexed Status.Conditions[0]
without a length check. A Gateway or GatewayClass with empty
Status.Conditions (newly created, or no controller installed) panics
the whole analyze run with 'index out of range [0] with length 0'.

Guard both accesses with a length check, mirroring the existing PDB
analyzer (pkg/analyzer/pdb.go). Add a unit test for each analyzer that
exercises the empty-conditions path.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-07-01 06:43:04 +01:00
renovate[bot]
500d3140f8 chore(deps): update docker/build-push-action action to v7 (#1660)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-01 06:39:14 +01:00
Anas Khan
afdcc551a4 fix: detect SchedulingGated pods (#1474) (#1673)
A pod with non-empty .spec.schedulingGates stays in the Pending phase
with a PodScheduled condition of Status=False, Reason=SchedulingGated.
The pod analyzer only matched the Unschedulable reason, so a gated pod
fell through every branch and was reported as having no problems.

Add a sibling check on the PodScheduled condition for the
SchedulingGated reason. Gated pods commonly carry an empty condition
message, so emit a default message naming the pod when none is present
and surface the condition message otherwise, mirroring how the
Unschedulable branch reports.

This is the residual half of #1474; the suspended Job/CronJob half is
already handled in job.go and cronjob.go.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
2026-06-30 22:44:42 +01:00
renovate[bot]
96523ee062 chore(deps): update docker/build-push-action digest to 10e90e3 (#1654)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-25 10:47:43 +01:00
renovate[bot]
43227aca37 chore(deps): update docker/metadata-action action to v6 (#1663)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-24 16:49:48 +01:00
renovate[bot]
6ad758503b chore(deps): update docker/setup-qemu-action digest to c7c5346 (#1655)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-23 05:44:16 +01:00
github-actions[bot]
49a0826c10 chore(main): release 0.4.34 (#1653)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
v0.4.34
2026-06-19 14:03:58 +01:00
renovate[bot]
8da4716f26 fix(deps): update k8s.io/utils digest to a95e086 (#1656)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-18 21:47:43 +01:00
renovate[bot]
7dc2c4f6c5 chore(deps): update codecov/codecov-action action to v7 (#1659)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-16 11:33:21 +01:00
renovate[bot]
2fa65f712b chore(deps): update docker/metadata-action digest to c299e40 (#1558)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-06-13 07:50:33 +01:00
renovate[bot]
09f7de5014 chore(deps): update codecov/codecov-action digest to 0fb7174 (#1571)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-06-13 07:49:35 +01:00
renovate[bot]
6dbda1a247 chore(deps): update softprops/action-gh-release digest to 3bb1273 (#1578)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-13 06:48:13 +00:00
renovate[bot]
15bfd4b17a chore(deps): update docker/login-action digest to c94ce9f (#1580)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-06-13 07:47:44 +01:00
renovate[bot]
55a1a2f37d chore(deps): update docker/setup-buildx-action digest to 8d2750c (#1596)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-06-13 07:46:46 +01:00
renovate[bot]
11cb747538 chore(deps): pin dependencies (#1630)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-06-13 07:45:49 +01:00
renovate[bot]
edfb58bd7a chore(deps): replace google-github-actions/release-please-action action with googleapis/release-please-action v4.1.1 (#1631)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-06-13 07:44:51 +01:00
renovate[bot]
5a24c5ca94 fix(deps): update module github.com/kedacore/keda/v2 to v2.17.3 [security] (#1612)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-13 07:41:16 +01:00
renovate[bot]
a81295f2d3 fix(deps): update module github.com/aws/aws-sdk-go-v2/service/bedrockruntime to v1.50.4 [security] (#1633)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-12 21:44:31 +01:00
renovate[bot]
5483339716 fix(deps): update module github.com/olekukonko/tablewriter to v1 (#1502)
* fix(deps): update module github.com/olekukonko/tablewriter to v1

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(cache): migrate to tablewriter v1 API

tablewriter v1 replaces SetHeader with Header and makes Append/Render
return errors. Update cmd/cache/list.go accordingly to fix the build.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Alex Jones <axjns@example.com>

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Alex Jones <axjns@example.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Jones <axjns@example.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 13:01:53 +01:00
Zakhar Dvurechensky
1b7d1f06c7 fix: allow Azure OpenAI API version override (#1650)
Signed-off-by: Zakhar Dvurechensky <72825626+Zakharden@users.noreply.github.com>
2026-06-04 07:34:52 +01:00
Alex Jones
1c4e77a55e feat: add Anthropic API support (#1652)
Implement the Anthropic backend client for Claude models, including:
- AnthropicClient with Configure/GetCompletion/GetName methods
- Proxy, custom headers, and base URL support
- Default model (claude-3-5-sonnet-latest) fallback in auth add command
- Unit tests with httptest mock server

Signed-off-by: Alex <alexsimonjones@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-20 09:24:53 +01:00
github-actions[bot]
fb246798d3 chore(main): release 0.4.33 (#1643)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
v0.4.33
2026-05-13 12:33:32 +01:00
Asish Kumar
234926fe98 feat: analyze previous logs for restarted containers (#1648)
Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
2026-05-13 07:51:02 +01:00
Asish Kumar
c4f42c2491 fix: skip empty ingress tls secret names (#1649)
Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
2026-05-13 07:46:47 +01:00
renovate[bot]
ebce557734 fix(deps): update module github.com/ollama/ollama to v0.17.1 [security] (#1647)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-09 11:08:02 +01:00
Three Foxes (in a Trenchcoat)
30463afe5f docs: remove FOSSA license badge and check (#1644)
FOSSA is not a CNCF requirement for sandbox projects. The badge/check
was failing on unrelated third-party licenses with no actionable items
for the k8sgpt maintainers.

Changes:
- Removed FOSSA shield badge from README header
- Removed FOSSA large badge from the License section
- Removed  section heading (was only used for the FOSSA badge)
- Removed License entry from the TOC

The project is still licensed under Apache 2.0 (badge and LICENSE file unchanged).

Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com>
2026-04-25 07:50:20 +01:00