src: Add comments on history.

R77 was the first release with MethodService/Get.  Add comments about
what release changes arrived in, if they were not there before R77.

BUG=None
TEST=generate

Change-Id: I1aa457ebc9fb04466c1024c8e2f56990a9c6600f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2673202
Commit-Queue: LaMont Jones <lamontjones@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
Reviewed-by: George Engelbrecht <engeg@google.com>
diff --git a/go/chromite/api/android_grpc.pb.go b/go/chromite/api/android_grpc.pb.go
index 1eed38f..5cc6c68 100644
--- a/go/chromite/api/android_grpc.pb.go
+++ b/go/chromite/api/android_grpc.pb.go
@@ -21,7 +21,7 @@
 	// The MarkStable method uprevs Android, verifies the newly revved package
 	// can be emerged, and returns the new package info.
 	MarkStable(ctx context.Context, in *MarkStableRequest, opts ...grpc.CallOption) (*MarkStableResponse, error)
-	// Unpin the Android package version.
+	// Unpin the Android package version.  Added in R76.
 	UnpinVersion(ctx context.Context, in *UnpinVersionRequest, opts ...grpc.CallOption) (*UnpinVersionResponse, error)
 }
 
@@ -58,7 +58,7 @@
 	// The MarkStable method uprevs Android, verifies the newly revved package
 	// can be emerged, and returns the new package info.
 	MarkStable(context.Context, *MarkStableRequest) (*MarkStableResponse, error)
-	// Unpin the Android package version.
+	// Unpin the Android package version.  Added in R76.
 	UnpinVersion(context.Context, *UnpinVersionRequest) (*UnpinVersionResponse, error)
 	mustEmbedUnimplementedAndroidServiceServer()
 }
diff --git a/go/chromite/api/api_grpc.pb.go b/go/chromite/api/api_grpc.pb.go
index ebf34ed..c2d60ed 100644
--- a/go/chromite/api/api_grpc.pb.go
+++ b/go/chromite/api/api_grpc.pb.go
@@ -18,6 +18,7 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type MethodServiceClient interface {
+	// Added in R77.
 	Get(ctx context.Context, in *MethodGetRequest, opts ...grpc.CallOption) (*MethodGetResponse, error)
 }
 
@@ -42,6 +43,7 @@
 // All implementations must embed UnimplementedMethodServiceServer
 // for forward compatibility
 type MethodServiceServer interface {
+	// Added in R77.
 	Get(context.Context, *MethodGetRequest) (*MethodGetResponse, error)
 	mustEmbedUnimplementedMethodServiceServer()
 }
@@ -104,6 +106,7 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type VersionServiceClient interface {
+	// Added in R77.
 	Get(ctx context.Context, in *VersionGetRequest, opts ...grpc.CallOption) (*VersionGetResponse, error)
 }
 
@@ -128,6 +131,7 @@
 // All implementations must embed UnimplementedVersionServiceServer
 // for forward compatibility
 type VersionServiceServer interface {
+	// Added in R77.
 	Get(context.Context, *VersionGetRequest) (*VersionGetResponse, error)
 	mustEmbedUnimplementedVersionServiceServer()
 }
diff --git a/go/chromite/api/artifacts_grpc.pb.go b/go/chromite/api/artifacts_grpc.pb.go
index 26d006a..b623612 100644
--- a/go/chromite/api/artifacts_grpc.pb.go
+++ b/go/chromite/api/artifacts_grpc.pb.go
@@ -19,19 +19,20 @@
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type ArtifactsServiceClient interface {
 	// Prepare to build artifacts.
+	// TODO(crbug/1034529): This is broken because it was never added to chromite.
 	PrepareForBuild(ctx context.Context, in *PrepareForBuildRequest, opts ...grpc.CallOption) (*PrepareForBuildResponse, error)
-	// Get artifacts for build.
+	// Get artifacts for build. Added in R90.
 	Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error)
-	// Fetch the pinned guest image locations.
+	// Fetch the pinned guest image locations.  Added in R77.
 	FetchPinnedGuestImageUris(ctx context.Context, in *PinnedGuestImageUriRequest, opts ...grpc.CallOption) (*PinnedGuestImageUriResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with all files needed for Autotest HW testing.
 	BundleAutotestFiles(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
-	// Create the ChromeOS Config JSON payload.
+	// Create the ChromeOS Config JSON payload.  Added in R78.
 	BundleChromeOSConfig(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
-	// Create a tar archive of debug symbols.
+	// Create a tar archive of debug symbols.  Added in R90.
 	BundleDebugSymbols(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with ebuild logs.
@@ -41,6 +42,7 @@
 	BundleFirmware(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar.xz archive for each image that has been created.
+	// Added in R79.
 	BundleImageArchives(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Generate zip containing all built images for the target.
@@ -48,7 +50,7 @@
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// DEPRECATED for recipes: crbug/1019868: This are being replaced by
 	// ToolchainService.Bundle{ArtifactType}()
-	// Create Chrome Benchmark AFDO builder artifacts.
+	// Create Chrome Benchmark AFDO builder artifacts.  Added in R78.
 	BundleAFDOGenerationArtifacts(ctx context.Context, in *BundleChromeAFDORequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with all guest images test bundles.
@@ -66,15 +68,17 @@
 	// Create a tar archive with VM memory and disk images.
 	BundleVmFiles(ctx context.Context, in *BundleVmFilesRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
-	// Generate a CPE report to a file.
+	// Generate a CPE report to a file.  Added in R78.
 	ExportCpeReport(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with fingerprint MCU on-device unittest binaries.
+	// Added in R88.
 	BundleFpmcuUnittests(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tarball from the test image suitable for importing into GCE.
+	// Added in R89.
 	BundleGceTarball(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
-	// Generate all Remote Test Driver metadata.
+	// Generate all Remote Test Driver metadata.  Added in R85.
 	//
 	// Response consists of one or more metadata files. Each file must contain a
 	// single binary encoded chromiumos.config.api.test.metadata.v1.Specification
@@ -87,7 +91,7 @@
 	//
 	// TODO(crbug/1034529): DEPRECATED use Get
 	GenerateRemoteTestDriverSpecification(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
-	// Generate all Remote Test Driver container images.
+	// Generate all Remote Test Driver container images.  Added in R85.
 	//
 	// Response consists of one or more Docker container images.
 	// The images are identified by their Docker image digest. The filenames of
@@ -302,19 +306,20 @@
 // for forward compatibility
 type ArtifactsServiceServer interface {
 	// Prepare to build artifacts.
+	// TODO(crbug/1034529): This is broken because it was never added to chromite.
 	PrepareForBuild(context.Context, *PrepareForBuildRequest) (*PrepareForBuildResponse, error)
-	// Get artifacts for build.
+	// Get artifacts for build. Added in R90.
 	Get(context.Context, *GetRequest) (*GetResponse, error)
-	// Fetch the pinned guest image locations.
+	// Fetch the pinned guest image locations.  Added in R77.
 	FetchPinnedGuestImageUris(context.Context, *PinnedGuestImageUriRequest) (*PinnedGuestImageUriResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with all files needed for Autotest HW testing.
 	BundleAutotestFiles(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
-	// Create the ChromeOS Config JSON payload.
+	// Create the ChromeOS Config JSON payload.  Added in R78.
 	BundleChromeOSConfig(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
-	// Create a tar archive of debug symbols.
+	// Create a tar archive of debug symbols.  Added in R90.
 	BundleDebugSymbols(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with ebuild logs.
@@ -324,6 +329,7 @@
 	BundleFirmware(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar.xz archive for each image that has been created.
+	// Added in R79.
 	BundleImageArchives(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Generate zip containing all built images for the target.
@@ -331,7 +337,7 @@
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// DEPRECATED for recipes: crbug/1019868: This are being replaced by
 	// ToolchainService.Bundle{ArtifactType}()
-	// Create Chrome Benchmark AFDO builder artifacts.
+	// Create Chrome Benchmark AFDO builder artifacts.  Added in R78.
 	BundleAFDOGenerationArtifacts(context.Context, *BundleChromeAFDORequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with all guest images test bundles.
@@ -349,15 +355,17 @@
 	// Create a tar archive with VM memory and disk images.
 	BundleVmFiles(context.Context, *BundleVmFilesRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
-	// Generate a CPE report to a file.
+	// Generate a CPE report to a file.  Added in R78.
 	ExportCpeReport(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tar archive with fingerprint MCU on-device unittest binaries.
+	// Added in R88.
 	BundleFpmcuUnittests(context.Context, *BundleRequest) (*BundleResponse, error)
 	// TODO(crbug/1034529): DEPRECATED use Get
 	// Create a tarball from the test image suitable for importing into GCE.
+	// Added in R89.
 	BundleGceTarball(context.Context, *BundleRequest) (*BundleResponse, error)
-	// Generate all Remote Test Driver metadata.
+	// Generate all Remote Test Driver metadata.  Added in R85.
 	//
 	// Response consists of one or more metadata files. Each file must contain a
 	// single binary encoded chromiumos.config.api.test.metadata.v1.Specification
@@ -370,7 +378,7 @@
 	//
 	// TODO(crbug/1034529): DEPRECATED use Get
 	GenerateRemoteTestDriverSpecification(context.Context, *BundleRequest) (*BundleResponse, error)
-	// Generate all Remote Test Driver container images.
+	// Generate all Remote Test Driver container images.  Added in R85.
 	//
 	// Response consists of one or more Docker container images.
 	// The images are identified by their Docker image digest. The filenames of
diff --git a/go/chromite/api/binhost_grpc.pb.go b/go/chromite/api/binhost_grpc.pb.go
index a6effff..9ab45d1 100644
--- a/go/chromite/api/binhost_grpc.pb.go
+++ b/go/chromite/api/binhost_grpc.pb.go
@@ -18,9 +18,9 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type BinhostServiceClient interface {
-	// Get the binhosts for a build target.
+	// Get the binhosts for a build target.  Added in R77.
 	Get(ctx context.Context, in *BinhostGetRequest, opts ...grpc.CallOption) (*BinhostGetResponse, error)
-	// Get the arguments from the private overlay's ACL file.
+	// Get the arguments from the private overlay's ACL file.  Added in R77.
 	GetPrivatePrebuiltAclArgs(ctx context.Context, in *AclArgsRequest, opts ...grpc.CallOption) (*AclArgsResponse, error)
 	// Return a list of files to upload to the binhost. Importantly, this method
 	// assumes that all files, once uploaded, will share the same relative path
@@ -30,11 +30,11 @@
 	// Return a list of dev-install files to upload to the binhost. Like
 	// PrepareBinhostUploads, this method assumes that all files, once uploaded,
 	// will share the same relative path on the remote disk as they do on the
-	// remote disk.
+	// remote disk.  Added in R78.
 	PrepareDevInstallBinhostUploads(ctx context.Context, in *PrepareDevInstallBinhostUploadsRequest, opts ...grpc.CallOption) (*PrepareDevInstallBinhostUploadsResponse, error)
 	// Update the binhost key for a build targets.
 	SetBinhost(ctx context.Context, in *SetBinhostRequest, opts ...grpc.CallOption) (*SetBinhostResponse, error)
-	// Regenerate the builder cache.
+	// Regenerate the builder cache.  Added in R78.
 	RegenBuildCache(ctx context.Context, in *RegenBuildCacheRequest, opts ...grpc.CallOption) (*RegenBuildCacheResponse, error)
 }
 
@@ -104,9 +104,9 @@
 // All implementations must embed UnimplementedBinhostServiceServer
 // for forward compatibility
 type BinhostServiceServer interface {
-	// Get the binhosts for a build target.
+	// Get the binhosts for a build target.  Added in R77.
 	Get(context.Context, *BinhostGetRequest) (*BinhostGetResponse, error)
-	// Get the arguments from the private overlay's ACL file.
+	// Get the arguments from the private overlay's ACL file.  Added in R77.
 	GetPrivatePrebuiltAclArgs(context.Context, *AclArgsRequest) (*AclArgsResponse, error)
 	// Return a list of files to upload to the binhost. Importantly, this method
 	// assumes that all files, once uploaded, will share the same relative path
@@ -116,11 +116,11 @@
 	// Return a list of dev-install files to upload to the binhost. Like
 	// PrepareBinhostUploads, this method assumes that all files, once uploaded,
 	// will share the same relative path on the remote disk as they do on the
-	// remote disk.
+	// remote disk.  Added in R78.
 	PrepareDevInstallBinhostUploads(context.Context, *PrepareDevInstallBinhostUploadsRequest) (*PrepareDevInstallBinhostUploadsResponse, error)
 	// Update the binhost key for a build targets.
 	SetBinhost(context.Context, *SetBinhostRequest) (*SetBinhostResponse, error)
-	// Regenerate the builder cache.
+	// Regenerate the builder cache.  Added in R78.
 	RegenBuildCache(context.Context, *RegenBuildCacheRequest) (*RegenBuildCacheResponse, error)
 	mustEmbedUnimplementedBinhostServiceServer()
 }
diff --git a/go/chromite/api/depgraph.pb.go b/go/chromite/api/depgraph.pb.go
index 97132f7..5de20f5 100644
--- a/go/chromite/api/depgraph.pb.go
+++ b/go/chromite/api/depgraph.pb.go
@@ -35,7 +35,7 @@
 	// dependency packages and the source paths.
 	PackageDeps []*PackageDepInfo `protobuf:"bytes,2,rep,name=package_deps,json=packageDeps,proto3" json:"package_deps,omitempty"`
 	// The sysroot whose dependency graph is being created.  If no sysroot is
-	// being used, may be unspecified.
+	// being used, may be unspecified.  Added in R85.
 	Sysroot *Sysroot `protobuf:"bytes,3,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
 }
 
@@ -216,7 +216,7 @@
 	unknownFields protoimpl.UnknownFields
 
 	// The sysroot whose dependency graph is being created.  If no sysroot is
-	// being used, may be unspecified.
+	// being used, may be unspecified.  Added in R85.
 	Sysroot *Sysroot `protobuf:"bytes,4,opt,name=sysroot,proto3" json:"sysroot,omitempty"`
 	// TODO(crbug/1081828): drop when all supported release branches are no longer
 	// using this.
@@ -224,10 +224,10 @@
 	// The board whose dependency graph is being created.  If both sysroot and
 	// build_target are given, sysroot is used.
 	BuildTarget *chromiumos.BuildTarget `protobuf:"bytes,1,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
-	// The chroot to use to execute the endpoint.
+	// The chroot to use to execute the endpoint.  Added in R80.
 	Chroot *chromiumos.Chroot `protobuf:"bytes,2,opt,name=chroot,proto3" json:"chroot,omitempty"`
 	// List of packages for which to create the dependency graph. If none are
-	// specified the standard list of packages is used.
+	// specified the standard list of packages is used.  Added in R81.
 	Packages []*chromiumos.PackageInfo `protobuf:"bytes,3,rep,name=packages,proto3" json:"packages,omitempty"`
 }
 
@@ -297,7 +297,8 @@
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DepGraph    *DepGraph `protobuf:"bytes,1,opt,name=dep_graph,json=depGraph,proto3" json:"dep_graph,omitempty"`
+	DepGraph *DepGraph `protobuf:"bytes,1,opt,name=dep_graph,json=depGraph,proto3" json:"dep_graph,omitempty"`
+	// Added in R80.
 	SdkDepGraph *DepGraph `protobuf:"bytes,2,opt,name=sdk_dep_graph,json=sdkDepGraph,proto3" json:"sdk_dep_graph,omitempty"`
 }
 
diff --git a/go/chromite/api/depgraph_grpc.pb.go b/go/chromite/api/depgraph_grpc.pb.go
index 7b2f969..f4d7105 100644
--- a/go/chromite/api/depgraph_grpc.pb.go
+++ b/go/chromite/api/depgraph_grpc.pb.go
@@ -20,9 +20,10 @@
 type DependencyServiceClient interface {
 	// Get the build dependency graph.
 	GetBuildDependencyGraph(ctx context.Context, in *GetBuildDependencyGraphRequest, opts ...grpc.CallOption) (*GetBuildDependencyGraphResponse, error)
-	// Get the list of source paths that are relevant to the toolchain
+	// Get the list of source paths that are relevant to the toolchain.
+	// Added in R81.
 	GetToolchainPaths(ctx context.Context, in *GetToolchainPathsRequest, opts ...grpc.CallOption) (*GetToolchainPathsResponse, error)
-	// Get the list of package dependencies.
+	// Get the list of package dependencies.  Added in R87.
 	List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
 }
 
@@ -67,9 +68,10 @@
 type DependencyServiceServer interface {
 	// Get the build dependency graph.
 	GetBuildDependencyGraph(context.Context, *GetBuildDependencyGraphRequest) (*GetBuildDependencyGraphResponse, error)
-	// Get the list of source paths that are relevant to the toolchain
+	// Get the list of source paths that are relevant to the toolchain.
+	// Added in R81.
 	GetToolchainPaths(context.Context, *GetToolchainPathsRequest) (*GetToolchainPathsResponse, error)
-	// Get the list of package dependencies.
+	// Get the list of package dependencies.  Added in R87.
 	List(context.Context, *ListRequest) (*ListResponse, error)
 	mustEmbedUnimplementedDependencyServiceServer()
 }
diff --git a/go/chromite/api/firmware.pb.go b/go/chromite/api/firmware.pb.go
index 57c0fc4..a27fe5f 100644
--- a/go/chromite/api/firmware.pb.go
+++ b/go/chromite/api/firmware.pb.go
@@ -22,14 +22,14 @@
 )
 
 // TODO(b/177907747): Drop this once the migration is complete.
-// List of known location that firmware can be built from
+// List of known location that firmware can be built from.
 type FwLocation int32
 
 const (
 	FwLocation_FW_LOCATION_UNKNOWN FwLocation = 0
 	FwLocation_PLATFORM_EC         FwLocation = 1 // platform/ec/firmware_builder.py
 	FwLocation_PLATFORM_ZEPHYR     FwLocation = 2 // platform/zephyr-chrome/firmware_builder.py
-	FwLocation_PLATFORM_TI50       FwLocation = 3 // platform/ti50/common/firmware_builder.py
+	FwLocation_PLATFORM_TI50       FwLocation = 3 // platform/ti50/common/firmware_builder.py.  Added in R90.
 )
 
 // Enum value maps for FwLocation.
@@ -79,8 +79,8 @@
 
 const (
 	FwBuildMetric_FwSection_FW_REGION_UNKNOWN FwBuildMetric_FwSection_FwRegion = 0
-	FwBuildMetric_FwSection_EC_RO             FwBuildMetric_FwSection_FwRegion = 1 // The entire section protected by write protect
-	FwBuildMetric_FwSection_EC_RW             FwBuildMetric_FwSection_FwRegion = 2 // Also RW_A for EFS1 systems
+	FwBuildMetric_FwSection_EC_RO             FwBuildMetric_FwSection_FwRegion = 1 // The entire section protected by write protect.
+	FwBuildMetric_FwSection_EC_RW             FwBuildMetric_FwSection_FwRegion = 2 // Also RW_A for EFS1 systems.
 	FwBuildMetric_FwSection_EC_RO_BSS         FwBuildMetric_FwSection_FwRegion = 3
 	FwBuildMetric_FwSection_EC_RW_BSS         FwBuildMetric_FwSection_FwRegion = 4
 	FwBuildMetric_FwSection_EC_SHARED_MEM     FwBuildMetric_FwSection_FwRegion = 5
@@ -133,20 +133,20 @@
 	return file_chromite_api_firmware_proto_rawDescGZIP(), []int{0, 0, 0}
 }
 
-// Metrics collected on every successful firmware build
+// Metrics collected on every successful firmware build.
 type FwBuildMetric struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	// Lowercase name of the firmware target built. E.g. phaser
+	// Lowercase name of the firmware target built. E.g. phaser.
 	TargetName string `protobuf:"bytes,1,opt,name=target_name,json=targetName,proto3" json:"target_name,omitempty"`
 	// Lowercase name of the platform the firmware target belongs to. May be
-	// blank. E.g. octopus
+	// blank. E.g. octopus.
 	PlatformName string `protobuf:"bytes,2,opt,name=platform_name,json=platformName,proto3" json:"platform_name,omitempty"`
-	// List of firmware sections and their free and total sizes in bytes
+	// List of firmware sections and their free and total sizes in bytes.
 	FwSection []*FwBuildMetric_FwSection `protobuf:"bytes,3,rep,name=fw_section,json=fwSection,proto3" json:"fw_section,omitempty"`
-	// Optional information related to a specific target type
+	// Optional information related to a specific target type.
 	//
 	// Types that are assignable to ImageType:
 	//	*FwBuildMetric_Zephyr
@@ -233,7 +233,7 @@
 // A list of FW metrics collected on every successful firmware build
 // Implementation note, this is a separate message since it serves as the
 // serialization base between the build_api end point and the entry point
-// in the firmware_builder.py
+// in the firmware_builder.py.
 type FwBuildMetricList struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -281,13 +281,13 @@
 	return nil
 }
 
-// Metrics collect on successful firmware unit test runs
+// Metrics collect on successful firmware unit test runs.
 type FwTestMetric struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	// Name of firmware test
+	// Name of firmware test.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 }
 
@@ -333,7 +333,7 @@
 // A list of FW metrics collected on every successful firmware unit test.
 // Implementation note, this is a separate message since it serves as the
 // serialization base between the build_api end point and the entry point
-// in the firmware_builder.py
+// in the firmware_builder.py.
 type FwTestMetricList struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -388,7 +388,7 @@
 	unknownFields protoimpl.UnknownFields
 
 	// Location of firmware to build call into firmware_builder.py entry point.
-	// The `build` subcommand will be called
+	// The `build` subcommand will be called.
 	FirmwareLocation FwLocation `protobuf:"varint,1,opt,name=firmware_location,json=firmwareLocation,proto3,enum=chromite.api.FwLocation" json:"firmware_location,omitempty"`
 	// The chroot where the operations will be executed.
 	// Required.
@@ -935,11 +935,11 @@
 	unknownFields protoimpl.UnknownFields
 
 	// Region as described in FMAP or linker script.
-	// E.g. EC_RO, EC_RW, EC_NVRAM, RO_BSS, RW_BSS, SHARED_MEM
+	// E.g. EC_RO, EC_RW, EC_NVRAM, RO_BSS, RW_BSS, SHARED_MEM.
 	Region FwBuildMetric_FwSection_FwRegion `protobuf:"varint,1,opt,name=region,proto3,enum=chromite.api.FwBuildMetric_FwSection_FwRegion" json:"region,omitempty"`
-	// The number of bytes used in this section
+	// The number of bytes used in this section.
 	Used uint32 `protobuf:"varint,2,opt,name=used,proto3" json:"used,omitempty"`
-	// The total number of bytes available in this section
+	// The total number of bytes available in this section.
 	Total uint32 `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
 }
 
@@ -1060,13 +1060,13 @@
 	return 0
 }
 
-// Zephyr-base firmware target related build metrics
+// Zephyr-base firmware target related build metrics.
 type FwBuildMetric_ZephyrTarget struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	// The version of the Zephyr kernel used during build
+	// The version of the Zephyr kernel used during build.
 	KernelVersion *FwBuildMetric_Version `protobuf:"bytes,1,opt,name=kernel_version,json=kernelVersion,proto3" json:"kernel_version,omitempty"`
 }
 
diff --git a/go/chromite/api/firmware_grpc.pb.go b/go/chromite/api/firmware_grpc.pb.go
index f07acd6..1f70fa2 100644
--- a/go/chromite/api/firmware_grpc.pb.go
+++ b/go/chromite/api/firmware_grpc.pb.go
@@ -19,16 +19,16 @@
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type FirmwareServiceClient interface {
 	// TODO(b/177907747): Drop this once the migration is complete.
-	// Builds all of the firmware targets on ToT at specified location
+	// Builds all of the firmware targets on ToT at specified location.
 	BuildAllTotFirmware(ctx context.Context, in *BuildAllTotFirmwareRequest, opts ...grpc.CallOption) (*BuildAllTotFirmwareResponse, error)
 	// TODO(b/177907747): Drop this once the migration is complete.
-	// Runs all of the firmware tests on ToT at specified location
+	// Runs all of the firmware tests on ToT at specified location.
 	TestAllTotFirmware(ctx context.Context, in *TestAllTotFirmwareRequest, opts ...grpc.CallOption) (*TestAllTotFirmwareResponse, error)
-	// Builds all of the firmware targets at specified location
+	// Builds all of the firmware targets at specified location. Added in R90.
 	BuildAllFirmware(ctx context.Context, in *BuildAllFirmwareRequest, opts ...grpc.CallOption) (*BuildAllFirmwareResponse, error)
-	// Runs all of the firmware tests at specified location
+	// Runs all of the firmware tests at specified location. Added in R90.
 	TestAllFirmware(ctx context.Context, in *TestAllFirmwareRequest, opts ...grpc.CallOption) (*TestAllFirmwareResponse, error)
-	// Bundles any firmware images and other artifacts.
+	// Bundles any firmware images and other artifacts. Added in R90.
 	BundleFirmwareArtifacts(ctx context.Context, in *BundleFirmwareArtifactsRequest, opts ...grpc.CallOption) (*BundleFirmwareArtifactsResponse, error)
 }
 
@@ -90,16 +90,16 @@
 // for forward compatibility
 type FirmwareServiceServer interface {
 	// TODO(b/177907747): Drop this once the migration is complete.
-	// Builds all of the firmware targets on ToT at specified location
+	// Builds all of the firmware targets on ToT at specified location.
 	BuildAllTotFirmware(context.Context, *BuildAllTotFirmwareRequest) (*BuildAllTotFirmwareResponse, error)
 	// TODO(b/177907747): Drop this once the migration is complete.
-	// Runs all of the firmware tests on ToT at specified location
+	// Runs all of the firmware tests on ToT at specified location.
 	TestAllTotFirmware(context.Context, *TestAllTotFirmwareRequest) (*TestAllTotFirmwareResponse, error)
-	// Builds all of the firmware targets at specified location
+	// Builds all of the firmware targets at specified location. Added in R90.
 	BuildAllFirmware(context.Context, *BuildAllFirmwareRequest) (*BuildAllFirmwareResponse, error)
-	// Runs all of the firmware tests at specified location
+	// Runs all of the firmware tests at specified location. Added in R90.
 	TestAllFirmware(context.Context, *TestAllFirmwareRequest) (*TestAllFirmwareResponse, error)
-	// Bundles any firmware images and other artifacts.
+	// Bundles any firmware images and other artifacts. Added in R90.
 	BundleFirmwareArtifacts(context.Context, *BundleFirmwareArtifactsRequest) (*BundleFirmwareArtifactsResponse, error)
 	mustEmbedUnimplementedFirmwareServiceServer()
 }
diff --git a/go/chromite/api/image.pb.go b/go/chromite/api/image.pb.go
index da50683..b649d00 100644
--- a/go/chromite/api/image.pb.go
+++ b/go/chromite/api/image.pb.go
@@ -210,6 +210,7 @@
 	// Any packages that failed to build. Empty on success.
 	FailedPackages []*chromiumos.PackageInfo `protobuf:"bytes,3,rep,name=failed_packages,json=failedPackages,proto3" json:"failed_packages,omitempty"`
 	// The metric events that occurred during the running of CreateImage.
+	// Added in R79.
 	Events []*chromiumos.MetricEvent `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"`
 }
 
diff --git a/go/chromite/api/image_grpc.pb.go b/go/chromite/api/image_grpc.pb.go
index f602e35..bc68bcd 100644
--- a/go/chromite/api/image_grpc.pb.go
+++ b/go/chromite/api/image_grpc.pb.go
@@ -32,7 +32,7 @@
 	//  "result": {"directory": "/tmp/image_test_results"}
 	// }
 	Test(ctx context.Context, in *TestImageRequest, opts ...grpc.CallOption) (*TestImageResult, error)
-	// Execute SignerTest for an image.
+	// Execute SignerTest for an image.  Added in R78.
 	// Example json:
 	// {
 	//  "build_target": {"name": "reef"},
@@ -40,7 +40,7 @@
 	//  "result": {"directory": "/tmp/image_test_results"}
 	// }
 	SignerTest(ctx context.Context, in *TestImageRequest, opts ...grpc.CallOption) (*TestImageResult, error)
-	// Execute PushImage for a script.
+	// Execute PushImage for a script.  Added in R89.
 	// Example json:
 	// {
 	//   "dryrun": true,
@@ -117,7 +117,7 @@
 	//  "result": {"directory": "/tmp/image_test_results"}
 	// }
 	Test(context.Context, *TestImageRequest) (*TestImageResult, error)
-	// Execute SignerTest for an image.
+	// Execute SignerTest for an image.  Added in R78.
 	// Example json:
 	// {
 	//  "build_target": {"name": "reef"},
@@ -125,7 +125,7 @@
 	//  "result": {"directory": "/tmp/image_test_results"}
 	// }
 	SignerTest(context.Context, *TestImageRequest) (*TestImageResult, error)
-	// Execute PushImage for a script.
+	// Execute PushImage for a script.  Added in R89.
 	// Example json:
 	// {
 	//   "dryrun": true,
diff --git a/go/chromite/api/packages.pb.go b/go/chromite/api/packages.pb.go
index ef3bce7..61b6ad7 100644
--- a/go/chromite/api/packages.pb.go
+++ b/go/chromite/api/packages.pb.go
@@ -95,7 +95,7 @@
 	// The build target we are checking for.
 	BuildTarget *chromiumos.BuildTarget `protobuf:"bytes,2,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
 	// List of packages to be installed by the builder. If none are specified the
-	// standard list of packages is used.
+	// standard list of packages is used.  Added in R79.
 	Packages []*chromiumos.PackageInfo `protobuf:"bytes,3,rep,name=packages,proto3" json:"packages,omitempty"`
 }
 
@@ -207,11 +207,11 @@
 
 	// An atom to pass to portageq, e.g. 'chromeos-chrome'.
 	Atom string `protobuf:"bytes,1,opt,name=atom,proto3" json:"atom,omitempty"`
-	// The chroot path.
+	// The chroot path.  Added in R78.
 	// Required if not in the default location.
 	Chroot *chromiumos.Chroot `protobuf:"bytes,2,opt,name=chroot,proto3" json:"chroot,omitempty"`
 	// The build target to examine. Checks the chroot when not provided.
-	// Required when examining a build target.
+	// Required when examining a build target.  Added in R78.
 	BuildTarget *chromiumos.BuildTarget `protobuf:"bytes,3,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
 }
 
diff --git a/go/chromite/api/packages_grpc.pb.go b/go/chromite/api/packages_grpc.pb.go
index ae947ce..79d8d02 100644
--- a/go/chromite/api/packages_grpc.pb.go
+++ b/go/chromite/api/packages_grpc.pb.go
@@ -18,38 +18,41 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type PackageServiceClient interface {
-	// Check if the build target has chrome in its depgraph.
+	// Check if the build target has chrome in its depgraph.  Added in R79.
 	BuildsChrome(ctx context.Context, in *BuildsChromeRequest, opts ...grpc.CallOption) (*BuildsChromeResponse, error)
 	// Find the best (highest) available version of the requested package.
 	// This must be run after the chroot is set up (for chroot package lookup) or
 	// after the sysroot is created (for build target package lookup).
+	// Added in R79.
 	GetBestVisible(ctx context.Context, in *GetBestVisibleRequest, opts ...grpc.CallOption) (*GetBestVisibleResponse, error)
 	// Like GetBestVisible, but returns only the chrome version. The chrome
 	// package version is something like 78.9.0.123_rc-r1, where the chrome
 	// version itself is just 78.9.0.123. This case does not have a spec in
 	// Portage, so it cannot be directly fetched by GetBestVisible.
+	// Added in R79.
 	GetChromeVersion(ctx context.Context, in *GetChromeVersionRequest, opts ...grpc.CallOption) (*GetChromeVersionResponse, error)
 	// Return the various build version fields that can be stored (e.g. in
-	// metadata.json).
+	// metadata.json).  Added in R79.
 	GetTargetVersions(ctx context.Context, in *GetTargetVersionsRequest, opts ...grpc.CallOption) (*GetTargetVersionsResponse, error)
 	// Return the various metabuilder fields for a release builder.
-	// This can be run after InstallPackages.
+	// This can be run after InstallPackages. Added in R84.
 	GetBuilderMetadata(ctx context.Context, in *GetBuilderMetadataRequest, opts ...grpc.CallOption) (*GetBuilderMetadataResponse, error)
 	// Check if there is an available chrome prebuilt for the most recent
-	// version of chrome.
+	// version of chrome.  Added in R79.
 	HasChromePrebuilt(ctx context.Context, in *HasChromePrebuiltRequest, opts ...grpc.CallOption) (*HasChromePrebuiltResponse, error)
 	// Check if there is an available prebuilt for the most recent version of the
-	// package.
+	// package.  Added in R83.
 	HasPrebuilt(ctx context.Context, in *HasPrebuiltRequest, opts ...grpc.CallOption) (*HasPrebuiltResponse, error)
 	// The generic uprev process -- performs uprevs for all packages in the
 	// public and/or private overlays for the build target(s) specified.
 	// This handles all cros_workon packages except those that have a separate
-	// uprev process.
+	// uprev process.  Added in R79.
 	Uprev(ctx context.Context, in *UprevPackagesRequest, opts ...grpc.CallOption) (*UprevPackagesResponse, error)
 	// Uprev a package that is externally versioned (e.g. Chrome).
 	// This endpoint iterates over a list of git refs that represent versions
 	// and searches for a new version, updating and upreving the package ebuild
 	// if such a version is found. The exact behavior depends on the package.
+	// Added in R79.
 	UprevVersionedPackage(ctx context.Context, in *UprevVersionedPackageRequest, opts ...grpc.CallOption) (*UprevVersionedPackageResponse, error)
 }
 
@@ -146,38 +149,41 @@
 // All implementations must embed UnimplementedPackageServiceServer
 // for forward compatibility
 type PackageServiceServer interface {
-	// Check if the build target has chrome in its depgraph.
+	// Check if the build target has chrome in its depgraph.  Added in R79.
 	BuildsChrome(context.Context, *BuildsChromeRequest) (*BuildsChromeResponse, error)
 	// Find the best (highest) available version of the requested package.
 	// This must be run after the chroot is set up (for chroot package lookup) or
 	// after the sysroot is created (for build target package lookup).
+	// Added in R79.
 	GetBestVisible(context.Context, *GetBestVisibleRequest) (*GetBestVisibleResponse, error)
 	// Like GetBestVisible, but returns only the chrome version. The chrome
 	// package version is something like 78.9.0.123_rc-r1, where the chrome
 	// version itself is just 78.9.0.123. This case does not have a spec in
 	// Portage, so it cannot be directly fetched by GetBestVisible.
+	// Added in R79.
 	GetChromeVersion(context.Context, *GetChromeVersionRequest) (*GetChromeVersionResponse, error)
 	// Return the various build version fields that can be stored (e.g. in
-	// metadata.json).
+	// metadata.json).  Added in R79.
 	GetTargetVersions(context.Context, *GetTargetVersionsRequest) (*GetTargetVersionsResponse, error)
 	// Return the various metabuilder fields for a release builder.
-	// This can be run after InstallPackages.
+	// This can be run after InstallPackages. Added in R84.
 	GetBuilderMetadata(context.Context, *GetBuilderMetadataRequest) (*GetBuilderMetadataResponse, error)
 	// Check if there is an available chrome prebuilt for the most recent
-	// version of chrome.
+	// version of chrome.  Added in R79.
 	HasChromePrebuilt(context.Context, *HasChromePrebuiltRequest) (*HasChromePrebuiltResponse, error)
 	// Check if there is an available prebuilt for the most recent version of the
-	// package.
+	// package.  Added in R83.
 	HasPrebuilt(context.Context, *HasPrebuiltRequest) (*HasPrebuiltResponse, error)
 	// The generic uprev process -- performs uprevs for all packages in the
 	// public and/or private overlays for the build target(s) specified.
 	// This handles all cros_workon packages except those that have a separate
-	// uprev process.
+	// uprev process.  Added in R79.
 	Uprev(context.Context, *UprevPackagesRequest) (*UprevPackagesResponse, error)
 	// Uprev a package that is externally versioned (e.g. Chrome).
 	// This endpoint iterates over a list of git refs that represent versions
 	// and searches for a new version, updating and upreving the package ebuild
 	// if such a version is found. The exact behavior depends on the package.
+	// Added in R79.
 	UprevVersionedPackage(context.Context, *UprevVersionedPackageRequest) (*UprevVersionedPackageResponse, error)
 	mustEmbedUnimplementedPackageServiceServer()
 }
diff --git a/go/chromite/api/payload_grpc.pb.go b/go/chromite/api/payload_grpc.pb.go
index 3cc55e4..cf39f84 100644
--- a/go/chromite/api/payload_grpc.pb.go
+++ b/go/chromite/api/payload_grpc.pb.go
@@ -18,6 +18,7 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type PayloadServiceClient interface {
+	// Added in R79.
 	GeneratePayload(ctx context.Context, in *GenerationRequest, opts ...grpc.CallOption) (*GenerationResponse, error)
 }
 
@@ -42,6 +43,7 @@
 // All implementations must embed UnimplementedPayloadServiceServer
 // for forward compatibility
 type PayloadServiceServer interface {
+	// Added in R79.
 	GeneratePayload(context.Context, *GenerationRequest) (*GenerationResponse, error)
 	mustEmbedUnimplementedPayloadServiceServer()
 }
diff --git a/go/chromite/api/sdk_grpc.pb.go b/go/chromite/api/sdk_grpc.pb.go
index 3583284..4a53443 100644
--- a/go/chromite/api/sdk_grpc.pb.go
+++ b/go/chromite/api/sdk_grpc.pb.go
@@ -20,19 +20,19 @@
 type SdkServiceClient interface {
 	// Create method, supports replacing an existing chroot.
 	Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error)
-	// Delete a chroot.
+	// Delete a chroot. Added in R79.
 	Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
-	// Clean up unneeded files from the chroot.
+	// Clean up unneeded files from the chroot. Added in R81.
 	Clean(ctx context.Context, in *CleanRequest, opts ...grpc.CallOption) (*CleanResponse, error)
-	// Unmount a chroot.
+	// Unmount a chroot. Added in R81.
 	Unmount(ctx context.Context, in *UnmountRequest, opts ...grpc.CallOption) (*UnmountResponse, error)
 	// Update the chroot.
 	Update(ctx context.Context, in *UpdateRequest, opts ...grpc.CallOption) (*UpdateResponse, error)
-	// Create a chroot snapshot.
+	// Create a chroot snapshot. Added in R83.
 	CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*CreateSnapshotResponse, error)
-	// Restore a chroot to a snapshot.
+	// Restore a chroot to a snapshot. Added in R83.
 	RestoreSnapshot(ctx context.Context, in *RestoreSnapshotRequest, opts ...grpc.CallOption) (*RestoreSnapshotResponse, error)
-	// Unmount a filesystem path and any submounts under it.
+	// Unmount a filesystem path and any submounts under it.  Added in R86.
 	UnmountPath(ctx context.Context, in *UnmountPathRequest, opts ...grpc.CallOption) (*UnmountPathResponse, error)
 }
 
@@ -122,19 +122,19 @@
 type SdkServiceServer interface {
 	// Create method, supports replacing an existing chroot.
 	Create(context.Context, *CreateRequest) (*CreateResponse, error)
-	// Delete a chroot.
+	// Delete a chroot. Added in R79.
 	Delete(context.Context, *DeleteRequest) (*DeleteResponse, error)
-	// Clean up unneeded files from the chroot.
+	// Clean up unneeded files from the chroot. Added in R81.
 	Clean(context.Context, *CleanRequest) (*CleanResponse, error)
-	// Unmount a chroot.
+	// Unmount a chroot. Added in R81.
 	Unmount(context.Context, *UnmountRequest) (*UnmountResponse, error)
 	// Update the chroot.
 	Update(context.Context, *UpdateRequest) (*UpdateResponse, error)
-	// Create a chroot snapshot.
+	// Create a chroot snapshot. Added in R83.
 	CreateSnapshot(context.Context, *CreateSnapshotRequest) (*CreateSnapshotResponse, error)
-	// Restore a chroot to a snapshot.
+	// Restore a chroot to a snapshot. Added in R83.
 	RestoreSnapshot(context.Context, *RestoreSnapshotRequest) (*RestoreSnapshotResponse, error)
-	// Unmount a filesystem path and any submounts under it.
+	// Unmount a filesystem path and any submounts under it.  Added in R86.
 	UnmountPath(context.Context, *UnmountPathRequest) (*UnmountPathResponse, error)
 	mustEmbedUnimplementedSdkServiceServer()
 }
diff --git a/go/chromite/api/sysroot.pb.go b/go/chromite/api/sysroot.pb.go
index a1433fa..61492e6 100644
--- a/go/chromite/api/sysroot.pb.go
+++ b/go/chromite/api/sysroot.pb.go
@@ -143,7 +143,7 @@
 	Profile *Profile `protobuf:"bytes,3,opt,name=profile,proto3" json:"profile,omitempty"`
 	// The chroot to use to execute the endpoint.
 	Chroot *chromiumos.Chroot `protobuf:"bytes,4,opt,name=chroot,proto3" json:"chroot,omitempty"`
-	// Package index files available for use.
+	// Package index files available for use.  Added in R86.
 	PackageIndexes []*chromiumos.PackageIndexInfo `protobuf:"bytes,5,rep,name=package_indexes,json=packageIndexes,proto3" json:"package_indexes,omitempty"`
 }
 
diff --git a/go/chromite/api/sysroot_grpc.pb.go b/go/chromite/api/sysroot_grpc.pb.go
index e31f3ac..5e1f444 100644
--- a/go/chromite/api/sysroot_grpc.pb.go
+++ b/go/chromite/api/sysroot_grpc.pb.go
@@ -20,13 +20,13 @@
 type SysrootServiceClient interface {
 	// Create the base sysroot structure.
 	Create(ctx context.Context, in *SysrootCreateRequest, opts ...grpc.CallOption) (*SysrootCreateResponse, error)
-	// Generate sysroot archive.
+	// Generate sysroot archive.  Added in R83.
 	GenerateArchive(ctx context.Context, in *SysrootGenerateArchiveRequest, opts ...grpc.CallOption) (*SysrootGenerateArchiveResponse, error)
 	// Install the toolchain into the sysroot.
 	InstallToolchain(ctx context.Context, in *InstallToolchainRequest, opts ...grpc.CallOption) (*InstallToolchainResponse, error)
 	// Install packages into the sysroot. By default will install all packages.
 	InstallPackages(ctx context.Context, in *InstallPackagesRequest, opts ...grpc.CallOption) (*InstallPackagesResponse, error)
-	// Install SimpleChrome sysroot.
+	// Install SimpleChrome sysroot.  Added in R79.
 	CreateSimpleChromeSysroot(ctx context.Context, in *CreateSimpleChromeSysrootRequest, opts ...grpc.CallOption) (*CreateSimpleChromeSysrootResponse, error)
 }
 
@@ -89,13 +89,13 @@
 type SysrootServiceServer interface {
 	// Create the base sysroot structure.
 	Create(context.Context, *SysrootCreateRequest) (*SysrootCreateResponse, error)
-	// Generate sysroot archive.
+	// Generate sysroot archive.  Added in R83.
 	GenerateArchive(context.Context, *SysrootGenerateArchiveRequest) (*SysrootGenerateArchiveResponse, error)
 	// Install the toolchain into the sysroot.
 	InstallToolchain(context.Context, *InstallToolchainRequest) (*InstallToolchainResponse, error)
 	// Install packages into the sysroot. By default will install all packages.
 	InstallPackages(context.Context, *InstallPackagesRequest) (*InstallPackagesResponse, error)
-	// Install SimpleChrome sysroot.
+	// Install SimpleChrome sysroot.  Added in R79.
 	CreateSimpleChromeSysroot(context.Context, *CreateSimpleChromeSysrootRequest) (*CreateSimpleChromeSysrootResponse, error)
 	mustEmbedUnimplementedSysrootServiceServer()
 }
diff --git a/go/chromite/api/toolchain_grpc.pb.go b/go/chromite/api/toolchain_grpc.pb.go
index 6154058..c3bb0e2 100644
--- a/go/chromite/api/toolchain_grpc.pb.go
+++ b/go/chromite/api/toolchain_grpc.pb.go
@@ -21,20 +21,21 @@
 	// DEPRECATED for recipes: used only by legacy toolchain builders.
 	// See also crbug/1019868.  R87 is the last release branch that supports the
 	// legacy toolchain builders.
-	// Update Chrome ebuild with most recent unvetted orderfile
+	// Update Chrome ebuild with most recent unvetted orderfile.  Added in R78.
 	UpdateEbuildWithAFDOArtifacts(ctx context.Context, in *VerifyAFDOArtifactsRequest, opts ...grpc.CallOption) (*VerifyAFDOArtifactsResponse, error)
 	// DEPRECATED for recipes: used only by legacy toolchain builders.
 	// See also crbug/1019868.  R87 is the last release branch that supports the
 	// legacy toolchain builders.
-	// Copy the orderfile from unvetted GS bucket to vetted bucket.
+	// Copy the orderfile from unvetted GS bucket to vetted bucket.  Added in R78.
 	UploadVettedAFDOArtifacts(ctx context.Context, in *VerifyAFDOArtifactsRequest, opts ...grpc.CallOption) (*VerifyAFDOArtifactsResponse, error)
 	// Prepare to build toolchain artifacts.  This will be called twice:
 	// Once with chroot and sysroot = None, before the chroot is created, and
 	// again at the start of the 'install packages' step, if the build gets that
-	// far.
+	// far.  Added in R80.
 	PrepareForBuild(ctx context.Context, in *PrepareForToolchainBuildRequest, opts ...grpc.CallOption) (*PrepareForToolchainBuildResponse, error)
-	// Bundle toolchain artifacts.
+	// Bundle toolchain artifacts.  Added in R80.
 	BundleArtifacts(ctx context.Context, in *BundleToolchainRequest, opts ...grpc.CallOption) (*BundleToolchainResponse, error)
+	// Added in R90.
 	GetUpdatedFiles(ctx context.Context, in *GetUpdatedFilesRequest, opts ...grpc.CallOption) (*GetUpdatedFilesResponse, error)
 }
 
@@ -98,20 +99,21 @@
 	// DEPRECATED for recipes: used only by legacy toolchain builders.
 	// See also crbug/1019868.  R87 is the last release branch that supports the
 	// legacy toolchain builders.
-	// Update Chrome ebuild with most recent unvetted orderfile
+	// Update Chrome ebuild with most recent unvetted orderfile.  Added in R78.
 	UpdateEbuildWithAFDOArtifacts(context.Context, *VerifyAFDOArtifactsRequest) (*VerifyAFDOArtifactsResponse, error)
 	// DEPRECATED for recipes: used only by legacy toolchain builders.
 	// See also crbug/1019868.  R87 is the last release branch that supports the
 	// legacy toolchain builders.
-	// Copy the orderfile from unvetted GS bucket to vetted bucket.
+	// Copy the orderfile from unvetted GS bucket to vetted bucket.  Added in R78.
 	UploadVettedAFDOArtifacts(context.Context, *VerifyAFDOArtifactsRequest) (*VerifyAFDOArtifactsResponse, error)
 	// Prepare to build toolchain artifacts.  This will be called twice:
 	// Once with chroot and sysroot = None, before the chroot is created, and
 	// again at the start of the 'install packages' step, if the build gets that
-	// far.
+	// far.  Added in R80.
 	PrepareForBuild(context.Context, *PrepareForToolchainBuildRequest) (*PrepareForToolchainBuildResponse, error)
-	// Bundle toolchain artifacts.
+	// Bundle toolchain artifacts.  Added in R80.
 	BundleArtifacts(context.Context, *BundleToolchainRequest) (*BundleToolchainResponse, error)
+	// Added in R90.
 	GetUpdatedFiles(context.Context, *GetUpdatedFilesRequest) (*GetUpdatedFilesResponse, error)
 	mustEmbedUnimplementedToolchainServiceServer()
 }
diff --git a/src/chromite/api/android.proto b/src/chromite/api/android.proto
index 1274d25..375f0e9 100644
--- a/src/chromite/api/android.proto
+++ b/src/chromite/api/android.proto
@@ -74,7 +74,7 @@
     };
   }
 
-  // Unpin the Android package version.
+  // Unpin the Android package version.  Added in R76.
   rpc UnpinVersion(UnpinVersionRequest)
     returns (UnpinVersionResponse) {
     option (method_options) = {
diff --git a/src/chromite/api/api.proto b/src/chromite/api/api.proto
index f879964..0e4d533 100644
--- a/src/chromite/api/api.proto
+++ b/src/chromite/api/api.proto
@@ -46,6 +46,7 @@
     service_chroot_assert: OUTSIDE,
   };
 
+  // Added in R77.
   rpc Get(MethodGetRequest) returns (MethodGetResponse) {
     option (method_options) = {
       implementation_name: "GetMethods",
@@ -60,6 +61,7 @@
     service_chroot_assert: OUTSIDE,
   };
 
+  // Added in R77.
   rpc Get(VersionGetRequest) returns (VersionGetResponse) {
     option (method_options) = {
       implementation_name: "GetVersion",
diff --git a/src/chromite/api/artifacts.proto b/src/chromite/api/artifacts.proto
index 7ee9c2c..0665073 100644
--- a/src/chromite/api/artifacts.proto
+++ b/src/chromite/api/artifacts.proto
@@ -163,12 +163,13 @@
   };
 
   // Prepare to build artifacts.
+  // TODO(crbug/1034529): This is broken because it was never added to chromite.
   rpc PrepareForBuild(PrepareForBuildRequest) returns (PrepareForBuildResponse);
 
-  // Get artifacts for build.
+  // Get artifacts for build. Added in R90.
   rpc Get(GetRequest) returns (GetResponse);
 
-  // Fetch the pinned guest image locations.
+  // Fetch the pinned guest image locations.  Added in R77.
   rpc FetchPinnedGuestImageUris(PinnedGuestImageUriRequest)
     returns (PinnedGuestImageUriResponse);
 
@@ -183,11 +184,11 @@
   rpc BundleAutotestFiles(BundleRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
-  // Create the ChromeOS Config JSON payload.
+  // Create the ChromeOS Config JSON payload.  Added in R78.
   rpc BundleChromeOSConfig(BundleRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
-  // Create a tar archive of debug symbols.
+  // Create a tar archive of debug symbols.  Added in R90.
   rpc BundleDebugSymbols(BundleRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
@@ -200,6 +201,7 @@
 
   // TODO(crbug/1034529): DEPRECATED use Get
   // Create a tar.xz archive for each image that has been created.
+  // Added in R79.
   rpc BundleImageArchives(BundleRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
@@ -209,7 +211,7 @@
   // TODO(crbug/1034529): DEPRECATED use Get
   // DEPRECATED for recipes: crbug/1019868: This are being replaced by
   // ToolchainService.Bundle{ArtifactType}()
-  // Create Chrome Benchmark AFDO builder artifacts.
+  // Create Chrome Benchmark AFDO builder artifacts.  Added in R78.
   rpc BundleAFDOGenerationArtifacts(BundleChromeAFDORequest)
     returns (BundleResponse);
 
@@ -234,18 +236,20 @@
   rpc BundleVmFiles(BundleVmFilesRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
-  // Generate a CPE report to a file.
+  // Generate a CPE report to a file.  Added in R78.
   rpc ExportCpeReport(BundleRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
   // Create a tar archive with fingerprint MCU on-device unittest binaries.
+  // Added in R88.
   rpc BundleFpmcuUnittests(BundleRequest) returns (BundleResponse);
 
   // TODO(crbug/1034529): DEPRECATED use Get
   // Create a tarball from the test image suitable for importing into GCE.
+  // Added in R89.
   rpc BundleGceTarball(BundleRequest) returns (BundleResponse);
 
-  // Generate all Remote Test Driver metadata.
+  // Generate all Remote Test Driver metadata.  Added in R85.
   //
   // Response consists of one or more metadata files. Each file must contain a
   // single binary encoded chromiumos.config.api.test.metadata.v1.Specification
@@ -260,7 +264,7 @@
   rpc GenerateRemoteTestDriverSpecification(BundleRequest)
     returns (BundleResponse);
 
-  // Generate all Remote Test Driver container images.
+  // Generate all Remote Test Driver container images.  Added in R85.
   //
   // Response consists of one or more Docker container images.
   // The images are identified by their Docker image digest. The filenames of
diff --git a/src/chromite/api/binhost.proto b/src/chromite/api/binhost.proto
index 6865637..6910434 100644
--- a/src/chromite/api/binhost.proto
+++ b/src/chromite/api/binhost.proto
@@ -203,14 +203,14 @@
     service_chroot_assert: OUTSIDE,
   };
 
-  // Get the binhosts for a build target.
+  // Get the binhosts for a build target.  Added in R77.
   rpc Get(BinhostGetRequest) returns (BinhostGetResponse) {
     option (method_options) = {
       implementation_name: "GetBinhosts",
     };
   }
 
-  // Get the arguments from the private overlay's ACL file.
+  // Get the arguments from the private overlay's ACL file.  Added in R77.
   rpc GetPrivatePrebuiltAclArgs(AclArgsRequest) returns (AclArgsResponse);
 
   // Return a list of files to upload to the binhost. Importantly, this method
@@ -223,13 +223,13 @@
   // Return a list of dev-install files to upload to the binhost. Like
   // PrepareBinhostUploads, this method assumes that all files, once uploaded,
   // will share the same relative path on the remote disk as they do on the
-  // remote disk.
+  // remote disk.  Added in R78.
   rpc PrepareDevInstallBinhostUploads(PrepareDevInstallBinhostUploadsRequest)
     returns (PrepareDevInstallBinhostUploadsResponse);
 
   // Update the binhost key for a build targets.
   rpc SetBinhost(SetBinhostRequest) returns (SetBinhostResponse);
 
-  // Regenerate the builder cache.
+  // Regenerate the builder cache.  Added in R78.
   rpc RegenBuildCache(RegenBuildCacheRequest) returns (RegenBuildCacheResponse);
 }
diff --git a/src/chromite/api/depgraph.proto b/src/chromite/api/depgraph.proto
index bd5f0d2..4a1d69d 100644
--- a/src/chromite/api/depgraph.proto
+++ b/src/chromite/api/depgraph.proto
@@ -22,7 +22,7 @@
   repeated PackageDepInfo package_deps = 2;
 
   // The sysroot whose dependency graph is being created.  If no sysroot is
-  // being used, may be unspecified.
+  // being used, may be unspecified.  Added in R85.
   Sysroot sysroot = 3;
 }
 
@@ -48,7 +48,7 @@
 // {"build_target":{"name":"board"},"output_file":"/tmp/depgraph.json"}
 message GetBuildDependencyGraphRequest {
   // The sysroot whose dependency graph is being created.  If no sysroot is
-  // being used, may be unspecified.
+  // being used, may be unspecified.  Added in R85.
   Sysroot sysroot = 4;
   // TODO(crbug/1081828): drop when all supported release branches are no longer
   // using this.
@@ -56,16 +56,17 @@
   // The board whose dependency graph is being created.  If both sysroot and
   // build_target are given, sysroot is used.
   chromiumos.BuildTarget build_target = 1;
-  // The chroot to use to execute the endpoint.
+  // The chroot to use to execute the endpoint.  Added in R80.
   chromiumos.Chroot chroot = 2;
   // List of packages for which to create the dependency graph. If none are
-  // specified the standard list of packages is used.
+  // specified the standard list of packages is used.  Added in R81.
   repeated chromiumos.PackageInfo packages = 3;
 }
 
 // Response from creating dependency graph json map.
 message GetBuildDependencyGraphResponse {
   DepGraph dep_graph = 1;
+  // Added in R80.
   DepGraph sdk_dep_graph = 2;
 }
 
@@ -110,10 +111,11 @@
   rpc GetBuildDependencyGraph(GetBuildDependencyGraphRequest)
     returns (GetBuildDependencyGraphResponse);
 
-  // Get the list of source paths that are relevant to the toolchain
+  // Get the list of source paths that are relevant to the toolchain.
+  // Added in R81.
   rpc GetToolchainPaths(GetToolchainPathsRequest)
     returns (GetToolchainPathsResponse);
 
-  // Get the list of package dependencies.
+  // Get the list of package dependencies.  Added in R87.
   rpc List(ListRequest) returns (ListResponse);
 }
diff --git a/src/chromite/api/firmware.proto b/src/chromite/api/firmware.proto
index 80069a4..5878efe 100644
--- a/src/chromite/api/firmware.proto
+++ b/src/chromite/api/firmware.proto
@@ -6,47 +6,47 @@
 import "chromite/api/build_api.proto";
 import "chromiumos/common.proto";
 
-// Protos for executing firmware builder functionality.
+// Protos for executing firmware builder functionality.  Added in R88.
 
 // TODO(b/177907747): Drop this once the migration is complete.
-// List of known location that firmware can be built from
+// List of known location that firmware can be built from.
 enum FwLocation {
   FW_LOCATION_UNKNOWN = 0;
   PLATFORM_EC = 1; // platform/ec/firmware_builder.py
   PLATFORM_ZEPHYR = 2; // platform/zephyr-chrome/firmware_builder.py
-  PLATFORM_TI50 = 3; // platform/ti50/common/firmware_builder.py
+  PLATFORM_TI50 = 3; // platform/ti50/common/firmware_builder.py.  Added in R90.
 }
 
-// Metrics collected on every successful firmware build
+// Metrics collected on every successful firmware build.
 message FwBuildMetric {
-  // Lowercase name of the firmware target built. E.g. phaser
+  // Lowercase name of the firmware target built. E.g. phaser.
   string target_name = 1;
 
   // Lowercase name of the platform the firmware target belongs to. May be
-  // blank. E.g. octopus
+  // blank. E.g. octopus.
   string platform_name = 2;
 
-  // List of firmware sections and their free and total sizes in bytes
+  // List of firmware sections and their free and total sizes in bytes.
   repeated FwSection fw_section = 3;
 
   message FwSection {
     // Region as described in FMAP or linker script.
-    // E.g. EC_RO, EC_RW, EC_NVRAM, RO_BSS, RW_BSS, SHARED_MEM
+    // E.g. EC_RO, EC_RW, EC_NVRAM, RO_BSS, RW_BSS, SHARED_MEM.
     FwRegion region = 1;
 
     enum FwRegion {
       FW_REGION_UNKNOWN = 0;
-      EC_RO = 1;  // The entire section protected by write protect
-      EC_RW = 2;  // Also RW_A for EFS1 systems
+      EC_RO = 1;  // The entire section protected by write protect.
+      EC_RW = 2;  // Also RW_A for EFS1 systems.
       EC_RO_BSS = 3;
       EC_RW_BSS = 4;
       EC_SHARED_MEM = 5;
     }
 
-    // The number of bytes used in this section
+    // The number of bytes used in this section.
     uint32 used = 2;
 
-    // The total number of bytes available in this section
+    // The total number of bytes available in this section.
     uint32 total = 3;
   }
 
@@ -57,14 +57,14 @@
     uint32 tiny = 3;
   }
 
-  // Optional information related to a specific target type
+  // Optional information related to a specific target type.
   oneof image_type {
     ZephyrTarget zephyr = 4;
   }
 
-  // Zephyr-base firmware target related build metrics
+  // Zephyr-base firmware target related build metrics.
   message ZephyrTarget {
-    // The version of the Zephyr kernel used during build
+    // The version of the Zephyr kernel used during build.
     Version kernel_version = 1;
   }
 }
@@ -72,21 +72,21 @@
 // A list of FW metrics collected on every successful firmware build
 // Implementation note, this is a separate message since it serves as the
 // serialization base between the build_api end point and the entry point
-// in the firmware_builder.py
+// in the firmware_builder.py.
 message FwBuildMetricList {
   repeated FwBuildMetric value = 1;
 }
 
-// Metrics collect on successful firmware unit test runs
+// Metrics collect on successful firmware unit test runs.
 message FwTestMetric {
-  // Name of firmware test
+  // Name of firmware test.
   string name = 1;
 }
 
 // A list of FW metrics collected on every successful firmware unit test.
 // Implementation note, this is a separate message since it serves as the
 // serialization base between the build_api end point and the entry point
-// in the firmware_builder.py
+// in the firmware_builder.py.
 message FwTestMetricList {
   repeated FwTestMetric value = 1;
 }
@@ -94,7 +94,7 @@
 // TODO(b/177907747): Drop this once the migration is complete.
 message BuildAllTotFirmwareRequest {
   // Location of firmware to build call into firmware_builder.py entry point.
-  // The `build` subcommand will be called
+  // The `build` subcommand will be called.
   FwLocation firmware_location = 1;
 
   // The chroot where the operations will be executed.
@@ -179,7 +179,7 @@
   chromiumos.UploadedArtifactsByService.Firmware artifacts = 1;
 }
 
-// The Firmware service.
+// The Firmware service.  Added in R88.
 service FirmwareService {
   option (service_options) = {
     module: "firmware",
@@ -187,24 +187,24 @@
   };
 
   // TODO(b/177907747): Drop this once the migration is complete.
-  // Builds all of the firmware targets on ToT at specified location
+  // Builds all of the firmware targets on ToT at specified location.
   rpc BuildAllTotFirmware(BuildAllTotFirmwareRequest)
       returns (BuildAllTotFirmwareResponse);
 
   // TODO(b/177907747): Drop this once the migration is complete.
-  // Runs all of the firmware tests on ToT at specified location
+  // Runs all of the firmware tests on ToT at specified location.
   rpc TestAllTotFirmware(TestAllTotFirmwareRequest)
       returns (TestAllTotFirmwareResponse);
 
-  // Builds all of the firmware targets at specified location
+  // Builds all of the firmware targets at specified location. Added in R90.
   rpc BuildAllFirmware(BuildAllFirmwareRequest)
       returns (BuildAllFirmwareResponse);
 
-  // Runs all of the firmware tests at specified location
+  // Runs all of the firmware tests at specified location. Added in R90.
   rpc TestAllFirmware(TestAllFirmwareRequest)
       returns (TestAllFirmwareResponse);
 
-  // Bundles any firmware images and other artifacts.
+  // Bundles any firmware images and other artifacts. Added in R90.
   rpc BundleFirmwareArtifacts(BundleFirmwareArtifactsRequest)
       returns (BundleFirmwareArtifactsResponse);
 }
diff --git a/src/chromite/api/image.proto b/src/chromite/api/image.proto
index 4b5476d..d2ed32f 100644
--- a/src/chromite/api/image.proto
+++ b/src/chromite/api/image.proto
@@ -52,6 +52,7 @@
   // Any packages that failed to build. Empty on success.
   repeated chromiumos.PackageInfo failed_packages = 3;
   // The metric events that occurred during the running of CreateImage.
+  // Added in R79.
   repeated chromiumos.MetricEvent events = 4;
 }
 
@@ -136,7 +137,7 @@
   // }
   rpc Test(TestImageRequest) returns (TestImageResult);
 
-  // Execute SignerTest for an image.
+  // Execute SignerTest for an image.  Added in R78.
   // Example json:
   // {
   //  "build_target": {"name": "reef"},
@@ -145,7 +146,7 @@
   // }
   rpc SignerTest(TestImageRequest) returns (TestImageResult);
 
-  // Execute PushImage for a script.
+  // Execute PushImage for a script.  Added in R89.
   // Example json:
   // {
   //   "dryrun": true,
diff --git a/src/chromite/api/packages.proto b/src/chromite/api/packages.proto
index c5d8698..5580579 100644
--- a/src/chromite/api/packages.proto
+++ b/src/chromite/api/packages.proto
@@ -19,7 +19,7 @@
   // The build target we are checking for.
   chromiumos.BuildTarget build_target = 2;
   // List of packages to be installed by the builder. If none are specified the
-  // standard list of packages is used.
+  // standard list of packages is used.  Added in R79.
   repeated chromiumos.PackageInfo packages = 3;
 }
 
@@ -32,12 +32,12 @@
   // An atom to pass to portageq, e.g. 'chromeos-chrome'.
   string atom = 1;
 
-  // The chroot path.
+  // The chroot path.  Added in R78.
   // Required if not in the default location.
   chromiumos.Chroot chroot = 2;
 
   // The build target to examine. Checks the chroot when not provided.
-  // Required when examining a build target.
+  // Required when examining a build target.  Added in R78.
   chromiumos.BuildTarget build_target = 3;
 }
 
@@ -292,7 +292,7 @@
     service_chroot_assert: INSIDE,
   };
 
-  // Check if the build target has chrome in its depgraph.
+  // Check if the build target has chrome in its depgraph.  Added in R79.
   rpc BuildsChrome(BuildsChromeRequest) returns (BuildsChromeResponse);
 
   // Check whether the Chrome source tree is needed.  Does not compile nor
@@ -305,38 +305,40 @@
   // Find the best (highest) available version of the requested package.
   // This must be run after the chroot is set up (for chroot package lookup) or
   // after the sysroot is created (for build target package lookup).
+  // Added in R79.
   rpc GetBestVisible(GetBestVisibleRequest) returns (GetBestVisibleResponse);
 
   // Like GetBestVisible, but returns only the chrome version. The chrome
   // package version is something like 78.9.0.123_rc-r1, where the chrome
   // version itself is just 78.9.0.123. This case does not have a spec in
   // Portage, so it cannot be directly fetched by GetBestVisible.
+  // Added in R79.
   rpc GetChromeVersion(GetChromeVersionRequest)
     returns (GetChromeVersionResponse);
 
   // Return the various build version fields that can be stored (e.g. in
-  // metadata.json).
+  // metadata.json).  Added in R79.
   rpc GetTargetVersions(GetTargetVersionsRequest)
     returns (GetTargetVersionsResponse);
 
   // Return the various metabuilder fields for a release builder.
-  // This can be run after InstallPackages.
+  // This can be run after InstallPackages. Added in R84.
   rpc GetBuilderMetadata(GetBuilderMetadataRequest)
     returns (GetBuilderMetadataResponse);
 
   // Check if there is an available chrome prebuilt for the most recent
-  // version of chrome.
+  // version of chrome.  Added in R79.
   rpc HasChromePrebuilt(HasChromePrebuiltRequest)
     returns (HasChromePrebuiltResponse);
 
   // Check if there is an available prebuilt for the most recent version of the
-  // package.
+  // package.  Added in R83.
   rpc HasPrebuilt(HasPrebuiltRequest) returns (HasPrebuiltResponse);
 
   // The generic uprev process -- performs uprevs for all packages in the
   // public and/or private overlays for the build target(s) specified.
   // This handles all cros_workon packages except those that have a separate
-  // uprev process.
+  // uprev process.  Added in R79.
   rpc Uprev(UprevPackagesRequest) returns (UprevPackagesResponse) {
     option (method_options) = {
       method_chroot_assert: OUTSIDE,
@@ -347,6 +349,7 @@
   // This endpoint iterates over a list of git refs that represent versions
   // and searches for a new version, updating and upreving the package ebuild
   // if such a version is found. The exact behavior depends on the package.
+  // Added in R79.
   rpc UprevVersionedPackage(UprevVersionedPackageRequest)
     returns (UprevVersionedPackageResponse) {
     option (method_options) = {
diff --git a/src/chromite/api/payload.proto b/src/chromite/api/payload.proto
index 229723b..318a906 100644
--- a/src/chromite/api/payload.proto
+++ b/src/chromite/api/payload.proto
@@ -124,5 +124,7 @@
     module: "payload",
     service_chroot_assert: INSIDE,
   };
+
+  // Added in R79.
   rpc GeneratePayload(GenerationRequest) returns (GenerationResponse);
 }
diff --git a/src/chromite/api/sdk.proto b/src/chromite/api/sdk.proto
index e0bbbcd..18d85ce 100644
--- a/src/chromite/api/sdk.proto
+++ b/src/chromite/api/sdk.proto
@@ -128,13 +128,13 @@
   // Create method, supports replacing an existing chroot.
   rpc Create(CreateRequest) returns (CreateResponse);
 
-  // Delete a chroot.
+  // Delete a chroot. Added in R79.
   rpc Delete(DeleteRequest) returns (DeleteResponse);
 
-  // Clean up unneeded files from the chroot.
+  // Clean up unneeded files from the chroot. Added in R81.
   rpc Clean(CleanRequest) returns (CleanResponse);
 
-  // Unmount a chroot.
+  // Unmount a chroot. Added in R81.
   rpc Unmount(UnmountRequest) returns (UnmountResponse);
 
   // Update the chroot.
@@ -144,13 +144,13 @@
     };
   }
 
-  // Create a chroot snapshot.
+  // Create a chroot snapshot. Added in R83.
   rpc CreateSnapshot(CreateSnapshotRequest) returns (CreateSnapshotResponse);
 
-  // Restore a chroot to a snapshot.
+  // Restore a chroot to a snapshot. Added in R83.
   rpc RestoreSnapshot(RestoreSnapshotRequest) returns (RestoreSnapshotResponse);
 
-  // Unmount a filesystem path and any submounts under it.
+  // Unmount a filesystem path and any submounts under it.  Added in R86.
   rpc UnmountPath(UnmountPathRequest)
       returns (UnmountPathResponse);
 }
diff --git a/src/chromite/api/sysroot.proto b/src/chromite/api/sysroot.proto
index 392af61..6f44e5d 100644
--- a/src/chromite/api/sysroot.proto
+++ b/src/chromite/api/sysroot.proto
@@ -44,7 +44,7 @@
   Profile profile = 3;
   // The chroot to use to execute the endpoint.
   chromiumos.Chroot chroot = 4;
-  // Package index files available for use.
+  // Package index files available for use.  Added in R86.
   repeated chromiumos.PackageIndexInfo package_indexes = 5;
 }
 
@@ -169,7 +169,7 @@
   // Create the base sysroot structure.
   rpc Create(SysrootCreateRequest) returns (SysrootCreateResponse);
 
-  // Generate sysroot archive.
+  // Generate sysroot archive.  Added in R83.
   rpc GenerateArchive(SysrootGenerateArchiveRequest)
     returns (SysrootGenerateArchiveResponse);
 
@@ -180,7 +180,7 @@
   // Install packages into the sysroot. By default will install all packages.
   rpc InstallPackages(InstallPackagesRequest) returns (InstallPackagesResponse);
 
-  // Install SimpleChrome sysroot.
+  // Install SimpleChrome sysroot.  Added in R79.
   rpc CreateSimpleChromeSysroot(CreateSimpleChromeSysrootRequest)
     returns (CreateSimpleChromeSysrootResponse);
 }
diff --git a/src/chromite/api/toolchain.proto b/src/chromite/api/toolchain.proto
index 0ed321d..d087f99 100644
--- a/src/chromite/api/toolchain.proto
+++ b/src/chromite/api/toolchain.proto
@@ -3,6 +3,8 @@
 
 option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromite/api";
 
+// Added in R77.
+
 import "chromite/api/artifacts.proto";
 import "chromite/api/build_api.proto";
 import "chromite/api/sysroot.proto";
@@ -163,7 +165,7 @@
   // DEPRECATED for recipes: used only by legacy toolchain builders.
   // See also crbug/1019868.  R87 is the last release branch that supports the
   // legacy toolchain builders.
-  // Update Chrome ebuild with most recent unvetted orderfile
+  // Update Chrome ebuild with most recent unvetted orderfile.  Added in R78.
   rpc UpdateEbuildWithAFDOArtifacts(VerifyAFDOArtifactsRequest)
     returns (VerifyAFDOArtifactsResponse) {
     option (method_options) = {
@@ -174,7 +176,7 @@
   // DEPRECATED for recipes: used only by legacy toolchain builders.
   // See also crbug/1019868.  R87 is the last release branch that supports the
   // legacy toolchain builders.
-  // Copy the orderfile from unvetted GS bucket to vetted bucket.
+  // Copy the orderfile from unvetted GS bucket to vetted bucket.  Added in R78.
   rpc UploadVettedAFDOArtifacts(VerifyAFDOArtifactsRequest)
     returns (VerifyAFDOArtifactsResponse) {
     option (method_options) = {
@@ -185,14 +187,15 @@
   // Prepare to build toolchain artifacts.  This will be called twice:
   // Once with chroot and sysroot = None, before the chroot is created, and
   // again at the start of the 'install packages' step, if the build gets that
-  // far.
+  // far.  Added in R80.
   rpc PrepareForBuild(PrepareForToolchainBuildRequest)
     returns (PrepareForToolchainBuildResponse);
 
-  // Bundle toolchain artifacts.
+  // Bundle toolchain artifacts.  Added in R80.
   rpc BundleArtifacts(BundleToolchainRequest)
     returns (BundleToolchainResponse);
 
+  // Added in R90.
   rpc GetUpdatedFiles(GetUpdatedFilesRequest)
     returns (GetUpdatedFilesResponse);
 }