[pkgsite] all: add LatestVersion to ModuleInfo

0 views
Skip to first unread message

Ethan Lee (Gerrit)

unread,
Mar 19, 2026, 10:45:36 AM (20 hours ago) Mar 19
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Ethan Lee has uploaded the change for review

Commit message

all: add LatestVersion to ModuleInfo

- Add LatestVersion field to internal.ModuleInfo and update tests
accordingly.
Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7

Change diff

diff --git a/internal/api/api.go b/internal/api/api.go
index d27e49b..289c06e 100644
--- a/internal/api/api.go
+++ b/internal/api/api.go
@@ -148,6 +148,7 @@
ModuleVersion: unit.Version,
Synopsis: synopsis,
IsStandardLibrary: stdlib.Contains(unit.ModulePath),
+ IsLatest: unit.Version == unit.LatestVersion,
GOOS: goos,
GOARCH: goarch,
Docs: docs,
diff --git a/internal/discovery.go b/internal/discovery.go
index 16e17d0..88b48c3 100644
--- a/internal/discovery.go
+++ b/internal/discovery.go
@@ -52,6 +52,8 @@
HasGoMod bool
SourceInfo *source.Info

+ // LatestVersion is the latest good version of the module.
+ LatestVersion string
// Deprecated describes whether the module is deprecated.
Deprecated bool
// DeprecationComment is the comment describing the deprecation, if any.
diff --git a/internal/fetchdatasource/fetchdatasource_test.go b/internal/fetchdatasource/fetchdatasource_test.go
index 05cb121..41260db 100644
--- a/internal/fetchdatasource/fetchdatasource_test.go
+++ b/internal/fetchdatasource/fetchdatasource_test.go
@@ -202,7 +202,7 @@
t.Fatal(err)
}
test.want.Path = test.path
- if diff := cmp.Diff(test.want, got, cmpopts.IgnoreFields(internal.ModuleInfo{}, "SourceInfo")); diff != "" {
+ if diff := cmp.Diff(test.want, got, cmpopts.IgnoreFields(internal.ModuleInfo{}, "SourceInfo", "LatestVersion")); diff != "" {
t.Errorf("mismatch (-want +got):\n%s", diff)
}
})
diff --git a/internal/latest.go b/internal/latest.go
index 14ccf16..8b820b2 100644
--- a/internal/latest.go
+++ b/internal/latest.go
@@ -64,6 +64,7 @@

// PopulateModuleInfo uses the LatestModuleVersions to populate fields of the given module.
func (li *LatestModuleVersions) PopulateModuleInfo(mi *ModuleInfo) {
+ mi.LatestVersion = li.GoodVersion
mi.Deprecated = li.Deprecated
mi.DeprecationComment = li.deprecationComment
mi.Retracted, mi.RetractionRationale = isRetracted(li.GoModFile, mi.Version)
diff --git a/internal/postgres/details_test.go b/internal/postgres/details_test.go
index 53f55dd..453ef75 100644
--- a/internal/postgres/details_test.go
+++ b/internal/postgres/details_test.go
@@ -200,7 +200,11 @@
t.Fatal("wantIndex too large")
}
wantVI := &test.modules[test.wantIndex].ModuleInfo
- if diff := cmp.Diff(wantVI, gotVI, cmpopts.EquateEmpty(), cmp.AllowUnexported(source.Info{})); diff != "" {
+ if diff := cmp.Diff(wantVI, gotVI,
+ cmpopts.EquateEmpty(),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion"),
+ cmp.AllowUnexported(source.Info{}),
+ ); diff != "" {
t.Errorf("mismatch (-want +got):\n%s", diff)
}
})
diff --git a/internal/postgres/insert_module_test.go b/internal/postgres/insert_module_test.go
index 37dd8b7..7393cb0 100644
--- a/internal/postgres/insert_module_test.go
+++ b/internal/postgres/insert_module_test.go
@@ -108,7 +108,10 @@
if err != nil {
t.Fatal(err)
}
- if diff := cmp.Diff(want.ModuleInfo, *got, cmp.AllowUnexported(source.Info{})); diff != "" {
+ if diff := cmp.Diff(want.ModuleInfo, *got,
+ cmp.AllowUnexported(source.Info{}),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion"),
+ ); diff != "" {
t.Fatalf("testDB.GetModuleInfo(%q, %q) mismatch (-want +got):\n%s", want.ModulePath, want.Version, diff)
}

diff --git a/internal/postgres/unit_test.go b/internal/postgres/unit_test.go
index e8dc304..f00f7d1 100644
--- a/internal/postgres/unit_test.go
+++ b/internal/postgres/unit_test.go
@@ -78,7 +78,8 @@
opts := []cmp.Option{
cmpopts.EquateEmpty(),
cmpopts.IgnoreFields(licenses.Metadata{}, "Coverage"),
- cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod"),
+ cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod", "LatestVersion"),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion"),
cmp.AllowUnexported(source.Info{}, safehtml.HTML{}),
}
if diff := cmp.Diff(test.want, got, opts...); diff != "" {
diff --git a/internal/postgres/version_test.go b/internal/postgres/version_test.go
index 66c0453..926ad18 100644
--- a/internal/postgres/version_test.go
+++ b/internal/postgres/version_test.go
@@ -11,6 +11,7 @@
"testing"

"github.com/google/go-cmp/cmp"
+ "github.com/google/go-cmp/cmp/cmpopts"
"golang.org/x/pkgsite/internal"
"golang.org/x/pkgsite/internal/source"
"golang.org/x/pkgsite/internal/stdlib"
@@ -243,7 +244,10 @@
if err != nil {
t.Fatal(err)
}
- if diff := cmp.Diff(test.want, got, cmp.AllowUnexported(source.Info{})); diff != "" {
+ if diff := cmp.Diff(test.want, got,
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion"),
+ cmp.AllowUnexported(source.Info{}),
+ ); diff != "" {
t.Errorf("testDB.GetVersionsForPath(%q) mismatch (-want +got):\n%s", test.path, diff)
}
})
diff --git a/internal/worker/fetch_test.go b/internal/worker/fetch_test.go
index f26c7ac..c39f50c 100644
--- a/internal/worker/fetch_test.go
+++ b/internal/worker/fetch_test.go
@@ -58,6 +58,7 @@
CommitTime: testProxyCommitTime,
SourceInfo: source.NewGitHubInfo("https://example.com/multi", "", sample.VersionString),
IsRedistributable: true,
+ LatestVersion: sample.VersionString,
},
Path: "example.com/multi/bar",
Name: "bar",
@@ -114,6 +115,7 @@
CommitTime: testProxyCommitTime,
SourceInfo: source.NewGitHubInfo("https://example.com/nonredist", "", sample.VersionString),
IsRedistributable: true,
+ LatestVersion: sample.VersionString,
},
Path: "example.com/nonredist/bar/baz",
Name: "baz",
@@ -144,6 +146,7 @@
CommitTime: testProxyCommitTime,
SourceInfo: source.NewGitHubInfo("https://example.com/nonredist", "", sample.VersionString),
IsRedistributable: true,
+ LatestVersion: sample.VersionString,
},
Path: "example.com/nonredist/unk",
Name: "unk",
@@ -168,6 +171,7 @@
CommitTime: testProxyCommitTime,
SourceInfo: source.NewGitHubInfo("https://"+buildConstraintsModulePath, "", sample.VersionString),
IsRedistributable: true,
+ LatestVersion: "v1.0.0",
},
Path: buildConstraintsModulePath + "/cpu",
Name: "cpu",
@@ -209,7 +213,11 @@
if err != nil {
t.Fatal(err)
}
- if diff := cmp.Diff(test.want.UnitMeta, *got, cmpopts.EquateEmpty(), cmp.AllowUnexported(source.Info{})); diff != "" {
+ if diff := cmp.Diff(test.want.UnitMeta, *got,
+ cmpopts.EquateEmpty(),
+ cmp.AllowUnexported(source.Info{}),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion"),
+ ); diff != "" {
t.Fatalf("testDB.GetUnitMeta(ctx, %q, %q) mismatch (-want +got):\n%s", test.modulePath, test.version, diff)
}

@@ -223,10 +231,10 @@
if diff := cmp.Diff(test.want, gotPkg,
cmpopts.EquateEmpty(),
cmp.AllowUnexported(source.Info{}),
- cmpopts.IgnoreFields(internal.Unit{}, "Documentation", "BuildContexts"),
- cmpopts.IgnoreFields(internal.Unit{}, "SymbolHistory"),
- cmpopts.IgnoreFields(internal.Unit{}, "Subdirectories")); diff != "" {
- t.Errorf("mismatch on readme (-want +got):\n%s", diff)
+ cmpopts.IgnoreFields(internal.Unit{}, "Documentation", "BuildContexts", "SymbolHistory", "Subdirectories"),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion"),
+ ); diff != "" {
+ t.Errorf("mismatch on unit (-want +got):\n%s", diff)
}
if got, want := gotPkg.Documentation, test.want.Documentation; got == nil || want == nil {
if !cmp.Equal(got, want) {
diff --git a/internal/worker/refetch_test.go b/internal/worker/refetch_test.go
index 35f66a4..fad2ce5 100644
--- a/internal/worker/refetch_test.go
+++ b/internal/worker/refetch_test.go
@@ -92,6 +92,7 @@
CommitTime: time.Date(2019, 1, 30, 0, 0, 0, 0, time.UTC),
IsRedistributable: true,
SourceInfo: source.NewGitHubInfo("https://"+sample.ModulePath, "", sample.VersionString),
+ LatestVersion: version,
},
Path: sample.ModulePath + "/bar",
Name: "bar",
@@ -127,7 +128,8 @@
if diff := cmp.Diff(want.UnitMeta, *got,
cmp.AllowUnexported(source.Info{}),
cmpopts.IgnoreFields(licenses.Metadata{}, "Coverage"),
- cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod")); diff != "" {
+ cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod"),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion")); diff != "" {
t.Fatalf("testDB.GetUnitMeta(ctx, %q, %q) mismatch (-want +got):\n%s", want.ModulePath, want.Version, diff)
}

@@ -139,7 +141,8 @@
cmp.AllowUnexported(source.Info{}),
cmpopts.IgnoreFields(internal.Unit{}, "Documentation", "BuildContexts"),
cmpopts.IgnoreFields(licenses.Metadata{}, "Coverage"),
- cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod")); diff != "" {
+ cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod"),
+ cmpopts.IgnoreFields(internal.ModuleInfo{}, "LatestVersion")); diff != "" {
t.Errorf("mismatch on readme (-want +got):\n%s", diff)
}
if got, want := gotPkg.Documentation, want.Documentation; got == nil || want == nil {

Change information

Files:
  • M internal/api/api.go
  • M internal/discovery.go
  • M internal/fetchdatasource/fetchdatasource_test.go
  • M internal/latest.go
  • M internal/postgres/details_test.go
  • M internal/postgres/insert_module_test.go
  • M internal/postgres/unit_test.go
  • M internal/postgres/version_test.go
  • M internal/worker/fetch_test.go
  • M internal/worker/refetch_test.go
Change size: M
Delta: 10 files changed, 39 insertions(+), 12 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
  • requirement is not satisfiedkokoro-CI-Passes
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: pkgsite
Gerrit-Branch: master
Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
Gerrit-Change-Number: 756901
Gerrit-PatchSet: 1
Gerrit-Owner: Ethan Lee <etha...@google.com>
Gerrit-Reviewer: Ethan Lee <etha...@google.com>
unsatisfied_requirement
satisfied_requirement
open
diffy

Ethan Lee (Gerrit)

unread,
Mar 19, 2026, 10:56:00 AM (20 hours ago) Mar 19
to goph...@pubsubhelper.golang.org, Go LUCI, kokoro, golang-co...@googlegroups.com

Ethan Lee voted

Auto-Submit+1
Commit-Queue+1
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
  • requirement is not satisfiedkokoro-CI-Passes
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: pkgsite
Gerrit-Branch: master
Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
Gerrit-Change-Number: 756901
Gerrit-PatchSet: 2
Gerrit-Owner: Ethan Lee <etha...@google.com>
Gerrit-Reviewer: Ethan Lee <etha...@google.com>
Gerrit-CC: kokoro <noreply...@google.com>
Gerrit-Comment-Date: Thu, 19 Mar 2026 14:55:57 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

kokoro (Gerrit)

unread,
Mar 19, 2026, 11:10:39 AM (19 hours ago) Mar 19
to Ethan Lee, goph...@pubsubhelper.golang.org, Go LUCI, golang-co...@googlegroups.com
Attention needed from Ethan Lee

kokoro voted kokoro-CI+1

Kokoro presubmit build finished with status: SUCCESS
Logs at: https://source.cloud.google.com/results/invocations/bd2398b5-a65b-4061-b16f-15958a126083

kokoro-CI+1
Open in Gerrit

Related details

Attention is currently required from:
  • Ethan Lee
Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement satisfiedTryBots-Pass
    • requirement is not satisfiedkokoro-CI-Passes
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: pkgsite
    Gerrit-Branch: master
    Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
    Gerrit-Change-Number: 756901
    Gerrit-PatchSet: 1
    Gerrit-Owner: Ethan Lee <etha...@google.com>
    Gerrit-Reviewer: Ethan Lee <etha...@google.com>
    Gerrit-Reviewer: kokoro <noreply...@google.com>
    Gerrit-CC: kokoro <noreply...@google.com>
    Gerrit-Attention: Ethan Lee <etha...@google.com>
    Gerrit-Comment-Date: Thu, 19 Mar 2026 15:10:33 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    unsatisfied_requirement
    satisfied_requirement
    open
    diffy

    Ethan Lee (Gerrit)

    unread,
    Mar 19, 2026, 11:16:47 AM (19 hours ago) Mar 19
    to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
    Attention needed from Ethan Lee

    Ethan Lee uploaded new patchset

    Ethan Lee uploaded patch set #4 to this change.
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ethan Lee
    Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      • requirement is not satisfiedkokoro-CI-Passes
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: newpatchset
      Gerrit-Project: pkgsite
      Gerrit-Branch: master
      Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
      Gerrit-Change-Number: 756901
      Gerrit-PatchSet: 4
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      kokoro (Gerrit)

      unread,
      Mar 19, 2026, 11:21:52 AM (19 hours ago) Mar 19
      to Ethan Lee, goph...@pubsubhelper.golang.org, Go LUCI, golang-co...@googlegroups.com
      Attention needed from Ethan Lee

      kokoro voted kokoro-CI+1

      Kokoro presubmit build finished with status: SUCCESS

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ethan Lee
      Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      • requirement is not satisfiedkokoro-CI-Passes
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: pkgsite
      Gerrit-Branch: master
      Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
      Gerrit-Change-Number: 756901
      Gerrit-PatchSet: 2
      Gerrit-Owner: Ethan Lee <etha...@google.com>
      Gerrit-Reviewer: Ethan Lee <etha...@google.com>
      Gerrit-Reviewer: kokoro <noreply...@google.com>
      Gerrit-CC: kokoro <noreply...@google.com>
      Gerrit-Attention: Ethan Lee <etha...@google.com>
      Gerrit-Comment-Date: Thu, 19 Mar 2026 15:21:49 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      Ethan Lee (Gerrit)

      unread,
      Mar 19, 2026, 11:24:14 AM (19 hours ago) Mar 19
      to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
      Attention needed from Ethan Lee

      Ethan Lee uploaded new patchset

      Ethan Lee uploaded patch set #5 to this change.
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ethan Lee
      Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      • requirement is not satisfiedkokoro-CI-Passes
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: newpatchset
      Gerrit-Project: pkgsite
      Gerrit-Branch: master
      Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
      Gerrit-Change-Number: 756901
      Gerrit-PatchSet: 5
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      kokoro (Gerrit)

      unread,
      Mar 19, 2026, 11:38:26 AM (19 hours ago) Mar 19
      to Ethan Lee, goph...@pubsubhelper.golang.org, Go LUCI, golang-co...@googlegroups.com
      Attention needed from Ethan Lee

      kokoro voted kokoro-CI-1

      Kokoro presubmit build finished with status: FAILURE
      Logs at: https://source.cloud.google.com/results/invocations/838be454-7fe1-4a4a-a799-375a37b4f964

      kokoro-CI-1
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ethan Lee
      Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement satisfiedTryBots-Pass
        • requirement is not satisfiedkokoro-CI-Passes
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: pkgsite
        Gerrit-Branch: master
        Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
        Gerrit-Change-Number: 756901
        Gerrit-PatchSet: 4
        Gerrit-Owner: Ethan Lee <etha...@google.com>
        Gerrit-Reviewer: Ethan Lee <etha...@google.com>
        Gerrit-Reviewer: kokoro <noreply...@google.com>
        Gerrit-CC: kokoro <noreply...@google.com>
        Gerrit-Attention: Ethan Lee <etha...@google.com>
        Gerrit-Comment-Date: Thu, 19 Mar 2026 15:38:21 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        unsatisfied_requirement
        satisfied_requirement
        open
        diffy

        kokoro (Gerrit)

        unread,
        Mar 19, 2026, 11:49:05 AM (19 hours ago) Mar 19
        to Ethan Lee, goph...@pubsubhelper.golang.org, Go LUCI, golang-co...@googlegroups.com
        Attention needed from Ethan Lee

        kokoro voted kokoro-CI+1

        Kokoro presubmit build finished with status: SUCCESS
        Logs at: https://source.cloud.google.com/results/invocations/1822064d-285a-43cf-8741-504c7b152e20

        kokoro-CI+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Ethan Lee
        Submit Requirements:
          • requirement is not satisfiedCode-Review
          • requirement satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          • requirement satisfiedTryBots-Pass
          • requirement satisfiedkokoro-CI-Passes
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: pkgsite
          Gerrit-Branch: master
          Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
          Gerrit-Change-Number: 756901
          Gerrit-PatchSet: 5
          Gerrit-Owner: Ethan Lee <etha...@google.com>
          Gerrit-Reviewer: Ethan Lee <etha...@google.com>
          Gerrit-Reviewer: kokoro <noreply...@google.com>
          Gerrit-CC: kokoro <noreply...@google.com>
          Gerrit-Attention: Ethan Lee <etha...@google.com>
          Gerrit-Comment-Date: Thu, 19 Mar 2026 15:49:00 +0000
          Gerrit-HasComments: No
          Gerrit-Has-Labels: Yes
          unsatisfied_requirement
          satisfied_requirement
          open
          diffy

          Jonathan Amsterdam (Gerrit)

          unread,
          Mar 19, 2026, 7:20:44 PM (11 hours ago) Mar 19
          to Ethan Lee, goph...@pubsubhelper.golang.org, kokoro, Go LUCI, golang-co...@googlegroups.com
          Attention needed from Ethan Lee

          Jonathan Amsterdam added 1 comment

          File internal/latest.go
          Line 67, Patchset 5 (Latest): mi.LatestVersion = li.GoodVersion
          Jonathan Amsterdam . unresolved

          It's concerning to me that we have to add this here only for the API, and then we have to ignore it in tests. What I'm OK adding it, but then can we fix the tests to pass with it? If that's really hard, why?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Ethan Lee
          Submit Requirements:
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement is not satisfiedReview-Enforcement
            • requirement satisfiedTryBots-Pass
            • requirement satisfiedkokoro-CI-Passes
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: pkgsite
            Gerrit-Branch: master
            Gerrit-Change-Id: I1238e54614ef276d219b31d125cd2cad6b5a66f7
            Gerrit-Change-Number: 756901
            Gerrit-PatchSet: 5
            Gerrit-Owner: Ethan Lee <etha...@google.com>
            Gerrit-Reviewer: Ethan Lee <etha...@google.com>
            Gerrit-Reviewer: Jonathan Amsterdam <j...@google.com>
            Gerrit-Reviewer: kokoro <noreply...@google.com>
            Gerrit-CC: kokoro <noreply...@google.com>
            Gerrit-Attention: Ethan Lee <etha...@google.com>
            Gerrit-Comment-Date: Thu, 19 Mar 2026 23:20:40 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            unsatisfied_requirement
            satisfied_requirement
            open
            diffy
            Reply all
            Reply to author
            Forward
            0 new messages