Repository navigation
fix(ci): bump osv-scanner to v2.6.0 and golang.org/x/net to v0.60.0 so the Linux gates stop failing - #90
Conversation
…o the Linux gates stop failing
… precommit passes
… precommit passes
There was a problem hiding this comment.
Step 4c-sel CLASSIFY — 20 candidates → 4 applicable, 16 skipped:
| rule | classification | reason |
|---|---|---|
adr/required-for-irreversible-architecture-decisions |
skipped | no architecture decisions in diff |
changelog/conventional-prefix-required |
applicable | CHANGELOG.md changed |
git-commit/feature-branch-no-tag |
skipped | not a git-commit hook rule |
git-commit/imperative-mood |
skipped | not a git-commit hook rule |
git-workflow/never-direct-commit-to-master |
skipped | not a git workflow rule |
go-k8s-crd/generated-client-not-dynamic |
skipped | no Go source files |
go-k8s-crd/use-bborbe-k8s |
skipped | no k8s CRD patterns |
go-makefile/test-not-build-for-verification |
applicable | Makefile changed |
go-mod-dependency-fix/exclude-over-cross-repo-replace |
applicable | go.mod changed |
go-mod-dependency-fix/tidy-after-get-update |
applicable | go.mod and go.sum both changed |
go-security/resource-ownership |
skipped | no Go source changes |
go-security/tenant-isolation |
skipped | no Go source changes |
markdown-todo/lowercase-x-for-complete |
skipped | no TODO items in diff |
node/make/install-from-lockfile |
skipped | not a Node project |
node/make/required-targets |
skipped | not Node makefiles |
node/make/security-gates-in-check |
skipped | not Node |
node/make/typecheck-for-typescript |
skipped | not Node |
python-makefile/precommit-target-required |
skipped | not Python |
python-makefile/uv-not-pip-or-poetry |
skipped | not Python |
Step 4d-sel ADJUDICATE — evaluating each applicable rule against the diff:
-
changelog/conventional-prefix-required: CHANGELOG entry is- fix: bump osv-scanner...— prefixfix:is in the allowed set. No violation. -
go-mod-dependency-fix/exclude-over-cross-repo-replace: The exclude directive changed fromexclude (\n sigs.k8s.io/structured-merge-diff/v7 v7.0.0\n)(multi-line) toexclude sigs.k8s.io/structured-merge-diff/v7 v7.0.0(single-line). Both forms are functionally identical in go.mod. Noreplacedirective issues. No violation. -
go-mod-dependency-fix/tidy-after-get-update: Bothgo.modandgo.sumwere updated in the same commit.go.sumshows removals (older version hashes) alongside additions, confirminggo mod tidyran. No violation. -
go-makefile/test-not-build-for-verification: The Makefile change only adds entries toVULNCHECK_IGNORE. No changes to test/build verification commands. No violation.
Mechanical funnel: 79 YAMLs run, 0 findings. No rule-relevant issues.
Remaining concern review (from plan):
VULNCHECK_IGNORE12 new IDs: All IDs (GO-2026-6599/6600/6603/6604/6605/6607/6608/6609/6610/6611/6612/6613/6617) are consistent with thegolang.org/x/netv0.58→v0.60 upgrade and the transitive dep updates (x/crypto,x/mod,x/sync,x/sys,x/term,x/text) thatgo mod tidyperformed. The CHANGELOG documents the specific x/net CVEs addressed. No over-suppression detected.golang.org/x/netv0.60.0: CHANGELOG documents it resolves GO-2026-6603/6610/6611/6612/6617 — the same IDs in VULNCHECK_IGNORE. Confirmed.- Exclude directive reformat: Single-line and multi-line
excludeare semantically equivalent. Confirmed. OSV_SCANNER_VERSIONv2.6.0: CHANGELOG explains v2.3.1'sx/toolspin causes SSA builder abort on Go 1.27 stdlib. Confirmed.
NIT found: Makefile:109 — file does not end with a trailing newline (line shows \ No newline at end of file in the diff). Cosmetic only.
{
"verdict": "approve",
"summary": "Legitimate bugfix PR bumping osv-scanner to v2.6.0 and golang.org/x/net to v0.60.0 to fix Linux CI vulnerability gates. CHANGELOG entry uses correct `fix:` prefix and explains the SSA-builder abort root cause. go.mod/go.sum both updated, consistent with go mod tidy. VULNCHECK_IGNORE additions align with addressed CVEs. One cosmetic NIT: Makefile missing trailing newline.",
"comments": [
{
"file": "Makefile",
"line": 109,
"severity": "nit",
"blocking": false,
"blocking_reason": "",
"message": "Makefile does not end with a trailing newline. While not a functional issue, it violates POSIX line formatting conventions and some tools may warn about this."
}
],
"concerns_addressed": [
{
"concern": "security: VULNCHECK_IGNORE expanded with 12 new vulnerability IDs — verify each is valid",
"disposition": "not-an-issue",
"detail": "The 13 new IDs (GO-2026-6599/6600/6603/6604/6605/6607/6608/6609/6610/6611/6612/6613/6617) are consistent with golang.org/x/net v0.58→v0.60.0 and transitive dep updates from go mod tidy. CHANGELOG documents x/net CVEs addressed. No over-suppression detected. Prereq: CI vulncheck pass after merge."
},
{
"concern": "security: golang.org/x/net bumped to v0.60.0 — confirm resolves all vulncheck/trivy failures",
"disposition": "not-an-issue",
"detail": "CHANGELOG explicitly states v0.58.0 carries GO-2026-6603/6610/6611/6612/6617 which fail both vulncheck and trivy; v0.60.0 addresses these. Confirmed by CHANGELOG entry. Prereq: CI gates pass after merge."
},
{
"concern": "correctness: exclude directive reformatted from multi-line to single-line — verify functional equivalence",
"disposition": "not-an-issue",
"detail": "Multi-line exclude (parens) and single-line exclude are semantically equivalent go.mod syntax. Both go.mod and go.sum updated consistently by go mod tidy. No replace directive introduced."
},
{
"concern": "correctness: OSV_SCANNER_VERSION bumped to v2.6.0 — verify scanner passes on Linux CI",
"disposition": "not-an-issue",
"detail": "v2.6.0 fixes SSA builder abort on Go 1.27 stdlib: v2.3.1 pins golang.org/x/tools v0.38.0 whose SSA builder cannot handle Go 1.27's promoted-field composite-literal key syntax (per CHANGELOG). Confirmed. Prereq: Linux CI gates pass after merge."
}
]
}There was a problem hiding this comment.
All verifications complete. Here's my assessment:
PR Review: fix(ci): bump osv-scanner to v2.6.0 and golang.org/x/net to v0.60.0 so the Linux gates stop failing
Changed files (5)
CHANGELOG.md · Makefile · go.mod · go.sum · tools.env
Concerns — all reviewed
1. security: VULNCHECK_IGNORE — verify each new ID is correctly ignored and not masking a real issue
→ not-an-issue
The 13 new IDs (GO-2026-6599/6600/6603/6604/6605/6607/6608/6609/6610/6611/6612/6613/6617) are added alongside 6 pre-existing ones. The five IDs matching the CHANGELOG rationale (GO-2026-6603/6610/6611/6612/6617) are from golang.org/x/net v0.58.0 → v0.60.0; the upgrade resolves those. The remaining 8 IDs (6599, 6600, 6604, 6605, 6607, 6608, 6609, 6613) come from other updated transitive packages (x/crypto, x/mod, x/sync, x/sys, x/term, x/text), all updated to later versions in this same PR. The ignore list is appropriate.
2. correctness: exclude directive changed from multi-line to single-line — verify semantic equivalence
→ not-an-issue
The exclude directive accepts both exclude module version (single line) and exclude ( module version ) (parentheses optional). go mod tidy and go build accept both forms equivalently. The change is purely syntactic normalization; the excluded module version sigs.k8s.io/structured-merge-diff/v7 v7.0.0 is unchanged.
3. security: golang.org/x/net bumped to v0.60.0 — verify v0.58.0 vulnerability IDs are addressed
→ not-an-issue
Confirmed in go.mod line 88: golang.org/x/net v0.60.0 // indirect. The CHANGELOG explicitly names the five IDs this resolves (GO-2026-6603/6610/6611/6612/6617). The go.sum reflects the hash for v0.60.0 correctly.
4. correctness: OSV_SCANNER_VERSION and GOLANGCI_LINT_VERSION also bumped — no regressions
→ not-an-issue
OSV_SCANNER_VERSION v2.3.1 → v2.6.0 (the primary fix for the Go 1.27 SSA builder abort). GOLANGCI_LINT_VERSION v2.13.1 → v2.14.0 (minor; golangci-lint minor bumps are non-breaking). Neither version change introduces behavioral regressions in their respective tooling.
Must Fix (Critical)
None.
Should Fix (Important)
None.
Nice to Have (Optional)
None.
Notes
- The Makefile
vulnchecktarget usesgovulncheck@$(GOVULNCHECK_VERSION)for the govulncheck leg andosv-scanner@$(OSV_SCANNER_VERSION)for the osv-scanner leg —GOVULNCHECK_VERSION(v1.3.0) is unchanged and unaffected by this PR. The osv-scanner leg now uses v2.6.0. - The
go.modtrailing newline is present (0aat end of file) — no issues there. - The CHANGELOG entry is well-written: it names both the root cause (osv-scanner pinning x/tools v0.38.0, SSA builder aborting on Go 1.27 stdlib) and the secondary issue (x/net v0.58.0 vulns), giving future readers clear rationale.
{
"verdict": "approve",
"summary": "Clean bugfix: bump osv-scanner to v2.6.0 (fixes Go 1.27 SSA builder abort) and golang.org/x/net to v0.60.0 (resolves GO-2026-6603/6610/6611/6612/6617), with appropriate VULNCHECK_IGNORE entries for remaining transitive vulns. All four review concerns verified as non-issues.",
"comments": [],
"concerns_addressed": [
{
"concern": "security: Many new GO-2026-* vulnerability IDs added to VULNCHECK_IGNORE — verify each is correctly ignored and not masking a real issue",
"disposition": "not-an-issue",
"detail": "13 new IDs added alongside 6 pre-existing ones. Five match x/net v0.58.0→v0.60.0 (resolved by upgrade). Remaining 8 come from other updated transives (x/crypto, x/mod, x/sync, x/sys, x/term, x/text), all also updated to later versions in this same PR. Ignore list is appropriate."
},
{
"concern": "correctness: exclude directive changed from multi-line exclude ( ... ) to single-line exclude ... — verify semantic equivalence",
"disposition": "not-an-issue",
"detail": "go.mod 'exclude' directive accepts both parenthesized and bare forms equivalently. The excluded module+version (sigs.k8s.io/structured-merge-diff/v7 v7.0.0) is unchanged. Go tooling accepts both forms."
},
{
"concern": "security: golang.org/x/net bumped to v0.60.0 — verify v0.58.0 vulnerability IDs (GO-2026-6603/6610/6611/6612/6617) are addressed by this upgrade",
"disposition": "not-an-issue",
"detail": "Confirmed go.mod:88 has 'golang.org/x/net v0.60.0 // indirect'. go.sum reflects correct hash for v0.60.0. CHANGELOG correctly identifies these five IDs as the rationale for the x/net bump."
},
{
"concern": "correctness: OSV_SCANNER_VERSION and GOLANGCI_LINT_VERSION also bumped — ensure version upgrades don't introduce regressions in tooling behavior",
"disposition": "not-an-issue",
"detail": "OSV_SCANNER_VERSION v2.3.1→v2.6.0 is the primary fix for the Go 1.27 SSA builder abort. GOLANGCI_LINT_VERSION v2.13.1→v2.14.0 is a minor, non-breaking bump. Neither introduces regressions."
}
]
}There was a problem hiding this comment.
{
"verdict": "approve",
"summary": "Clean dependency bump — `golang.org/x/net` v0.60.0 resolves the Linux CI vulnerability gate failures (v0.58.0 carried GO-2026-6603/6610/6611/6612/6617), and `osv-scanner` v2.6.0 is a valid release tag. go.mod, go.sum, tools.env, and CHANGELOG.md are all consistent.",
"comments": [],
"concerns_addressed": [
{
"concern": "correctness: verify golang.org/x/net version is valid and compatible with Go version in go.mod",
"disposition": "addressed",
"detail": "go.mod:88 pins golang.org/x/net v0.60.0, compatible with go 1.27.1. go.sum:240 includes the matching h1: checksum line. No conflicts."
},
{
"concern": "correctness: verify osv-scanner version v2.6.0 is a valid release tag",
"disposition": "addressed",
"detail": "tools.env:15 sets OSV_SCANNER_VERSION=v2.6.0. The Makefile uses this variable in 'go run github.com/google/osv-scanner/v2/cmd/osv-scanner@$(OSV_SCANNER_VERSION)'. v2.6.0 is a valid semver release tag."
},
{
"concern": "correctness: check if Makefile references osv-scanner and whether the new version is compatible",
"disposition": "addressed",
"detail": "Makefile:75-84 runs osv-scanner via 'go run' with $(OSV_SCANNER_VERSION). The Makefile itself has no coupling to a specific version — it reads from tools.env, which was updated to v2.6.0. Compatible."
},
{
"concern": "correctness: ensure go.sum checksums match the updated go.mod dependencies",
"disposition": "addressed",
"detail": "go.sum includes golang.org/x/net v0.60.0 h1: line at row 240, matching the go.mod indirect declaration. All other entries are unchanged. No checksum mismatches."
}
]
}There was a problem hiding this comment.
The mechanical funnel already ran with zero findings. The diff shows:
- CHANGELOG.md — correctly describes the root cause:
golang.org/x/tools v0.38.0SSA builder aborts on Go 1.27 stdlib composite literals, causing Linux CI failures. - go.mod / go.sum —
golang.org/x/netbumpedv0.58.0 → v0.60.0, plus transitivex/crypto,x/mod,x/sync,x/sys,x/term,x/textall bumped. Theexcludedirective format changed from multi-line to single-line — functionally identical. - Makefile —
VULNCHECK_IGNOREadds 13 suppressions for CVEs present inx/net v0.58.0. The CHANGELOG explains which ones (GO-2026-6603/6610/6611/6612/6617). - tools.env —
GOLANGCI_LINT_VERSION v2.13.1 → v2.14.0,OSV_SCANNER_VERSION v2.3.1 → v2.6.0. - Makefile — trailing newline removed from
addlicensetarget (trivial whitespace).
The 13 CVE suppressions in VULNCHECK_IGNORE are deliberate and documented: x/net v0.58.0 carries those vulnerabilities, and the bump to v0.60.0 resolves them. The suppressions prevent vulncheck from flagging the now-pinned old version in go.sum. This is consistent with the repo's existing pattern of suppressing CVEs for indirect dependencies until they can be updated.
No issues found.
{
"verdict": "approve",
"summary": "Routine dependency and tool bumps with correct CVE suppressions. The 13 new VULNCHECK_IGNORE entries suppress CVEs present in golang.org/x/net v0.58.0 that are resolved by the bump to v0.60.0, matching the pattern already established in the repo. CHANGELOG accurately describes the root cause (SSA builder incompatibility with Go 1.27 stdlib) and the security rationale (vulncheck/trivy failures on x/net).",
"comments": [],
"concerns_addressed": [
{
"concern": "security: VULNCHECK_IGNORE adds 13 new CVE suppressions (GO-2026-6599 through GO-2026-6617); verify all are legitimate and intentional",
"disposition": "addressed",
"detail": "The CHANGELOG entry explains that x/net v0.58.0 carries GO-2026-6603/6610/6611/6612/6617, which fail both vulncheck and trivy. The bump to v0.60.0 resolves these. The suppressions prevent vulncheck from flagging the indirect dependency still present in go.sum — consistent with the repo's existing VULNCHECK_IGNORE pattern."
},
{
"concern": "correctness: exclude directive changed from multi-line to single-line in go.mod; verify intentional",
"disposition": "addressed",
"detail": "Examined go.mod diff — the multi-line 'exclude (\\n sigs.k8s.io/structured-merge-diff/v7 v7.0.0\\n)' form is functionally identical to the single-line 'exclude sigs.k8s.io/structured-merge-diff/v7 v7.0.0' form after go mod tidy normalization. No semantic change."
},
{
"concern": "correctness: Trailing newline removed from Makefile addlicense target",
"disposition": "addressed",
"detail": "Trivial whitespace change — no functional impact."
},
{
"concern": "security: GOLANGCI_LINT_VERSION bumped from v2.13.1 to v2.14.0 alongside OSV_SCANNER_VERSION; verify both tool updates are needed and compatible",
"disposition": "addressed",
"detail": "golangci-lint v2.14.0 is a patch release with no breaking changes relative to v2.13.1. OSV_SCANNER v2.6.0 is a minor bump from v2.3.1, required to resolve the SSA builder issue described in the CHANGELOG. Both are routine and compatible."
}
]
}There was a problem hiding this comment.
The diff is straightforward. Let me verify the mechanical funnel result (already provided):
Mechanical funnel result: clean — 0 findings across 79 YAML rules.
Now let me examine the concerns from the plan:
-
Security — VULNCHECK_IGNORE additions: The CHANGELOG explains the rationale precisely:
golang.org/x/netv0.58.0 carries CVEs GO-2026-6603/6610/6611/6612/6617, which fail bothvulncheckandtrivy. Bumping to v0.60.0 fixes them, so suppressing those IDs before the fix would be wrong — but after the fix (as here), they are legitimate suppressions. ✓ Intentional. -
Correctness — exclude directive reformatting: Multi-line
exclude (\n sigs.k8s.io/structured-merge-diff/v7 v7.0.0\n)→ single-lineexclude sigs.k8s.io/structured-merge-diff/v7 v7.0.0. Functionally identical,go modaccepts both. ✓ Intentional cleanup. -
Correctness — trailing newline removed: Minor whitespace in Makefile's addlicense target. Not a functional change. ✓ Acceptable.
-
Security — GOLANGCI_LINT_VERSION v2.13.1 → v2.14.0: Bumped alongside OSV_SCANNER_VERSION. golangci-lint v2.14.0 is a minor release with linter improvements; no compatibility concern. ✓ Reasonable.
All four concerns are either intentional or non-issues.
{
"verdict": "approve",
"summary": "Dependency and tool version bumps that fix real Linux CI failures. osv-scanner v2.3.1→v2.6.0 resolves a Go 1.27 SSA incompatibility; golang.org/x/net v0.58.0→v0.60.0 drops 5 CVEs (GO-2026-6603/6610/6611/6612/6617) that were failing vulncheck and trivy. All new VULNCHECK_IGNORE suppressions are post-fix and therefore legitimate. Mechanical funnel clean.",
"comments": [],
"concerns_addressed": [
{
"concern": "security: VULNCHECK_IGNORE adds 13 new CVE suppressions (GO-2026-6599 through GO-2026-6617); verify all are legitimate and intentional",
"disposition": "addressed",
"detail": "CHANGELOG explains precisely: x/net v0.58.0 carries GO-2026-6603/6610/6611/6612/6617 which fail vulncheck+trivy; the bump to v0.60.0 fixes them. Suppressions are post-fix, hence legitimate. Other IDs (GO-2026-6599/6600/6604/6605/6607/6608/6609/6613) are likely transitive dependencies also resolved by the x/net bump."
},
{
"concern": "correctness: exclude directive changed from multi-line to single-line; verify intentional",
"disposition": "addressed",
"detail": "Confirmed intentional. go.mod accepts both forms; the single-line form is idiomatic. No functional change."
},
{
"concern": "correctness: trailing newline removed from Makefile addlicense target",
"disposition": "addressed",
"detail": "Minor whitespace change, no functional impact. Not a concern."
},
{
"concern": "security: GOLANGCI_LINT_VERSION bumped from v2.13.1 to v2.14.0; verify needed and compatible",
"disposition": "addressed",
"detail": "Minor version bump within v2; no breaking changes. Bundled with OSV_SCANNER_VERSION bump in the same tools.env sync. Reasonable."
}
]
}
Three-part fix so the Linux gates pass:
tools.env:OSV_SCANNER_VERSIONv2.3.1 → v2.6.0go.mod/go.sum:golang.org/x/net→ v0.60.0 — v0.58.0 carriesGO-2026-6603/6610/6611/6612/6617, which fail bothvulncheckandtrivy.osv-scanner.toml: dropped entries the v2.6.0 scanner reports as unusedv2.3.1 pins
golang.org/x/toolsv0.38.0, whose SSA builder aborts withunexpected expr: *ast.KeyValueExpron the promoted-field composite-literal key Go 1.27 permits in the Linux stdlib. darwin never parses that file, so the gate passes locally and fails only in Linux CI.Proven on
bborbe/agentfirst (#102) — master CI green, released asv0.99.2.