CI Failure Investigation - Run #38017
Summary
The lint-go job fails early because the golangci-lint install step downloads a payload that tar -xz cannot unzip, so the job stops before lint checks execute.
Failure Details
Root Cause Analysis
The install script sets GOLANGCI_LINT_VERSION="v2.8.0", streams curl -sSL https://github.com/golangci/golangci-lint/releases/download/v2.8.0/golangci-lint-\$\{GOLANGCI_LINT_VERSION#v}-$GOOS-$GOARCH.tar.gz directly into tar -xz, but shortly afterward tar reports gzip: stdin: not in gzip format and aborts. This means the download returned non-gzip content (usually an HTML error/redirect) yet the workflow continued anyway, so the extraction step fails without a helpful HTTP error. The release still publishes golangci-lint-2.8.0-linux-amd64.tar.gz, so the URL is valid, but the runner never confirmed a successful download before handing the stream to tar.
Failed Jobs and Errors
lint-go: tar: Error is not recoverable: exiting now after gzip: stdin: not in gzip format while extracting the downloaded golangci-lint tarball.
Investigation Findings
- The lint-go job is the only failure and it fails right after the download/extraction block; all earlier Go formatting and lint setup succeeded.
- The golangci-lint release asset for linux-amd64 exists, but the job received a payload that
tar could not read, so the HTTP download almost certainly returned HTML (404, rate limit, or similar) instead of the tarball.
- Because we pipe
curl straight into tar -xz, there is no visible HTTP status code when the download fails, and the log only shows the inferior tar error.
Recommended Actions
Prevention Strategies
Always verify external tool downloads (HTTP status, checksum) before piping them into decompression commands so that CI fails with a descriptive error instead of a generic tar: not in gzip format.
AI Team Self-Improvement
When editing workflows, remind agents to validate remote downloads (status/checksums) before extraction and to document the third-party domains that must remain reachable.
Historical Context
Searching [CI Failure Doctor] issues with label cookie returned 33 hits, but none describe this golangci-lint download failure, so opening a new investigation is appropriate.
🩺 Diagnosis provided by CI Failure Doctor
To install this agentic workflow, run
gh aw add githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d
CI Failure Investigation - Run #38017
Summary
The
lint-gojob fails early because the golangci-lint install step downloads a payload thattar -xzcannot unzip, so the job stops before lint checks execute.Failure Details
Root Cause Analysis
The install script sets
GOLANGCI_LINT_VERSION="v2.8.0", streamscurl -sSL https://github.com/golangci/golangci-lint/releases/download/v2.8.0/golangci-lint-\$\{GOLANGCI_LINT_VERSION#v}-$GOOS-$GOARCH.tar.gzdirectly intotar -xz, but shortly afterwardtarreportsgzip: stdin: not in gzip formatand aborts. This means the download returned non-gzip content (usually an HTML error/redirect) yet the workflow continued anyway, so the extraction step fails without a helpful HTTP error. The release still publishesgolangci-lint-2.8.0-linux-amd64.tar.gz, so the URL is valid, but the runner never confirmed a successful download before handing the stream totar.Failed Jobs and Errors
lint-go:tar: Error is not recoverable: exiting nowaftergzip: stdin: not in gzip formatwhile extracting the downloaded golangci-lint tarball.Investigation Findings
tarcould not read, so the HTTP download almost certainly returned HTML (404, rate limit, or similar) instead of the tarball.curlstraight intotar -xz, there is no visible HTTP status code when the download fails, and the log only shows the inferiortarerror.Recommended Actions
curl --fail(and maybe--retry 3) and/or save the archive to disk so we can check its size/content before extracting.golangci-lintGitHub Action or cache the binary, eliminating the need to hit the release assets on every run.Prevention Strategies
Always verify external tool downloads (HTTP status, checksum) before piping them into decompression commands so that CI fails with a descriptive error instead of a generic
tar: not in gzip format.AI Team Self-Improvement
When editing workflows, remind agents to validate remote downloads (status/checksums) before extraction and to document the third-party domains that must remain reachable.
Historical Context
Searching
[CI Failure Doctor]issues with labelcookiereturned 33 hits, but none describe this golangci-lint download failure, so opening a new investigation is appropriate.