Skip to content

chore(deps): lock Go 1.27.4 for release builds (GO-2026-6859) - #176

Merged
leet-c1 merged 1 commit into
mainfrom
lee.tschetter/go-1.27.4
Nov 12, 2026
Merged

leet-c1 merged 1 commit into
mainfrom
lee.tschetter/go-1.27.4

Conversation

@leet-c1

@leet-c1 leet-c1 commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Problem

Release preflight fails on c1i (and any caller with go_vulnerability_scan: true) because the locked Go toolchain is 1.27.3, which has GO-2026-6859 (HTTP/1 server crash from a MaxBytesReader header race in net/http):

Vulnerability #1: GO-2026-6859
  Found in: net/http@go1.27.3
  Fixed in: net/http@go1.27.4
Your code is affected by 1 vulnerability ... exit 3

c1i is the only caller that opts into go_vulnerability_scan; it cannot override the locked toolchain (GOTOOLCHAIN: local), and its verify-locked-go.sh rejects a caller newer than the lock. So the fix belongs here: move the locked Go to 1.27.4.

Change

  • .github/actions/locked-tools/tool-locks.txt: the four Go entries (linux/amd64, linux/arm64, darwin/arm64, windows/amd64) move to go1.27.4, with SHA256s from https://go.dev/dl/?mode=json.
  • go.mod: go 1.27.3 → go 1.27.4.
  • docs/release-workflow.md: the lock table follows.
  • scripts/test-tool-integrity.py: the newer-than-locked gate fixture uses 1.27.5 (1.27.4 is now equal, not newer), the allowed-directive loop includes 1.27.4, and the single-version sanity fixture mutates 1.27.4 → 1.27.5.
  • .github/actions/ca-trust-guard/README.md: the module-directive mention follows; the Go 1.27.3 crypto/x509 incident notes are unchanged (they describe behaviour, not the lock).

Verification

  • go test ./... under Go 1.27.4: pass.
  • python3 scripts/test-tool-integrity.py: 28 tests, OK (1 skipped).
  • Checksums are the official values from https://go.dev/dl/?mode=json for go1.27.4.

Release note

Merging this alone does not change what @v4 resolves to; callers pinned to @v4 need a new v4.x release cut from this commit. Until then, c1i's release stays blocked (its preflight correctly refuses a Go 1.27.3 build).

Related

#175 also touches locked-tools; this change only rewrites the Go lock entries and the gate fixtures, so it should merge independently. Upstream: c1i#202 bumps c1i's own go directive to 1.27.4 for CI.

@leet-c1
leet-c1 requested a review from a team November 12, 2026 19:18
@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Superseded — see the current review report for commit 9a633d6128c7

General PR Review: chore(deps): lock Go 1.27.4 for release builds (GO-2026-6859)

Blocking Issues: 0 | Suggestions: 1 | Threads Resolved: 0
Criteria: Criteria status: none loaded - .claude/skills/ci-review.md was not found at trusted base 14095f92a811.
Review mode: full
View review run

Review Summary

This PR moves the locked Go toolchain from 1.27.3 to 1.27.4. It updates all four go entries in tool-locks.txt (linux/amd64, linux/arm64, darwin/arm64, windows/amd64), changes the go.mod directive to go 1.27.4, and updates the docs lock table and the ca-trust-guard README to match. It also shifts the verify-locked-go.sh / locked-tools.sh test fixtures so that "newer than locked" now means 1.27.5. I scanned the full diff for security and correctness. The lock file and docs table use the same SHA256 values for each platform. The "go list -m" call count in the test goes from 4 to 5, which matches the extra 1.27.4 entry in the allowed-directive loop. The remaining 1.27.3 fixtures (EXPECTED_GO_VERSION "1.27.3" as a malformed no-go-prefix value, and go 1.27.3 module directives) are still valid at or below the new lock. CI's setup-go reads go-version-file: go.mod, so CI picks up 1.27.4 too. The version-gated >=1.27.3 incident checks in cmd/ca-trust-guard describe runtime behaviour and are correctly left alone. No repo-local criteria loaded, so I applied the base criteria only. Coverage gap: I could not check the new SHA256 values against https://go.dev/dl/?mode=json from this read-only run. They are internally consistent and the PR says they came from upstream, but nothing here confirms them independently. The install step would fail closed on a mismatch rather than install a bad toolchain.

Security Issues

None found.

Correctness Issues

None found.

Suggestions

  • New (low confidence/impact): scripts/ca-trust-guard.sh:6: the header comment still says "the repository module and its Go 1.27.3 toolchain requirement". That is the same statement this PR updated in .github/actions/ca-trust-guard/README.md:70, so the two now disagree. The file is not in the diff, so there is no inline comment.
Prompt for AI agents
Verify each finding against the current code and only fix it if needed.

## Suggestions

In `scripts/ca-trust-guard.sh`:
- Around line 6: The comment "Vet/tests retain the repository module and its Go 1.27.3 toolchain requirement." refers to the go.mod directive, which this PR changed to 1.27.4. Change "Go 1.27.3" to "Go 1.27.4" to match go.mod and .github/actions/ca-trust-guard/README.md line 70.

@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Superseded — see the current review report for commit 36a6301ec84e

General PR Review: chore(deps): lock Go 1.27.4 for release builds (GO-2026-6859)

Blocking Issues: 0 | Suggestions: 1 | Threads Resolved: 0
Criteria: Criteria status: none loaded - .claude/skills/ci-review.md was not found at trusted base 14095f92a811.
Review mode: full
View review run

Review Summary

This PR moves the locked Go toolchain from 1.27.3 to 1.27.4. It updates all four go entries in tool-locks.txt (linux/amd64, linux/arm64, darwin/arm64, windows/amd64), changes the go.mod directive to go 1.27.4, and updates the docs lock table and the ca-trust-guard README to match. It also shifts the verify-locked-go.sh / locked-tools.sh test fixtures so that "newer than locked" now means 1.27.5. I scanned the full diff for security and correctness. The lock file and docs table use the same SHA256 values for each platform. The "go list -m" call count in the test goes from 4 to 5, which matches the extra 1.27.4 entry in the allowed-directive loop. The remaining 1.27.3 fixtures (EXPECTED_GO_VERSION "1.27.3" as a malformed no-go-prefix value, and go 1.27.3 module directives) are still valid at or below the new lock. CI's setup-go reads go-version-file: go.mod, so CI picks up 1.27.4 too. The version-gated >=1.27.3 incident checks in cmd/ca-trust-guard describe runtime behaviour and are correctly left alone. No repo-local criteria loaded, so I applied the base criteria only. Coverage gap: I could not check the new SHA256 values against https://go.dev/dl/?mode=json from this read-only run. They are internally consistent and the PR says they came from upstream, but nothing here confirms them independently. The install step would fail closed on a mismatch rather than install a bad toolchain.

Security Issues

None found.

Correctness Issues

None found.

Suggestions

  • New (low confidence/impact): scripts/ca-trust-guard.sh:6: the header comment still says "the repository module and its Go 1.27.3 toolchain requirement". That is the same statement this PR updated in .github/actions/ca-trust-guard/README.md:70, so the two now disagree. The file is not in the diff, so there is no inline comment.
Prompt for AI agents
Verify each finding against the current code and only fix it if needed.

## Suggestions

In `scripts/ca-trust-guard.sh`:
- Around line 6: The comment "Vet/tests retain the repository module and its Go 1.27.3 toolchain requirement." refers to the go.mod directive, which this PR changed to 1.27.4. Change "Go 1.27.3" to "Go 1.27.4" to match go.mod and .github/actions/ca-trust-guard/README.md line 70.

Reviewed commit: 9a633d6128c7

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blocking issues found — see the full review report

Go 1.27.4 fixes GO-2026-6859, an HTTP/1 MaxBytesReader header race in
net/http. govulncheck reports it as reachable from c1i, which is the only
caller that sets go_vulnerability_scan; its release preflight fails and no
release can publish while the locked toolchain is 1.27.3.

Bump the four tool-lock entries to go1.27.4 (SHA256s from
https://go.dev/dl/?mode=json) and the module's go directive. Update the
lock table and the locked-Go gate fixtures: the newer-than-locked case now
uses 1.27.5, and the single-version sanity fixture mutates 1.27.4 to
1.27.5. The ca-trust-guard x509 incident notes keep their 1.27.3 wording
(they describe behaviour, not the lock).

References:
- https://pkg.go.dev/vuln/GO-2026-6859

Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
@leet-c1
leet-c1 force-pushed the lee.tschetter/go-1.27.4 branch from 9a633d6 to 36a6301 Compare November 12, 2026 19:22
@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Superseded — see the current review report for commit 36a6301ec84e

General PR Review: chore(deps): lock Go 1.27.4 for release builds (GO-2026-6859)

Blocking Issues: 0 | Suggestions: 0 | Threads Resolved: 0
Criteria: Criteria status: none loaded - .claude/skills/ci-review.md was not found at trusted base 14095f92a811.
Review mode: full
View review run

Review Summary

This PR moves all four locked Go toolchain entries in .github/actions/locked-tools/tool-locks.txt (linux/amd64, linux/arm64, darwin/arm64, windows/amd64) from go1.27.3 to go1.27.4. It also bumps the go.mod directive and updates the doc lock table, the ca-trust-guard README and script comments, and the scripts/test-tool-integrity.py fixtures. That matches what the description says. I scanned the full diff for security and correctness problems. No repo-local criteria loaded, so I applied only the base criteria.

The test fixtures shift consistently:

  • The newer-than-lock case is now 1.27.5.
  • The allowed-directive loop now includes 1.27.4, and the go list -m count goes from 4 to 5 to match.
  • The single-version sanity mutation now uses 1.27.4 → 1.27.5.

The remaining 1.27.3 references are fine:

  • README.md:60, summarize.go:18, main_test.go:136 and release-workflow.md:176 describe a version floor (>=1.27.3) for runtime behaviour, not the lock.
  • The go 1.27.3 fixtures in test-tool-integrity.py (lines 276/291/307/332/433) still test what they did before, since 1.27.3 is older than the lock and still allowed.

Coverage gap: this sandbox has no network access, so I could not check the new SHA256 values against https://go.dev/dl/?mode=json. They match the doc table, and a wrong value would make the install fail rather than accept a bad download. The go.mod change touches only the go directive; module requirements are unchanged.

Security Issues

None found.

Correctness Issues

None found.

Suggestions

None.

Resolved prior findings

  • The earlier summary note that the scripts/ca-trust-guard.sh:6 header still said "Go 1.27.3 toolchain requirement" is fixed: it now reads "Go 1.27.4", matching .github/actions/ca-trust-guard/README.md:70.

@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

General PR Review: chore(deps): lock Go 1.27.4 for release builds (GO-2026-6859)

Blocking Issues: 0 | Suggestions: 0 | Threads Resolved: 0
Criteria: Criteria status: none loaded - .claude/skills/ci-review.md was not found at trusted base 14095f92a811.
Review mode: full
View review run

Review Summary

This PR moves all four locked Go toolchain entries in .github/actions/locked-tools/tool-locks.txt (linux/amd64, linux/arm64, darwin/arm64, windows/amd64) from go1.27.3 to go1.27.4. It also bumps the go.mod directive and updates the doc lock table, the ca-trust-guard README and script comments, and the scripts/test-tool-integrity.py fixtures. That matches what the description says. I scanned the full diff for security and correctness problems. No repo-local criteria loaded, so I applied only the base criteria.

The test fixtures shift consistently:

  • The newer-than-lock case is now 1.27.5.
  • The allowed-directive loop now includes 1.27.4, and the go list -m count goes from 4 to 5 to match.
  • The single-version sanity mutation now uses 1.27.4 → 1.27.5.

The remaining 1.27.3 references are fine:

  • README.md:60, summarize.go:18, main_test.go:136 and release-workflow.md:176 describe a version floor (>=1.27.3) for runtime behaviour, not the lock.
  • The go 1.27.3 fixtures in test-tool-integrity.py (lines 276/291/307/332/433) still test what they did before, since 1.27.3 is older than the lock and still allowed.

Coverage gap: this sandbox has no network access, so I could not check the new SHA256 values against https://go.dev/dl/?mode=json. They match the doc table, and a wrong value would make the install fail rather than accept a bad download. The go.mod change touches only the go directive; module requirements are unchanged.

Security Issues

None found.

Correctness Issues

None found.

Suggestions

None.

Resolved prior findings

  • The earlier summary note that the scripts/ca-trust-guard.sh:6 header still said "Go 1.27.3 toolchain requirement" is fixed: it now reads "Go 1.27.4", matching .github/actions/ca-trust-guard/README.md:70.

Reviewed commit: 36a6301ec84e

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blocking issues found — see the full review report

@leet-c1
leet-c1 merged commit 57082aa into main Nov 12, 2026
7 checks passed
@leet-c1
leet-c1 deleted the lee.tschetter/go-1.27.4 branch November 12, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants