[exp] cmd/gorelease: diagnose load errors with replace or exclude

4 views
Skip to first unread message

Arne Leder (Gerrit)

unread,
Jul 18, 2026, 10:22:25 AMJul 18
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Arne Leder has uploaded the change for review

Commit message

cmd/gorelease: diagnose load errors with replace or exclude

When package loading fails for a local release module, report when its
go.mod contains replace or exclude directives. Those directives only
apply within the main module and may explain the package errors.

Fixes golang/go#37559
Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2

Change diff

diff --git a/cmd/gorelease/gorelease.go b/cmd/gorelease/gorelease.go
index e155323..ff684eb 100644
--- a/cmd/gorelease/gorelease.go
+++ b/cmd/gorelease/gorelease.go
@@ -413,6 +413,16 @@

m.diagnostics = append(m.diagnostics, prepareDiagnostics...)
m.diagnostics = append(m.diagnostics, loadDiagnostics...)
+ if packagesHaveErrors(m.pkgs) {
+ // m.goModFile was parsed with ParseLax, which ignores replace and
+ // exclude directives.
+ modFile, err := modfile.Parse(m.goModPath, m.goModData, nil)
+ if err == nil {
+ if d := replaceExcludeDiagnostic(modFile); d != "" {
+ m.diagnostics = append(m.diagnostics, d)
+ }
+ }
+ }

highestVersion, err := findSelectedVersion(ctx, tmpLoadDir, m.modPath)
if err != nil {
@@ -1321,9 +1331,9 @@
// from being loaded.
func loadPackages(ctx context.Context, modPath, modRoot, loadDir string, goModData, goSumData []byte, pkgPaths []string) (pkgs []*packages.Package, diagnostics []string, err error) {
// Load packages.
- // TODO(jayconrod): if there are errors loading packages in the release
- // version, try loading in the release directory. Errors there would imply
- // that packages don't load without replace / exclude directives.
+ // If packages fail to load, loadLocalModule may append a diagnostic
+ // explaining that replace and exclude directives in the main module's
+ // go.mod file are not applied here.
cfg := &packages.Config{
Mode: packages.NeedName | packages.NeedTypes | packages.NeedImports | packages.NeedDeps,
Dir: loadDir,
@@ -1354,6 +1364,34 @@
return pkgs, diagnostics, nil
}

+func packagesHaveErrors(pkgs []*packages.Package) bool {
+ for _, pkg := range pkgs {
+ if len(pkg.Errors) > 0 {
+ return true
+ }
+ }
+ return false
+}
+
+func replaceExcludeDiagnostic(f *modfile.File) string {
+ if f == nil {
+ return ""
+ }
+ hasReplace := len(f.Replace) > 0
+ hasExclude := len(f.Exclude) > 0
+ if !hasReplace && !hasExclude {
+ return ""
+ }
+ switch {
+ case hasReplace && hasExclude:
+ return "go.mod: this module contains replace and exclude directives. These directives only apply within the main module and may cause the errors above."
+ case hasReplace:
+ return "go.mod: this module contains replace directives. These directives only apply within the main module and may cause the errors above."
+ default:
+ return "go.mod: this module contains exclude directives. These directives only apply within the main module and may cause the errors above."
+ }
+}
+
type packagePair struct {
base, release *packages.Package
}
diff --git a/cmd/gorelease/testdata/mod/example.com_dep_v1.0.0.txt b/cmd/gorelease/testdata/mod/example.com_dep_v1.0.0.txt
new file mode 100644
index 0000000..e3cb5da
--- /dev/null
+++ b/cmd/gorelease/testdata/mod/example.com_dep_v1.0.0.txt
@@ -0,0 +1,10 @@
+Module example.com/dep v1.0.0 is broken: package dep does not export Fixed.
+
+-- go.mod --
+module example.com/dep
+
+go 1.12
+-- dep.go --
+package dep
+
+const Broken = 1
diff --git a/cmd/gorelease/testdata/mod/example.com_dep_v1.0.1.txt b/cmd/gorelease/testdata/mod/example.com_dep_v1.0.1.txt
new file mode 100644
index 0000000..af9380e
--- /dev/null
+++ b/cmd/gorelease/testdata/mod/example.com_dep_v1.0.1.txt
@@ -0,0 +1,10 @@
+Module example.com/dep v1.0.1 exports Fixed.
+
+-- go.mod --
+module example.com/dep
+
+go 1.12
+-- dep.go --
+package dep
+
+const Fixed = 1
diff --git a/cmd/gorelease/testdata/replace_exclude/exclude_load_error.test b/cmd/gorelease/testdata/replace_exclude/exclude_load_error.test
new file mode 100644
index 0000000..d2296bf
--- /dev/null
+++ b/cmd/gorelease/testdata/replace_exclude/exclude_load_error.test
@@ -0,0 +1,34 @@
+base=none
+release=v0.0.1
+success=false
+proxyVersions=example.com/d...@v1.0.0,example.com/d...@v1.0.1
+-- want --
+# example.com/replaceexclude/exclude
+## errors in release version:
+exclude.go:5:15: undefined: dep.Fixed
+
+# diagnostics
+go.mod: this module contains exclude directives. These directives only apply within the main module and may cause the errors above.
+
+# summary
+v0.0.1 is not a valid semantic version for this release.
+Errors were found in one or more packages.
+-- go.mod --
+module example.com/replaceexclude/exclude
+
+go 1.12
+
+require example.com/dep v1.0.0
+
+exclude example.com/dep v1.0.0
+-- go.sum --
+example.com/dep v1.0.0 h1:xsd8Ex2nR4lIFBJelcK7XXBZ7uHtMNiojwKRBpz3kJc=
+example.com/dep v1.0.0/go.mod h1:CvfpVsXlEpvIlWpb1Ed74iO4zsMolnHdaXcIZt5jBrw=
+example.com/dep v1.0.1 h1:qP3X/Eyoz9bTQYI6mY9skqEZOzXrYLn+p29WdO7cNmY=
+example.com/dep v1.0.1/go.mod h1:CvfpVsXlEpvIlWpb1Ed74iO4zsMolnHdaXcIZt5jBrw=
+-- exclude.go --
+package exclude
+
+import "example.com/dep"
+
+const X = dep.Fixed
diff --git a/cmd/gorelease/testdata/replace_exclude/load_error_no_directives.test b/cmd/gorelease/testdata/replace_exclude/load_error_no_directives.test
new file mode 100644
index 0000000..9928a2c
--- /dev/null
+++ b/cmd/gorelease/testdata/replace_exclude/load_error_no_directives.test
@@ -0,0 +1,27 @@
+base=none
+release=v0.0.1
+success=false
+proxyVersions=example.com/d...@v1.0.0
+-- want --
+# example.com/replaceexclude/nodep
+## errors in release version:
+nodep.go:5:15: undefined: dep.Fixed
+
+# summary
+v0.0.1 is not a valid semantic version for this release.
+Errors were found in one or more packages.
+-- go.mod --
+module example.com/replaceexclude/nodep
+
+go 1.12
+
+require example.com/dep v1.0.0
+-- go.sum --
+example.com/dep v1.0.0 h1:xsd8Ex2nR4lIFBJelcK7XXBZ7uHtMNiojwKRBpz3kJc=
+example.com/dep v1.0.0/go.mod h1:CvfpVsXlEpvIlWpb1Ed74iO4zsMolnHdaXcIZt5jBrw=
+-- nodep.go --
+package nodep
+
+import "example.com/dep"
+
+const X = dep.Fixed
diff --git a/cmd/gorelease/testdata/replace_exclude/replace_load_error.test b/cmd/gorelease/testdata/replace_exclude/replace_load_error.test
new file mode 100644
index 0000000..86faf5a
--- /dev/null
+++ b/cmd/gorelease/testdata/replace_exclude/replace_load_error.test
@@ -0,0 +1,40 @@
+base=none
+release=v0.0.1
+success=false
+proxyVersions=example.com/d...@v1.0.0
+-- want --
+# example.com/replaceexclude/replace
+## errors in release version:
+replace.go:5:15: undefined: dep.Fixed
+
+# diagnostics
+go.mod: this module contains replace directives. These directives only apply within the main module and may cause the errors above.
+
+# summary
+v0.0.1 is not a valid semantic version for this release.
+Errors were found in one or more packages.
+-- go.mod --
+module example.com/replaceexclude/replace
+
+go 1.12
+
+require example.com/dep v1.0.0
+
+replace example.com/dep => ./fixed
+-- go.sum --
+example.com/dep v1.0.0 h1:xsd8Ex2nR4lIFBJelcK7XXBZ7uHtMNiojwKRBpz3kJc=
+example.com/dep v1.0.0/go.mod h1:CvfpVsXlEpvIlWpb1Ed74iO4zsMolnHdaXcIZt5jBrw=
+-- replace.go --
+package replace
+
+import "example.com/dep"
+
+const X = dep.Fixed
+-- fixed/go.mod --
+module example.com/dep
+
+go 1.12
+-- fixed/dep.go --
+package dep
+
+const Fixed = 1

Change information

Files:
  • M cmd/gorelease/gorelease.go
  • A cmd/gorelease/testdata/mod/example.com_dep_v1.0.0.txt
  • A cmd/gorelease/testdata/mod/example.com_dep_v1.0.1.txt
  • A cmd/gorelease/testdata/replace_exclude/exclude_load_error.test
  • A cmd/gorelease/testdata/replace_exclude/load_error_no_directives.test
  • A cmd/gorelease/testdata/replace_exclude/replace_load_error.test
Change size: M
Delta: 6 files changed, 162 insertions(+), 3 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: exp
Gerrit-Branch: master
Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
Gerrit-Change-Number: 802580
Gerrit-PatchSet: 1
Gerrit-Owner: Arne Leder <leder...@gmail.com>
unsatisfied_requirement
satisfied_requirement
open
diffy

Gopher Robot (Gerrit)

unread,
Jul 18, 2026, 10:26:41 AMJul 18
to Arne Leder, goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Message from Gopher Robot

Congratulations on opening your first change. Thank you for your contribution!

Next steps:
A maintainer will review your change and provide feedback. See
https://go.dev/doc/contribute#review for more info and tips to get your
patch through code review.

Most changes in the Go project go through a few rounds of revision. This can be
surprising to people new to the project. The careful, iterative review process
is our way of helping mentor contributors and ensuring that their contributions
have a lasting impact.

Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: exp
Gerrit-Branch: master
Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
Gerrit-Change-Number: 802580
Gerrit-PatchSet: 1
Gerrit-Owner: Arne Leder <leder...@gmail.com>
Gerrit-CC: Gopher Robot <go...@golang.org>
Gerrit-Comment-Date: Sat, 18 Jul 2026 14:26:36 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
unsatisfied_requirement
satisfied_requirement
open
diffy

Arne Leder (Gerrit)

unread,
Jul 27, 2026, 11:42:32 AM (11 days ago) Jul 27
to goph...@pubsubhelper.golang.org, Alan Donovan, Dmitri Shuralyov, Jonathan Amsterdam, Gopher Robot, golang-co...@googlegroups.com
Attention needed from Alan Donovan, Dmitri Shuralyov and Jonathan Amsterdam

Arne Leder added 1 comment

Patchset-level comments
File-level comment, Patchset 2 (Latest):
Arne Leder . unresolved

@Jonathan Amsterdam @Alan Donovan Friendly ping: PTAL when you have a moment. Thanks!

Open in Gerrit

Related details

Attention is currently required from:
  • Alan Donovan
  • Dmitri Shuralyov
  • Jonathan Amsterdam
Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: exp
    Gerrit-Branch: master
    Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
    Gerrit-Change-Number: 802580
    Gerrit-PatchSet: 2
    Gerrit-Owner: Arne Leder <leder...@gmail.com>
    Gerrit-Reviewer: Alan Donovan <adon...@google.com>
    Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Reviewer: Jonathan Amsterdam <j...@google.com>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Attention: Jonathan Amsterdam <j...@google.com>
    Gerrit-Attention: Alan Donovan <adon...@google.com>
    Gerrit-Comment-Date: Mon, 27 Jul 2026 15:42:25 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Jonathan Amsterdam (Gerrit)

    unread,
    Aug 6, 2026, 4:55:50 PM (yesterday) Aug 6
    to Arne Leder, goph...@pubsubhelper.golang.org, Alan Donovan, Dmitri Shuralyov, Gopher Robot, golang-co...@googlegroups.com
    Attention needed from Alan Donovan, Arne Leder and Dmitri Shuralyov

    Jonathan Amsterdam added 2 comments

    File cmd/gorelease/gorelease.go
    Line 1376, Patchset 2 (Latest):func replaceExcludeDiagnostic(f *modfile.File) string {
    Jonathan Amsterdam . unresolved

    constructReplace...

    otherwise it sounds like you're replacing something

    Line 1386, Patchset 2 (Latest): case hasReplace && hasExclude:

    return "go.mod: this module contains replace and exclude directives. These directives only apply within the main module and may cause the errors above."
    case hasReplace:

    return "go.mod: this module contains replace directives. These directives only apply within the main module and may cause the errors above."
    default:
    Jonathan Amsterdam . unresolved

    var dirs string

    switch {
    case x & y:
    dirs = "x and y"
    case x:
    case y:
    default:
    handle the neither case here, more symmetric
    return ""
    ...
    }

    return fmt.Sprintf("...%s...")

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alan Donovan
    • Arne Leder
    • Dmitri Shuralyov
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: exp
    Gerrit-Branch: master
    Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
    Gerrit-Change-Number: 802580
    Gerrit-PatchSet: 2
    Gerrit-Owner: Arne Leder <leder...@gmail.com>
    Gerrit-Reviewer: Alan Donovan <adon...@google.com>
    Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Reviewer: Jonathan Amsterdam <j...@google.com>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Attention: Arne Leder <leder...@gmail.com>
    Gerrit-Attention: Alan Donovan <adon...@google.com>
    Gerrit-Comment-Date: Thu, 06 Aug 2026 20:55:46 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Arne Leder (Gerrit)

    unread,
    1:59 PM (9 hours ago) 1:59 PM
    to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
    Attention needed from Alan Donovan, Arne Leder and Dmitri Shuralyov

    Arne Leder uploaded new patchset

    Arne Leder uploaded patch set #4 to this change.
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alan Donovan
    • Arne Leder
    • Dmitri Shuralyov
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: newpatchset
    Gerrit-Project: exp
    Gerrit-Branch: master
    Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
    Gerrit-Change-Number: 802580
    Gerrit-PatchSet: 4
    unsatisfied_requirement
    open
    diffy

    Arne Leder (Gerrit)

    unread,
    2:01 PM (9 hours ago) 2:01 PM
    to goph...@pubsubhelper.golang.org, Alan Donovan, Dmitri Shuralyov, Jonathan Amsterdam, Gopher Robot, golang-co...@googlegroups.com
    Attention needed from Alan Donovan, Dmitri Shuralyov and Jonathan Amsterdam

    Arne Leder added 3 comments

    Patchset-level comments
    File-level comment, Patchset 4 (Latest):
    Arne Leder . resolved

    Thanks for the review! I’ve addressed both comments in patch set 4 and verified that all tests pass with go test ./.... PTAL.

    File cmd/gorelease/gorelease.go
    Line 1376, Patchset 2:func replaceExcludeDiagnostic(f *modfile.File) string {
    Jonathan Amsterdam . resolved

    constructReplace...

    otherwise it sounds like you're replacing something

    Arne Leder

    Done

    Line 1386, Patchset 2: case hasReplace && hasExclude:

    return "go.mod: this module contains replace and exclude directives. These directives only apply within the main module and may cause the errors above."
    case hasReplace:
    return "go.mod: this module contains replace directives. These directives only apply within the main module and may cause the errors above."
    default:
    Jonathan Amsterdam . resolved

    var dirs string

    switch {
    case x & y:
    dirs = "x and y"
    case x:
    case y:
    default:
    handle the neither case here, more symmetric
    return ""
    ...
    }

    return fmt.Sprintf("...%s...")

    Arne Leder

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alan Donovan
    • Dmitri Shuralyov
    • Jonathan Amsterdam
    Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: exp
    Gerrit-Branch: master
    Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
    Gerrit-Change-Number: 802580
    Gerrit-PatchSet: 4
    Gerrit-Owner: Arne Leder <leder...@gmail.com>
    Gerrit-Reviewer: Alan Donovan <adon...@google.com>
    Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Reviewer: Jonathan Amsterdam <j...@google.com>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Attention: Jonathan Amsterdam <j...@google.com>
    Gerrit-Attention: Alan Donovan <adon...@google.com>
    Gerrit-Comment-Date: Fri, 07 Aug 2026 18:01:47 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Jonathan Amsterdam <j...@google.com>
    unsatisfied_requirement
    open
    diffy

    Jonathan Amsterdam (Gerrit)

    unread,
    2:52 PM (8 hours ago) 2:52 PM
    to Arne Leder, goph...@pubsubhelper.golang.org, Alan Donovan, Dmitri Shuralyov, Gopher Robot, golang-co...@googlegroups.com
    Attention needed from Alan Donovan, Arne Leder and Dmitri Shuralyov

    Jonathan Amsterdam voted

    Auto-Submit+1
    Code-Review+2
    Commit-Queue+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alan Donovan
    • Arne Leder
    • Dmitri Shuralyov
    Submit Requirements:
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: exp
    Gerrit-Branch: master
    Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
    Gerrit-Change-Number: 802580
    Gerrit-PatchSet: 4
    Gerrit-Owner: Arne Leder <leder...@gmail.com>
    Gerrit-Reviewer: Alan Donovan <adon...@google.com>
    Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Reviewer: Jonathan Amsterdam <j...@google.com>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Attention: Arne Leder <leder...@gmail.com>
    Gerrit-Attention: Alan Donovan <adon...@google.com>
    Gerrit-Comment-Date: Fri, 07 Aug 2026 18:52:20 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Amsterdam (Gerrit)

    unread,
    3:01 PM (8 hours ago) 3:01 PM
    to Arne Leder, goph...@pubsubhelper.golang.org, golang...@luci-project-accounts.iam.gserviceaccount.com, Alan Donovan, Dmitri Shuralyov, Gopher Robot, golang-co...@googlegroups.com
    Attention needed from Alan Donovan, Arne Leder and Dmitri Shuralyov

    Jonathan Amsterdam added 1 comment

    Patchset-level comments
    File-level comment, Patchset 2:
    Arne Leder . resolved

    @Jonathan Amsterdam @Alan Donovan Friendly ping: PTAL when you have a moment. Thanks!

    Jonathan Amsterdam

    Acknowledged

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alan Donovan
    • Arne Leder
    • Dmitri Shuralyov
    Submit Requirements:
    • requirement satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement is not satisfiedTryBots-Pass
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: exp
    Gerrit-Branch: master
    Gerrit-Change-Id: Ic94015caccd2623300e55279a9e2856803cbc5f2
    Gerrit-Change-Number: 802580
    Gerrit-PatchSet: 4
    Gerrit-Owner: Arne Leder <leder...@gmail.com>
    Gerrit-Reviewer: Alan Donovan <adon...@google.com>
    Gerrit-Reviewer: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Reviewer: Jonathan Amsterdam <j...@google.com>
    Gerrit-CC: Gopher Robot <go...@golang.org>
    Gerrit-Attention: Dmitri Shuralyov <dmit...@golang.org>
    Gerrit-Attention: Arne Leder <leder...@gmail.com>
    Gerrit-Attention: Alan Donovan <adon...@google.com>
    Gerrit-Comment-Date: Fri, 07 Aug 2026 19:01:32 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Arne Leder <leder...@gmail.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages