diff --git a/go/test_platform/phosphorus/common.pb.go b/go/test_platform/phosphorus/common.pb.go
index faa03e4..2db1f8a 100644
--- a/go/test_platform/phosphorus/common.pb.go
+++ b/go/test_platform/phosphorus/common.pb.go
@@ -64,9 +64,6 @@
 
 // TaskEnvironment defines task-specific parameters used by phosphorus.
 type TaskEnvironment struct {
-	// Path to the client offload directory relative to the results directory
-	//  Intended for log-data which is needed synchronously with high reliability
-	SynchronousOffloadDir string `protobuf:"bytes,1,opt,name=synchronous_offload_dir,json=synchronousOffloadDir,proto3" json:"synchronous_offload_dir,omitempty"`
 	// Absolute path to the results directory for a given run. Include results of
 	//  both tests and non-test tasks like provision
 	ResultsDir string `protobuf:"bytes,2,opt,name=results_dir,json=resultsDir,proto3" json:"results_dir,omitempty"`
@@ -111,13 +108,6 @@
 
 var xxx_messageInfo_TaskEnvironment proto.InternalMessageInfo
 
-func (m *TaskEnvironment) GetSynchronousOffloadDir() string {
-	if m != nil {
-		return m.SynchronousOffloadDir
-	}
-	return ""
-}
-
 func (m *TaskEnvironment) GetResultsDir() string {
 	if m != nil {
 		return m.ResultsDir
@@ -250,30 +240,29 @@
 }
 
 var fileDescriptor_6d57f1c2e65b1971 = []byte{
-	// 389 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0xab, 0xd3, 0x40,
-	0x14, 0x85, 0x89, 0xef, 0xf9, 0xc0, 0x89, 0x3c, 0xdf, 0x8b, 0x55, 0xbb, 0x53, 0x03, 0x42, 0x45,
-	0x4c, 0xa0, 0x15, 0x17, 0x82, 0x9b, 0x34, 0x2e, 0x0a, 0xa2, 0x10, 0x75, 0x23, 0xc2, 0x70, 0x9b,
-	0x4e, 0xd2, 0xa1, 0x99, 0xb9, 0xc3, 0xdc, 0x89, 0xd4, 0xdf, 0xe7, 0x2f, 0xf1, 0x9f, 0x48, 0xa6,
-	0xad, 0x4d, 0x2b, 0x59, 0xe6, 0x9c, 0xef, 0x5c, 0x6e, 0xce, 0x5c, 0xf6, 0xc2, 0x09, 0x72, 0xdc,
-	0x34, 0xe0, 0x2a, 0xb4, 0x2a, 0x35, 0x6b, 0x24, 0xb3, 0x46, 0xdb, 0x52, 0x5a, 0xa2, 0x52, 0xa8,
-	0x13, 0x63, 0xd1, 0x61, 0x34, 0x3e, 0xc1, 0x92, 0x23, 0x16, 0xcf, 0xd8, 0x75, 0x86, 0xee, 0x83,
-	0xfe, 0x29, 0x2d, 0x6a, 0x25, 0xb4, 0x8b, 0x9e, 0xb3, 0xfb, 0xd0, 0x3a, 0xf4, 0x89, 0x95, 0xb4,
-	0xe3, 0xe0, 0x59, 0x30, 0xb9, 0x57, 0x84, 0x07, 0x2d, 0x97, 0x36, 0xfe, 0x1d, 0xb0, 0x07, 0x5f,
-	0x81, 0x36, 0xfd, 0xd8, 0x5b, 0xf6, 0x84, 0x7e, 0xe9, 0x72, 0x6d, 0x51, 0x63, 0x4b, 0x1c, 0xab,
-	0xaa, 0x41, 0x58, 0xf5, 0x26, 0x3c, 0xea, 0xd9, 0x9f, 0x77, 0x6e, 0x2e, 0x6d, 0xf4, 0x94, 0x85,
-	0x56, 0x50, 0xdb, 0x38, 0xf2, 0xec, 0x1d, 0xcf, 0xb2, 0xbd, 0xd4, 0x01, 0x13, 0x76, 0xe3, 0x77,
-	0xe9, 0x53, 0x17, 0x9e, 0xba, 0xee, 0xf4, 0xe2, 0x48, 0xbe, 0x66, 0x0f, 0x89, 0x0c, 0x5f, 0x02,
-	0x09, 0x2e, 0x15, 0xd4, 0x82, 0x6b, 0x50, 0x62, 0x7c, 0xe9, 0xe1, 0x1b, 0x22, 0x93, 0x01, 0x89,
-	0x45, 0x67, 0x7c, 0x02, 0x25, 0xe2, 0x05, 0xbb, 0xfd, 0x88, 0x75, 0x0e, 0x0e, 0xbe, 0x99, 0x6e,
-	0x9b, 0x2f, 0x4e, 0x98, 0xe8, 0x0d, 0x7b, 0xac, 0x60, 0xcb, 0x4b, 0xd4, 0x65, 0x6b, 0xad, 0xd0,
-	0x8e, 0xb7, 0xde, 0x24, 0xff, 0x17, 0x77, 0x8b, 0x91, 0x82, 0xed, 0xfc, 0x9f, 0xb9, 0x0b, 0x52,
-	0xfc, 0x27, 0x60, 0x57, 0x73, 0xd4, 0x95, 0xac, 0xa3, 0x77, 0xec, 0x62, 0x89, 0xce, 0xd3, 0xe1,
-	0x74, 0x92, 0x0c, 0x15, 0x9f, 0x9c, 0xb6, 0x5e, 0x74, 0xa1, 0xe8, 0x3d, 0xbb, 0x74, 0x40, 0x1b,
-	0x5f, 0x42, 0x38, 0x7d, 0x39, 0x1c, 0x3e, 0x2b, 0xbf, 0xf0, 0xb1, 0xe8, 0x07, 0x1b, 0x35, 0x58,
-	0xf3, 0x15, 0x38, 0xd8, 0x6f, 0xcd, 0xc9, 0x09, 0xe3, 0xdb, 0x0a, 0xa7, 0xaf, 0x86, 0xc7, 0xfd,
-	0x57, 0x43, 0x71, 0xdb, 0x9c, 0x4b, 0x59, 0xfe, 0x3d, 0xab, 0x31, 0xe9, 0x5e, 0x50, 0xc9, 0x56,
-	0x25, 0x68, 0xeb, 0xf4, 0xf0, 0x81, 0x94, 0x4a, 0x5d, 0x59, 0x48, 0xfd, 0xb5, 0xa5, 0x35, 0xa6,
-	0x43, 0x67, 0xb9, 0xbc, 0xf2, 0xc8, 0xec, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcc, 0xda, 0x4d,
-	0x8a, 0xb9, 0x02, 0x00, 0x00,
+	// 384 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0xaa, 0xd3, 0x40,
+	0x14, 0xc6, 0xc9, 0xbd, 0xf5, 0xa2, 0x13, 0xb9, 0xb6, 0xb1, 0x68, 0x77, 0x6a, 0x40, 0xa8, 0x88,
+	0x09, 0xb4, 0xae, 0x04, 0x37, 0x69, 0x5c, 0x54, 0xc4, 0x45, 0xd4, 0x8d, 0x08, 0xc3, 0x69, 0x3a,
+	0x49, 0x87, 0x66, 0xe6, 0x0c, 0x73, 0x26, 0x52, 0x5f, 0xc9, 0xb7, 0xf2, 0x4d, 0x24, 0x63, 0x6b,
+	0xff, 0x5c, 0xb2, 0xcc, 0x77, 0x7e, 0xbf, 0x93, 0xe4, 0xe3, 0xb0, 0x97, 0x4e, 0x90, 0xe3, 0xa6,
+	0x01, 0x57, 0xa1, 0x55, 0xa9, 0xd9, 0x20, 0x99, 0x0d, 0xda, 0x96, 0xd2, 0x12, 0x95, 0x42, 0x9d,
+	0x18, 0x8b, 0x0e, 0xa3, 0xc9, 0x19, 0x96, 0x1c, 0xb1, 0x78, 0xce, 0x6e, 0x33, 0x74, 0x1f, 0xf4,
+	0x4f, 0x69, 0x51, 0x2b, 0xa1, 0x5d, 0xf4, 0x82, 0x3d, 0x84, 0xd6, 0xa1, 0x37, 0xd6, 0xd2, 0x4e,
+	0x82, 0xe7, 0xc1, 0xf4, 0x41, 0x11, 0x1e, 0xb2, 0x5c, 0xda, 0xf8, 0x77, 0xc0, 0x1e, 0x7d, 0x05,
+	0xda, 0x9e, 0x6a, 0xcf, 0x58, 0x68, 0x05, 0xb5, 0x8d, 0x23, 0x6f, 0x5d, 0x79, 0x8b, 0xed, 0xa3,
+	0x5c, 0xda, 0x68, 0xca, 0x86, 0x7e, 0xe7, 0x29, 0x75, 0xed, 0xa9, 0xdb, 0x2e, 0x2f, 0x8e, 0xe4,
+	0x1b, 0xf6, 0x98, 0xc8, 0xf0, 0x15, 0x90, 0xe0, 0x52, 0x41, 0x2d, 0xb8, 0x06, 0x25, 0x26, 0x03,
+	0x0f, 0x0f, 0x89, 0x4c, 0x06, 0x24, 0x96, 0xdd, 0xe0, 0x33, 0x28, 0xf1, 0x71, 0x70, 0x3f, 0x18,
+	0x5e, 0x15, 0x4f, 0xe9, 0x97, 0x2e, 0x37, 0x16, 0x35, 0xb6, 0xc4, 0xb1, 0xaa, 0x1a, 0x84, 0x75,
+	0xf7, 0x8e, 0x78, 0xc9, 0x46, 0x9f, 0xb0, 0xce, 0xc1, 0xc1, 0x37, 0xd3, 0x85, 0x5f, 0x9c, 0x30,
+	0xd1, 0x5b, 0xf6, 0x44, 0xc1, 0x8e, 0x97, 0xa8, 0xcb, 0xd6, 0x5a, 0xa1, 0x1d, 0x6f, 0xfd, 0x90,
+	0xfc, 0xef, 0xde, 0x2b, 0xc6, 0x0a, 0x76, 0x8b, 0xff, 0xc3, 0x7f, 0x22, 0xc5, 0x7f, 0x02, 0x76,
+	0xb3, 0x40, 0x5d, 0xc9, 0x3a, 0x7a, 0xc7, 0xae, 0x57, 0xe8, 0x3c, 0x1d, 0xce, 0xa6, 0x49, 0x5f,
+	0xbf, 0xc9, 0x79, 0xb9, 0x45, 0x27, 0x45, 0xef, 0xd9, 0xc0, 0x01, 0x6d, 0x7d, 0x47, 0xe1, 0xec,
+	0x55, 0xbf, 0x7c, 0xd1, 0x71, 0xe1, 0xb5, 0xe8, 0x07, 0x1b, 0x37, 0x58, 0xf3, 0x35, 0x38, 0xd8,
+	0x7f, 0x35, 0x27, 0x27, 0x8c, 0x2f, 0x33, 0x9c, 0xbd, 0xee, 0x5f, 0x77, 0xa7, 0x86, 0x62, 0xd4,
+	0x5c, 0x46, 0x59, 0xfe, 0x3d, 0xab, 0x31, 0xe9, 0x9a, 0x54, 0xb2, 0x55, 0x09, 0xda, 0x3a, 0x3d,
+	0x3c, 0x20, 0xa5, 0x52, 0x57, 0x16, 0x52, 0x7f, 0x54, 0x69, 0x8d, 0x69, 0xdf, 0xf5, 0xad, 0x6e,
+	0x3c, 0x32, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x24, 0xcc, 0xc7, 0xb7, 0xa0, 0x02, 0x00, 0x00,
 }
diff --git a/go/test_platform/skylab_local_state/load.pb.go b/go/test_platform/skylab_local_state/load.pb.go
index a00ab76..544aeda 100644
--- a/go/test_platform/skylab_local_state/load.pb.go
+++ b/go/test_platform/skylab_local_state/load.pb.go
@@ -6,7 +6,6 @@
 import (
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	skylab_test_runner "go.chromium.org/chromiumos/infra/proto/go/test_platform/skylab_test_runner"
 	math "math"
 )
 
@@ -23,8 +22,7 @@
 
 // LoadRequest defines the input of `skylab_local_state load`.
 type LoadRequest struct {
-	Config     *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
-	ResultsDir string  `protobuf:"bytes,2,opt,name=results_dir,json=resultsDir,proto3" json:"results_dir,omitempty"` // Deprecated: Do not use.
+	Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
 	// DUT hostname.
 	DutName string `protobuf:"bytes,3,opt,name=dut_name,json=dutName,proto3" json:"dut_name,omitempty"`
 	// Swarming run ID. Used in the results directory name.
@@ -70,14 +68,6 @@
 	return nil
 }
 
-// Deprecated: Do not use.
-func (m *LoadRequest) GetResultsDir() string {
-	if m != nil {
-		return m.ResultsDir
-	}
-	return ""
-}
-
 func (m *LoadRequest) GetDutName() string {
 	if m != nil {
 		return m.DutName
@@ -112,16 +102,10 @@
 	// "cros-version": "reef-release/R77-12345.0.0".
 	ProvisionableLabels map[string]string `protobuf:"bytes,1,rep,name=provisionable_labels,json=provisionableLabels,proto3" json:"provisionable_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// The path to the newly created directory containing the host info file.
-	ResultsDir string `protobuf:"bytes,2,opt,name=results_dir,json=resultsDir,proto3" json:"results_dir,omitempty"`
-	// Paths to future results archives.
-	// These paths depend on the path of the local results directory, so they
-	// become well-defined the moment the local directory is created.
-	// `skylab_local_state load` does not perform the offload to the locations,
-	// the offload happens asynchronously after the task finishes.
-	AsyncResults         *skylab_test_runner.AsyncResults `protobuf:"bytes,3,opt,name=async_results,json=asyncResults,proto3" json:"async_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
-	XXX_unrecognized     []byte                           `json:"-"`
-	XXX_sizecache        int32                            `json:"-"`
+	ResultsDir           string   `protobuf:"bytes,2,opt,name=results_dir,json=resultsDir,proto3" json:"results_dir,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *LoadResponse) Reset()         { *m = LoadResponse{} }
@@ -163,13 +147,6 @@
 	return ""
 }
 
-func (m *LoadResponse) GetAsyncResults() *skylab_test_runner.AsyncResults {
-	if m != nil {
-		return m.AsyncResults
-	}
-	return nil
-}
-
 func init() {
 	proto.RegisterType((*LoadRequest)(nil), "test_platform.skylab_local_state.LoadRequest")
 	proto.RegisterType((*LoadResponse)(nil), "test_platform.skylab_local_state.LoadResponse")
@@ -181,31 +158,29 @@
 }
 
 var fileDescriptor_8da18a4489bdf85e = []byte{
-	// 411 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xdd, 0x6a, 0x14, 0x31,
-	0x18, 0x65, 0x76, 0xdd, 0xa9, 0xcd, 0x54, 0x90, 0x58, 0x31, 0xf6, 0xc6, 0xa5, 0xde, 0x2c, 0x88,
-	0x09, 0xac, 0x37, 0xe2, 0x95, 0xd6, 0x3f, 0x56, 0x16, 0x91, 0x78, 0xe7, 0x4d, 0xc8, 0x4e, 0xb2,
-	0x6b, 0x68, 0x26, 0xdf, 0x98, 0x9f, 0xc2, 0xfa, 0x84, 0x3e, 0x81, 0xcf, 0x23, 0x93, 0x59, 0x61,
-	0x4a, 0x5b, 0xe6, 0x6e, 0xce, 0xc9, 0x39, 0x67, 0x4e, 0xbe, 0x7c, 0xe8, 0x45, 0xd4, 0x21, 0x8a,
-	0xd6, 0xca, 0xb8, 0x05, 0xdf, 0xb0, 0x70, 0xb9, 0xb7, 0x72, 0x23, 0x2c, 0xd4, 0xd2, 0x8a, 0x10,
-	0x65, 0xd4, 0xcc, 0x82, 0x54, 0xb4, 0xf5, 0x10, 0x01, 0xcf, 0xaf, 0x89, 0xe9, 0x4d, 0xf1, 0xd9,
-	0xcb, 0xd1, 0xb8, 0x1a, 0x9a, 0x06, 0x5c, 0x1f, 0x78, 0x87, 0x3c, 0x93, 0x3e, 0x39, 0xa7, 0x3d,
-	0xf3, 0x3a, 0x24, 0x1b, 0x7b, 0xf9, 0xf9, 0xdf, 0x02, 0x55, 0x6b, 0x90, 0x8a, 0xeb, 0x5f, 0x49,
-	0x87, 0x88, 0xdf, 0xa2, 0xb2, 0x06, 0xb7, 0x35, 0x3b, 0x52, 0xcc, 0x8b, 0x45, 0xb5, 0x5c, 0xd0,
-	0xb1, 0x82, 0xf4, 0x7d, 0xd6, 0xf3, 0x83, 0x0f, 0x3f, 0x47, 0x55, 0xff, 0x87, 0x20, 0x94, 0xf1,
-	0x64, 0x32, 0x2f, 0x16, 0xc7, 0x17, 0x13, 0x52, 0x70, 0x74, 0xa0, 0x3f, 0x18, 0x8f, 0x9f, 0xa2,
-	0xfb, 0x2a, 0x45, 0xe1, 0x64, 0xa3, 0xc9, 0xb4, 0x53, 0xf0, 0x23, 0x95, 0xe2, 0x57, 0xd9, 0x68,
-	0xfc, 0x18, 0x95, 0x3e, 0x39, 0x61, 0x14, 0xb9, 0x97, 0x0f, 0x66, 0x3e, 0xb9, 0x95, 0xea, 0xe8,
-	0xce, 0x61, 0x14, 0x99, 0xf5, 0xb4, 0x4a, 0x71, 0xa5, 0xf0, 0x13, 0x74, 0x94, 0x0b, 0x1a, 0x45,
-	0xca, 0xcc, 0x97, 0x1d, 0x5c, 0xa9, 0xf3, 0x3f, 0x13, 0x74, 0xd2, 0x5f, 0x2c, 0xb4, 0xe0, 0x82,
-	0xc6, 0xbf, 0xd1, 0x69, 0xeb, 0xe1, 0xca, 0x04, 0x03, 0x4e, 0x6e, 0xac, 0x16, 0x56, 0x6e, 0xb4,
-	0x0d, 0xa4, 0x98, 0x4f, 0x17, 0xd5, 0xf2, 0xf3, 0xf8, 0x3d, 0x87, 0x69, 0xf4, 0xdb, 0x30, 0x6a,
-	0x9d, 0x93, 0x3e, 0xba, 0xe8, 0xf7, 0xfc, 0x51, 0x7b, 0xf3, 0x04, 0x3f, 0xbb, 0x65, 0x26, 0xd7,
-	0xe6, 0xf1, 0x1d, 0x3d, 0x90, 0x61, 0xef, 0x6a, 0x71, 0xe0, 0xf2, 0x50, 0xaa, 0x25, 0xbd, 0xbd,
-	0xd5, 0xe0, 0x35, 0xe9, 0xbb, 0xce, 0xc6, 0x7b, 0x17, 0x3f, 0x91, 0x03, 0x74, 0xf6, 0x09, 0x91,
-	0xbb, 0x6a, 0xe2, 0x87, 0x68, 0x7a, 0xa9, 0xf7, 0xf9, 0x91, 0x8f, 0x79, 0xf7, 0x89, 0x4f, 0xd1,
-	0xec, 0x4a, 0xda, 0xa4, 0x0f, 0xed, 0x7a, 0xf0, 0x66, 0xf2, 0xba, 0xb8, 0x58, 0xff, 0xf8, 0xb2,
-	0x03, 0x5a, 0xff, 0xf4, 0xd0, 0x98, 0xd4, 0x50, 0xf0, 0x3b, 0xf6, 0x1f, 0x40, 0x60, 0xc6, 0x6d,
-	0xbd, 0x64, 0x79, 0x9b, 0xd8, 0x0e, 0xd8, 0xd8, 0xb6, 0x6e, 0xca, 0x2c, 0x7d, 0xf5, 0x2f, 0x00,
-	0x00, 0xff, 0xff, 0x05, 0x70, 0x80, 0x5e, 0x27, 0x03, 0x00, 0x00,
+	// 381 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcd, 0x8a, 0xdb, 0x30,
+	0x10, 0xc7, 0x71, 0x9c, 0x78, 0xb3, 0x4a, 0x0b, 0x41, 0xdd, 0x52, 0x75, 0x2f, 0x35, 0x7b, 0x32,
+	0x94, 0xda, 0xb0, 0xbd, 0x94, 0x9e, 0x4a, 0x3f, 0x49, 0x08, 0xa5, 0xf8, 0xd8, 0x8b, 0x90, 0x2d,
+	0xc5, 0x15, 0x2b, 0x6b, 0x5c, 0x7d, 0x2c, 0xb8, 0x4f, 0xd0, 0x07, 0xeb, 0x83, 0x15, 0xcb, 0x2e,
+	0xa4, 0x84, 0xc5, 0x37, 0xcd, 0x7f, 0xfe, 0xf3, 0x9b, 0x19, 0x49, 0xe8, 0xa5, 0x13, 0xd6, 0xd1,
+	0x4e, 0x31, 0x77, 0x04, 0xd3, 0x16, 0xf6, 0xae, 0x57, 0xac, 0xa2, 0x0a, 0x6a, 0xa6, 0xa8, 0x75,
+	0xcc, 0x89, 0x42, 0x01, 0xe3, 0x79, 0x67, 0xc0, 0x01, 0x4e, 0xff, 0x33, 0xe7, 0xe7, 0xe6, 0xeb,
+	0x57, 0xb3, 0xb8, 0x1a, 0xda, 0x16, 0xf4, 0x08, 0xbc, 0xf9, 0x13, 0xa1, 0xcd, 0x01, 0x18, 0x2f,
+	0xc5, 0x4f, 0x2f, 0xac, 0xc3, 0xef, 0x50, 0x52, 0x83, 0x3e, 0xca, 0x86, 0x44, 0x69, 0x94, 0x6d,
+	0x6e, 0xb3, 0x7c, 0xae, 0x63, 0xfe, 0x21, 0xf8, 0xcb, 0xa9, 0x0e, 0x3f, 0x47, 0x6b, 0xee, 0x1d,
+	0xd5, 0xac, 0x15, 0x24, 0x4e, 0xa3, 0xec, 0xb2, 0xbc, 0xe0, 0xde, 0x7d, 0x65, 0xad, 0xc0, 0x4f,
+	0x51, 0x62, 0xbc, 0xa6, 0x92, 0x93, 0x65, 0x48, 0xac, 0x8c, 0xd7, 0x3b, 0x3e, 0xc8, 0x43, 0x85,
+	0xe4, 0x64, 0x35, 0xca, 0xdc, 0xbb, 0x1d, 0xc7, 0xcf, 0xd0, 0x45, 0xe8, 0x2d, 0x39, 0x49, 0x82,
+	0x9e, 0x0c, 0xe1, 0x8e, 0xef, 0x97, 0xeb, 0xc5, 0x36, 0x2e, 0x37, 0x46, 0x58, 0xaf, 0x9c, 0xa5,
+	0x5c, 0x9a, 0x9b, 0xdf, 0x0b, 0xf4, 0x68, 0x5c, 0xc3, 0x76, 0xa0, 0xad, 0xc0, 0xbf, 0xd0, 0x55,
+	0x67, 0xe0, 0x5e, 0x5a, 0x09, 0x9a, 0x55, 0x4a, 0x50, 0xc5, 0x2a, 0xa1, 0x2c, 0x89, 0xd2, 0x38,
+	0xdb, 0xdc, 0x7e, 0x99, 0xdf, 0xea, 0x94, 0x96, 0x7f, 0x3b, 0x45, 0x1d, 0x02, 0xe9, 0x93, 0x76,
+	0xa6, 0x2f, 0x9f, 0x74, 0xe7, 0x19, 0xfc, 0x02, 0x9d, 0xce, 0x46, 0x16, 0x61, 0x78, 0x34, 0x49,
+	0x1f, 0xa5, 0xb9, 0xfe, 0x8c, 0xc8, 0x43, 0x44, 0xbc, 0x45, 0xf1, 0x9d, 0xe8, 0xc3, 0xed, 0x5f,
+	0x96, 0xc3, 0x11, 0x5f, 0xa1, 0xd5, 0x3d, 0x53, 0x5e, 0x4c, 0xa0, 0x31, 0x78, 0xbb, 0x78, 0x13,
+	0xed, 0x97, 0xeb, 0x78, 0xbb, 0x2c, 0x1f, 0x33, 0xdb, 0xeb, 0x9a, 0x4e, 0xfc, 0xf7, 0x87, 0xef,
+	0xfb, 0x06, 0xf2, 0xfa, 0x87, 0x81, 0x56, 0xfa, 0x36, 0x07, 0xd3, 0x14, 0xff, 0x02, 0xb0, 0x85,
+	0xd4, 0x47, 0xc3, 0x8a, 0xf0, 0xf6, 0x45, 0x03, 0xc5, 0xdc, 0x67, 0xa9, 0x92, 0x60, 0x7d, 0xfd,
+	0x37, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x1a, 0x74, 0xe1, 0xa6, 0x02, 0x00, 0x00,
 }
diff --git a/go/test_platform/skylab_test_runner/config.pb.go b/go/test_platform/skylab_test_runner/config.pb.go
index b13d99f..435c996 100644
--- a/go/test_platform/skylab_test_runner/config.pb.go
+++ b/go/test_platform/skylab_test_runner/config.pb.go
@@ -163,9 +163,6 @@
 	// Autotest directory inside the drone container,
 	// e.g. "/usr/local/autotest".
 	AutotestDir string `protobuf:"bytes,1,opt,name=autotest_dir,json=autotestDir,proto3" json:"autotest_dir,omitempty"`
-	// Subdirectory, as relative path from the autotest results directory,
-	// to use for synchronous offloads
-	SynchOffloadSubdir string `protobuf:"bytes,2,opt,name=synch_offload_subdir,json=synchOffloadSubdir,proto3" json:"synch_offload_subdir,omitempty"`
 	// The name of the base lxc image used for Server Side Packaging (SSP).
 	//
 	// autoserv fetches the base image from a hard-coded path on Google
@@ -212,13 +209,6 @@
 	return ""
 }
 
-func (m *Config_Harness) GetSynchOffloadSubdir() string {
-	if m != nil {
-		return m.SynchOffloadSubdir
-	}
-	return ""
-}
-
 func (m *Config_Harness) GetSspBaseImageName() string {
 	if m != nil {
 		return m.SspBaseImageName
@@ -236,10 +226,6 @@
 // Output defines parameters around how the task will deliver output to
 // the callers, e.g. Google Storage bucket.
 type Config_Output struct {
-	// A Google Storage path to upload a specified subset of log-data
-	// synchronously.
-	// This synchronous upload mechanism is obviated by log_data_gs_dir.
-	GsRootDir string `protobuf:"bytes,1,opt,name=gs_root_dir,json=gsRootDir,proto3" json:"gs_root_dir,omitempty"`
 	// A Google Storage path prefix to upload all log-data to synchronously.
 	// Reflected in the test_platform.skylab_test_runner.Result.log_data
 	// returned by the task.
@@ -274,13 +260,6 @@
 
 var xxx_messageInfo_Config_Output proto.InternalMessageInfo
 
-func (m *Config_Output) GetGsRootDir() string {
-	if m != nil {
-		return m.GsRootDir
-	}
-	return ""
-}
-
 func (m *Config_Output) GetLogDataGsRoot() string {
 	if m != nil {
 		return m.LogDataGsRoot
@@ -349,40 +328,40 @@
 }
 
 var fileDescriptor_b2c5f9be4f684081 = []byte{
-	// 557 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0x41, 0x4f, 0x14, 0x31,
-	0x14, 0xc7, 0xb3, 0xac, 0x2c, 0xa1, 0x80, 0x59, 0xeb, 0xaa, 0x93, 0x3d, 0x18, 0xd4, 0x18, 0x49,
-	0x94, 0x19, 0xa2, 0xc6, 0x78, 0xf2, 0x80, 0x44, 0x84, 0x6c, 0x04, 0x67, 0xc3, 0xc5, 0x68, 0x9a,
-	0x76, 0xa6, 0x33, 0x3b, 0x38, 0xd3, 0xd7, 0xf4, 0xb5, 0x10, 0xbe, 0x82, 0xdf, 0xcb, 0x6f, 0xe5,
-	0xc1, 0x6c, 0x3b, 0xb3, 0x0a, 0x1e, 0xc0, 0x63, 0xdf, 0xff, 0xff, 0xff, 0xf5, 0xbd, 0x7d, 0xdd,
-	0x21, 0xdb, 0x56, 0xa2, 0x65, 0xba, 0xe6, 0xb6, 0x00, 0xd3, 0x24, 0xf8, 0xfd, 0xa2, 0xe6, 0x82,
-	0xf9, 0xa2, 0x71, 0x4a, 0x49, 0x93, 0x64, 0xa0, 0x8a, 0xaa, 0x8c, 0xb5, 0x01, 0x0b, 0x74, 0xf3,
-	0x92, 0x3d, 0xfe, 0xd7, 0x3e, 0x7e, 0x7a, 0x19, 0xa8, 0x67, 0x80, 0x7a, 0x06, 0xc6, 0x61, 0x92,
-	0x41, 0xd3, 0x80, 0x0a, 0xa0, 0xc7, 0xbf, 0x06, 0x64, 0xf0, 0xde, 0x93, 0xe9, 0x3b, 0xd2, 0xaf,
-	0xb9, 0x88, 0x7a, 0x9b, 0xbd, 0xad, 0xb5, 0x97, 0x2f, 0xe2, 0xeb, 0x6e, 0x88, 0x43, 0x2c, 0x9e,
-	0x70, 0x91, 0xce, 0x83, 0xf4, 0x90, 0xac, 0xcc, 0xb8, 0x51, 0x12, 0x31, 0x5a, 0xf2, 0x8c, 0x9d,
-	0x1b, 0x33, 0x3e, 0x86, 0x5c, 0xda, 0x01, 0xe8, 0x3e, 0x19, 0x80, 0xb3, 0xda, 0xd9, 0xa8, 0xef,
-	0x51, 0xc9, 0x8d, 0x51, 0x47, 0x3e, 0x96, 0xb6, 0x71, 0xfa, 0x8d, 0x50, 0x23, 0xd1, 0xd5, 0x96,
-	0x15, 0x35, 0x9c, 0x33, 0xed, 0x04, 0x3a, 0x11, 0xdd, 0xfa, 0x4f, 0xe8, 0xb1, 0x13, 0x53, 0x27,
-	0xd2, 0x61, 0x40, 0x7d, 0xa8, 0xe1, 0xfc, 0xd8, 0x83, 0xe8, 0x57, 0x32, 0xaa, 0xa1, 0x64, 0x39,
-	0xb7, 0x9c, 0x39, 0x5d, 0x03, 0xcf, 0x19, 0x5a, 0xa9, 0xa3, 0x65, 0x7f, 0xc1, 0xf3, 0x2b, 0x17,
-	0xfc, 0x59, 0x42, 0x3c, 0x81, 0x72, 0x8f, 0x5b, 0x7e, 0xe2, 0x33, 0x53, 0x2b, 0x75, 0x7a, 0xa7,
-	0xbe, 0x5a, 0x1a, 0xff, 0xe8, 0x91, 0xfe, 0x84, 0x0b, 0xfa, 0x84, 0x6c, 0xf0, 0xbc, 0xa9, 0x14,
-	0x43, 0x69, 0xce, 0xaa, 0x4c, 0xfa, 0x1d, 0xad, 0xa6, 0xeb, 0xbe, 0x38, 0x0d, 0x35, 0xfa, 0x9a,
-	0xdc, 0xcf, 0x0c, 0x20, 0xab, 0xd4, 0x99, 0x54, 0x16, 0xcc, 0xc5, 0xc2, 0xbd, 0xe4, 0xdd, 0xa3,
-	0xb9, 0x7a, 0xd0, 0x89, 0x5d, 0x6a, 0x8b, 0x0c, 0x7d, 0xca, 0x15, 0xb8, 0xf0, 0xf7, 0xbd, 0xff,
-	0xf6, 0xbc, 0x7e, 0x52, 0x60, 0xeb, 0x1c, 0xff, 0xec, 0x91, 0x95, 0x76, 0x4f, 0xf4, 0x11, 0x59,
-	0xe7, 0xce, 0x82, 0x9f, 0x2e, 0xaf, 0x4c, 0xdb, 0xcf, 0x5a, 0x57, 0xdb, 0xab, 0x0c, 0xdd, 0x21,
-	0x23, 0xbc, 0x50, 0xd9, 0x8c, 0x41, 0x51, 0x84, 0xdf, 0xc5, 0x89, 0xb9, 0x35, 0x34, 0x43, 0xbd,
-	0x76, 0x14, 0xa4, 0xa9, 0x57, 0xe8, 0x36, 0xb9, 0x8b, 0xa8, 0x99, 0xe0, 0x28, 0x59, 0xd5, 0xf0,
-	0x52, 0x32, 0xc5, 0x9b, 0xae, 0x9b, 0x21, 0xa2, 0xde, 0xe5, 0x28, 0x0f, 0xe6, 0xc2, 0x27, 0xde,
-	0x48, 0xfa, 0x86, 0x3c, 0xd0, 0x46, 0x9e, 0x82, 0x60, 0xb9, 0xe4, 0x79, 0x5d, 0x29, 0xc9, 0x50,
-	0x66, 0xa0, 0x72, 0xf4, 0xeb, 0xed, 0xa7, 0xf7, 0x82, 0xbc, 0xd7, 0xaa, 0xd3, 0x20, 0x8e, 0x3f,
-	0x93, 0x41, 0x78, 0x23, 0xf4, 0x21, 0x59, 0x2b, 0x91, 0x19, 0x80, 0xbf, 0x87, 0x58, 0x2d, 0x31,
-	0x05, 0xf0, 0x23, 0x3c, 0x23, 0xc3, 0xc5, 0x72, 0x5b, 0x63, 0xdb, 0xfe, 0x46, 0xbb, 0xab, 0x7d,
-	0xef, 0x1d, 0xbf, 0x25, 0x83, 0xf0, 0x42, 0x68, 0x44, 0x56, 0xb4, 0x81, 0x53, 0x99, 0xd9, 0x16,
-	0xd7, 0x1d, 0xe9, 0x88, 0x2c, 0x5b, 0xd0, 0x55, 0xd6, 0x12, 0xc2, 0x61, 0x77, 0xf2, 0xe5, 0xb0,
-	0x84, 0x38, 0x9b, 0x19, 0x68, 0x2a, 0xd7, 0xc4, 0x60, 0xca, 0xa4, 0x3b, 0x00, 0x26, 0x95, 0x2a,
-	0x0c, 0x4f, 0xfc, 0x1f, 0x35, 0x29, 0x21, 0xb9, 0xee, 0x13, 0x21, 0x06, 0xde, 0xfa, 0xea, 0x77,
-	0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0x24, 0x61, 0xd5, 0x4d, 0x04, 0x00, 0x00,
+	// 552 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xd1, 0x6e, 0xd3, 0x3e,
+	0x18, 0xc5, 0xd5, 0x76, 0xeb, 0xf6, 0xf7, 0xb6, 0xbf, 0x8a, 0x29, 0x10, 0xf5, 0x6a, 0x80, 0x10,
+	0x93, 0x60, 0x09, 0x02, 0x84, 0xb8, 0xe2, 0x62, 0x54, 0x8c, 0x55, 0x15, 0x4c, 0xa9, 0x76, 0x83,
+	0x40, 0x96, 0x9d, 0x38, 0xa9, 0x47, 0xe2, 0xcf, 0xf2, 0x67, 0x6f, 0xda, 0x2b, 0xf0, 0x32, 0x3c,
+	0x0f, 0x6f, 0x83, 0xea, 0x24, 0x43, 0x1b, 0x17, 0x1b, 0x97, 0xfe, 0xce, 0x39, 0x3f, 0xc7, 0x3e,
+	0x31, 0xd9, 0x77, 0x12, 0x1d, 0x33, 0x15, 0x77, 0x05, 0xd8, 0x3a, 0xc1, 0xef, 0x17, 0x15, 0x17,
+	0x2c, 0x0c, 0xad, 0xd7, 0x5a, 0xda, 0x24, 0x03, 0x5d, 0xa8, 0x32, 0x36, 0x16, 0x1c, 0xd0, 0xdd,
+	0x2b, 0xf6, 0xf8, 0x6f, 0xfb, 0xe4, 0xc9, 0x55, 0xa0, 0x59, 0x02, 0x9a, 0x25, 0x58, 0x8f, 0x49,
+	0x06, 0x75, 0x0d, 0xba, 0x01, 0x3d, 0xfa, 0x35, 0x24, 0xc3, 0xf7, 0x81, 0x4c, 0xdf, 0x91, 0x41,
+	0xc5, 0x45, 0xd4, 0xdb, 0xed, 0xed, 0x6d, 0xbd, 0x7c, 0x1e, 0xdf, 0xb4, 0x43, 0xdc, 0xc4, 0xe2,
+	0x39, 0x17, 0xe9, 0x2a, 0x48, 0x67, 0x64, 0x63, 0xc9, 0xad, 0x96, 0x88, 0x51, 0x3f, 0x30, 0x5e,
+	0xdc, 0x9a, 0xf1, 0xb1, 0xc9, 0xa5, 0x1d, 0x80, 0x1e, 0x92, 0x21, 0x78, 0x67, 0xbc, 0x8b, 0x06,
+	0x01, 0x95, 0xdc, 0x1a, 0xf5, 0x39, 0xc4, 0xd2, 0x36, 0x4e, 0xbf, 0x11, 0x6a, 0x25, 0xfa, 0xca,
+	0xb1, 0xa2, 0x82, 0x73, 0x66, 0xbc, 0x40, 0x2f, 0xa2, 0xb5, 0x7f, 0x84, 0x1e, 0x7b, 0xb1, 0xf0,
+	0x22, 0x1d, 0x35, 0xa8, 0x0f, 0x15, 0x9c, 0x1f, 0x07, 0x10, 0xfd, 0x4a, 0xc6, 0x15, 0x94, 0x2c,
+	0xe7, 0x8e, 0x33, 0x6f, 0x2a, 0xe0, 0x39, 0x43, 0x27, 0x4d, 0xb4, 0x1e, 0x36, 0x78, 0x76, 0x6d,
+	0x83, 0x3f, 0x25, 0xc4, 0x73, 0x28, 0xa7, 0xdc, 0xf1, 0x93, 0x90, 0x59, 0x38, 0x69, 0xd2, 0x3b,
+	0xd5, 0xf5, 0xd1, 0xe4, 0x47, 0x8f, 0x0c, 0xe6, 0x5c, 0xd0, 0xc7, 0x64, 0x87, 0xe7, 0xb5, 0xd2,
+	0x0c, 0xa5, 0x3d, 0x53, 0x99, 0x0c, 0x1d, 0xfd, 0x97, 0x6e, 0x87, 0xe1, 0xa2, 0x99, 0xd1, 0xd7,
+	0xe4, 0x7e, 0x66, 0x01, 0x99, 0xd2, 0x67, 0x52, 0x3b, 0xb0, 0x17, 0x97, 0xee, 0x7e, 0x70, 0x8f,
+	0x57, 0xea, 0x51, 0x27, 0x76, 0xa9, 0x3d, 0x32, 0x0a, 0x29, 0x5f, 0xe0, 0xa5, 0x7f, 0x10, 0xfc,
+	0xff, 0xaf, 0xe6, 0x27, 0x05, 0xb6, 0xce, 0xc9, 0xcf, 0x1e, 0xd9, 0x68, 0x7b, 0xa2, 0x0f, 0xc9,
+	0x36, 0xf7, 0x0e, 0xc2, 0xe9, 0x72, 0x65, 0xdb, 0xef, 0xd9, 0xea, 0x66, 0x53, 0x65, 0xe9, 0x3e,
+	0xb9, 0x8b, 0x68, 0x98, 0xe0, 0x28, 0x99, 0xaa, 0x79, 0x29, 0x99, 0xe6, 0x75, 0xc7, 0x1e, 0x21,
+	0x9a, 0x03, 0x8e, 0xf2, 0x68, 0x25, 0x7c, 0xe2, 0xb5, 0xa4, 0x6f, 0xc8, 0x03, 0x63, 0xe5, 0x29,
+	0x08, 0x96, 0x4b, 0x9e, 0x57, 0x4a, 0x4b, 0x86, 0x32, 0x03, 0x9d, 0x63, 0x28, 0x6b, 0x90, 0xde,
+	0x6b, 0xe4, 0x69, 0xab, 0x2e, 0x1a, 0x71, 0xb6, 0xb6, 0xd9, 0x1f, 0x0d, 0xd2, 0x31, 0x5e, 0xe8,
+	0x6c, 0xc9, 0xa0, 0x28, 0x9a, 0x0a, 0xbc, 0xc8, 0x95, 0x9d, 0x4c, 0xc9, 0xb0, 0xf9, 0x1b, 0xe8,
+	0x53, 0x32, 0xba, 0xac, 0xa9, 0x44, 0x66, 0x01, 0x5c, 0x7b, 0x2b, 0x3b, 0xed, 0xad, 0x1f, 0x62,
+	0x0a, 0xe0, 0x66, 0x6b, 0x9b, 0xbd, 0x51, 0x3f, 0xdd, 0x6a, 0x3d, 0xab, 0xb3, 0x4d, 0xde, 0x92,
+	0x61, 0x53, 0x3f, 0x8d, 0xc8, 0x86, 0xb1, 0x70, 0x2a, 0x33, 0xd7, 0x1e, 0xb8, 0x5b, 0xd2, 0x31,
+	0x59, 0x77, 0x60, 0x54, 0xd6, 0x42, 0x9b, 0xc5, 0xc1, 0xfc, 0xcb, 0xac, 0x84, 0x38, 0x5b, 0x5a,
+	0xa8, 0x95, 0xaf, 0x63, 0xb0, 0x65, 0xd2, 0x2d, 0x00, 0x13, 0xa5, 0x0b, 0xcb, 0x93, 0xf0, 0x0a,
+	0x93, 0x12, 0x92, 0x9b, 0xde, 0xbf, 0x18, 0x06, 0xeb, 0xab, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff,
+	0x57, 0x60, 0x65, 0x37, 0x2a, 0x04, 0x00, 0x00,
 }
diff --git a/go/test_platform/skylab_test_runner/result.pb.go b/go/test_platform/skylab_test_runner/result.pb.go
index b10cca0..4ce4cfb 100644
--- a/go/test_platform/skylab_test_runner/result.pb.go
+++ b/go/test_platform/skylab_test_runner/result.pb.go
@@ -50,7 +50,7 @@
 }
 
 func (Result_Autotest_TestCase_Verdict) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 0, 0, 0}
+	return fileDescriptor_e702ec909b65d32c, []int{0, 0, 0, 0}
 }
 
 // Verdict defines the final step status. Eventually may have different
@@ -80,58 +80,7 @@
 }
 
 func (Result_Prejob_Step_Verdict) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 1, 0, 0}
-}
-
-// AsyncResults contains references to locations where task results will
-// eventually be available.
-type AsyncResults struct {
-	// The URL at which a human will be able to view the task's logs.
-	LogsUrl string `protobuf:"bytes,1,opt,name=logs_url,json=logsUrl,proto3" json:"logs_url,omitempty"`
-	// The full google storage URL at which a task's full logs will be stored.
-	GsUrl                string   `protobuf:"bytes,2,opt,name=gs_url,json=gsUrl,proto3" json:"gs_url,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *AsyncResults) Reset()         { *m = AsyncResults{} }
-func (m *AsyncResults) String() string { return proto.CompactTextString(m) }
-func (*AsyncResults) ProtoMessage()    {}
-func (*AsyncResults) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{0}
-}
-
-func (m *AsyncResults) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AsyncResults.Unmarshal(m, b)
-}
-func (m *AsyncResults) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AsyncResults.Marshal(b, m, deterministic)
-}
-func (m *AsyncResults) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AsyncResults.Merge(m, src)
-}
-func (m *AsyncResults) XXX_Size() int {
-	return xxx_messageInfo_AsyncResults.Size(m)
-}
-func (m *AsyncResults) XXX_DiscardUnknown() {
-	xxx_messageInfo_AsyncResults.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AsyncResults proto.InternalMessageInfo
-
-func (m *AsyncResults) GetLogsUrl() string {
-	if m != nil {
-		return m.LogsUrl
-	}
-	return ""
-}
-
-func (m *AsyncResults) GetGsUrl() string {
-	if m != nil {
-		return m.GsUrl
-	}
-	return ""
+	return fileDescriptor_e702ec909b65d32c, []int{0, 1, 0, 0}
 }
 
 // Result defines the output format of skylab_test_runner.
@@ -141,11 +90,10 @@
 	//
 	// Types that are valid to be assigned to Harness:
 	//	*Result_AutotestResult
-	Harness      isResult_Harness    `protobuf_oneof:"harness"`
-	Prejob       *Result_Prejob      `protobuf:"bytes,2,opt,name=prejob,proto3" json:"prejob,omitempty"`
-	LogData      *common.TaskLogData `protobuf:"bytes,3,opt,name=log_data,json=logData,proto3" json:"log_data,omitempty"`
-	StateUpdate  *Result_StateUpdate `protobuf:"bytes,4,opt,name=state_update,json=stateUpdate,proto3" json:"state_update,omitempty"`
-	AsyncResults *AsyncResults       `protobuf:"bytes,5,opt,name=async_results,json=asyncResults,proto3" json:"async_results,omitempty"`
+	Harness     isResult_Harness    `protobuf_oneof:"harness"`
+	Prejob      *Result_Prejob      `protobuf:"bytes,2,opt,name=prejob,proto3" json:"prejob,omitempty"`
+	LogData     *common.TaskLogData `protobuf:"bytes,3,opt,name=log_data,json=logData,proto3" json:"log_data,omitempty"`
+	StateUpdate *Result_StateUpdate `protobuf:"bytes,4,opt,name=state_update,json=stateUpdate,proto3" json:"state_update,omitempty"`
 	// Set of test results. The string is a UUID used to identify each test, and
 	// comes from the client.
 	AutotestResults      map[string]*Result_Autotest `protobuf:"bytes,6,rep,name=autotest_results,json=autotestResults,proto3" json:"autotest_results,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
@@ -158,7 +106,7 @@
 func (m *Result) String() string { return proto.CompactTextString(m) }
 func (*Result) ProtoMessage()    {}
 func (*Result) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1}
+	return fileDescriptor_e702ec909b65d32c, []int{0}
 }
 
 func (m *Result) XXX_Unmarshal(b []byte) error {
@@ -224,13 +172,6 @@
 	return nil
 }
 
-func (m *Result) GetAsyncResults() *AsyncResults {
-	if m != nil {
-		return m.AsyncResults
-	}
-	return nil
-}
-
 func (m *Result) GetAutotestResults() map[string]*Result_Autotest {
 	if m != nil {
 		return m.AutotestResults
@@ -262,7 +203,7 @@
 func (m *Result_Autotest) String() string { return proto.CompactTextString(m) }
 func (*Result_Autotest) ProtoMessage()    {}
 func (*Result_Autotest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 0}
+	return fileDescriptor_e702ec909b65d32c, []int{0, 0}
 }
 
 func (m *Result_Autotest) XXX_Unmarshal(b []byte) error {
@@ -324,7 +265,7 @@
 func (m *Result_Autotest_TestCase) String() string { return proto.CompactTextString(m) }
 func (*Result_Autotest_TestCase) ProtoMessage()    {}
 func (*Result_Autotest_TestCase) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 0, 0}
+	return fileDescriptor_e702ec909b65d32c, []int{0, 0, 0}
 }
 
 func (m *Result_Autotest_TestCase) XXX_Unmarshal(b []byte) error {
@@ -379,7 +320,7 @@
 func (m *Result_Prejob) String() string { return proto.CompactTextString(m) }
 func (*Result_Prejob) ProtoMessage()    {}
 func (*Result_Prejob) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 1}
+	return fileDescriptor_e702ec909b65d32c, []int{0, 1}
 }
 
 func (m *Result_Prejob) XXX_Unmarshal(b []byte) error {
@@ -426,7 +367,7 @@
 func (m *Result_Prejob_Step) String() string { return proto.CompactTextString(m) }
 func (*Result_Prejob_Step) ProtoMessage()    {}
 func (*Result_Prejob_Step) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 1, 0}
+	return fileDescriptor_e702ec909b65d32c, []int{0, 1, 0}
 }
 
 func (m *Result_Prejob_Step) XXX_Unmarshal(b []byte) error {
@@ -482,7 +423,7 @@
 func (m *Result_StateUpdate) String() string { return proto.CompactTextString(m) }
 func (*Result_StateUpdate) ProtoMessage()    {}
 func (*Result_StateUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e702ec909b65d32c, []int{1, 2}
+	return fileDescriptor_e702ec909b65d32c, []int{0, 2}
 }
 
 func (m *Result_StateUpdate) XXX_Unmarshal(b []byte) error {
@@ -513,7 +454,6 @@
 func init() {
 	proto.RegisterEnum("test_platform.skylab_test_runner.Result_Autotest_TestCase_Verdict", Result_Autotest_TestCase_Verdict_name, Result_Autotest_TestCase_Verdict_value)
 	proto.RegisterEnum("test_platform.skylab_test_runner.Result_Prejob_Step_Verdict", Result_Prejob_Step_Verdict_name, Result_Prejob_Step_Verdict_value)
-	proto.RegisterType((*AsyncResults)(nil), "test_platform.skylab_test_runner.AsyncResults")
 	proto.RegisterType((*Result)(nil), "test_platform.skylab_test_runner.Result")
 	proto.RegisterMapType((map[string]*Result_Autotest)(nil), "test_platform.skylab_test_runner.Result.AutotestResultsEntry")
 	proto.RegisterType((*Result_Autotest)(nil), "test_platform.skylab_test_runner.Result.Autotest")
@@ -528,48 +468,45 @@
 }
 
 var fileDescriptor_e702ec909b65d32c = []byte{
-	// 679 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xed, 0x4a, 0x1b, 0x4d,
-	0x14, 0xc7, 0xcd, 0x8b, 0x79, 0x39, 0xc9, 0xa3, 0x79, 0x06, 0x95, 0x74, 0x0b, 0xad, 0xf5, 0x93,
-	0x14, 0xba, 0x4b, 0x53, 0xa1, 0x45, 0x2c, 0x34, 0x9a, 0xf8, 0x52, 0xc4, 0xca, 0xc4, 0x58, 0x5a,
-	0x84, 0x65, 0x92, 0x8c, 0x49, 0x9a, 0xdd, 0x9d, 0x65, 0x66, 0x56, 0xc8, 0x5d, 0xf4, 0x9e, 0xfa,
-	0xb9, 0x1f, 0x7a, 0x23, 0xbd, 0x86, 0xb2, 0x67, 0x67, 0x69, 0xb4, 0x82, 0x46, 0xfc, 0x36, 0x73,
-	0x5e, 0x7e, 0x67, 0xe6, 0xfc, 0xe7, 0xec, 0xc2, 0x2b, 0xcd, 0x95, 0x76, 0x43, 0x8f, 0xe9, 0x4b,
-	0x21, 0x7d, 0x47, 0x4d, 0xa6, 0x1e, 0xeb, 0xb9, 0x68, 0x94, 0x51, 0x10, 0x70, 0xe9, 0x48, 0xae,
-	0x22, 0x4f, 0xdb, 0xa1, 0x14, 0x5a, 0x90, 0xf5, 0x6b, 0xe1, 0xf6, 0xbf, 0xe1, 0xd6, 0xf3, 0xeb,
-	0xc0, 0xbe, 0xf0, 0x7d, 0x11, 0x38, 0x9a, 0xa9, 0x49, 0x82, 0xd8, 0xf8, 0x00, 0xd5, 0xa6, 0x9a,
-	0x06, 0x7d, 0x8a, 0x5c, 0x45, 0x9e, 0x40, 0xc9, 0x13, 0x43, 0xe5, 0x46, 0xd2, 0xab, 0x67, 0xd6,
-	0x33, 0x9b, 0x65, 0x5a, 0x8c, 0xf7, 0x5d, 0xe9, 0x91, 0x55, 0x28, 0x18, 0x47, 0x16, 0x1d, 0x8b,
-	0x68, 0xde, 0xf8, 0x59, 0x81, 0x42, 0x92, 0x4d, 0x2e, 0x60, 0x99, 0x45, 0x5a, 0x24, 0x07, 0x40,
-	0x13, 0x32, 0x2a, 0x8d, 0xd7, 0xf6, 0x5d, 0x27, 0xb5, 0x13, 0x84, 0xdd, 0x34, 0xf9, 0x87, 0x0b,
-	0x74, 0x29, 0x65, 0x19, 0xfa, 0x01, 0x14, 0x42, 0xc9, 0xbf, 0x89, 0x1e, 0xd6, 0xaf, 0x34, 0x9c,
-	0x7b, 0x43, 0x4f, 0x31, 0x8d, 0x9a, 0x74, 0xb2, 0x83, 0x77, 0x74, 0x07, 0x4c, 0xb3, 0x7a, 0x0e,
-	0x51, 0x2f, 0x6e, 0xa0, 0x92, 0x3e, 0xd9, 0x67, 0x4c, 0x4d, 0x8e, 0xc5, 0xb0, 0xc5, 0x34, 0xc3,
-	0x36, 0xc4, 0x0b, 0xf2, 0x19, 0xaa, 0x4a, 0x33, 0xcd, 0xdd, 0x28, 0x1c, 0x30, 0xcd, 0xeb, 0x79,
-	0x24, 0x6c, 0xdd, 0xfb, 0x30, 0x9d, 0x38, 0xb9, 0x8b, 0xb9, 0xb4, 0xa2, 0xfe, 0x6e, 0x48, 0x07,
-	0xfe, 0x63, 0xb1, 0x14, 0xa6, 0x75, 0xaa, 0xbe, 0x88, 0x64, 0xfb, 0x6e, 0xf2, 0xac, 0x82, 0xb4,
-	0xca, 0x66, 0xf5, 0x1c, 0x41, 0xed, 0x86, 0x24, 0xaa, 0x5e, 0x58, 0xcf, 0x6d, 0x56, 0x1a, 0xef,
-	0xe7, 0xd6, 0xc4, 0x30, 0xdb, 0x81, 0x96, 0x53, 0xba, 0x7c, 0x5d, 0x1d, 0x65, 0xfd, 0xca, 0x41,
-	0x29, 0x8d, 0x24, 0x5f, 0x00, 0x10, 0xd4, 0x67, 0x8a, 0xab, 0x7a, 0x06, 0x0b, 0x6e, 0xcf, 0x5d,
-	0xd0, 0x3e, 0xe3, 0x4a, 0xef, 0x31, 0xc5, 0x69, 0x59, 0x9b, 0x95, 0x22, 0xcf, 0x00, 0xc6, 0x41,
-	0x5f, 0xf8, 0xa1, 0xc7, 0x35, 0xc7, 0xa7, 0x50, 0xa2, 0x33, 0x16, 0xf2, 0x16, 0xea, 0x71, 0x03,
-	0x46, 0x52, 0x04, 0x22, 0x52, 0x6e, 0xaa, 0x34, 0x3e, 0xdc, 0x1c, 0x3e, 0xdc, 0xd5, 0x19, 0xbf,
-	0x91, 0xb7, 0x2b, 0x3d, 0xeb, 0x7b, 0x16, 0x4a, 0x69, 0x41, 0x42, 0x20, 0x1f, 0x30, 0x9f, 0x9b,
-	0x19, 0xc0, 0x35, 0xb9, 0x80, 0xe2, 0x15, 0x97, 0x83, 0x71, 0x5f, 0x63, 0xd9, 0xa5, 0xc6, 0xee,
-	0xc3, 0x6f, 0x64, 0x9f, 0x27, 0x24, 0x9a, 0x22, 0xc9, 0x16, 0xac, 0x8d, 0x22, 0x9f, 0x05, 0xae,
-	0xe4, 0x6c, 0xc0, 0x7a, 0x1e, 0x77, 0x55, 0xe4, 0xfb, 0x4c, 0x4e, 0xcd, 0xa9, 0x57, 0xd0, 0x4b,
-	0x8d, 0xb3, 0x93, 0xf8, 0x36, 0x2e, 0xa0, 0x68, 0x48, 0x64, 0x15, 0xfe, 0x3f, 0x6f, 0xd3, 0xd6,
-	0xd1, 0xde, 0x99, 0xdb, 0x3d, 0x69, 0xb5, 0xf7, 0x8f, 0x4e, 0xda, 0xad, 0xda, 0x02, 0xa9, 0x41,
-	0x35, 0x35, 0x9f, 0x36, 0x3b, 0x9d, 0x5a, 0x66, 0xd6, 0xb2, 0xdf, 0x3c, 0x3a, 0xae, 0x65, 0xc9,
-	0x1a, 0x90, 0xd4, 0x72, 0xf2, 0xc9, 0x35, 0xcb, 0x5a, 0xce, 0xfa, 0x91, 0x85, 0x42, 0x32, 0x3c,
-	0xe4, 0x10, 0xf2, 0x4a, 0xf3, 0xd0, 0x68, 0xb9, 0x35, 0xe7, 0xec, 0xd9, 0x1d, 0xcd, 0x43, 0x8a,
-	0x04, 0xeb, 0x77, 0x06, 0xf2, 0xf1, 0xf6, 0xd6, 0x1e, 0x9f, 0xdf, 0xec, 0xf1, 0xce, 0x43, 0x2a,
-	0x3d, 0x56, 0x77, 0x5b, 0x8f, 0xd1, 0x5d, 0xeb, 0x25, 0x54, 0x66, 0x86, 0x9e, 0x3c, 0x85, 0xf2,
-	0x20, 0xd2, 0x2e, 0x8e, 0xbe, 0xb9, 0x7b, 0x69, 0x10, 0x69, 0x0c, 0xb1, 0x22, 0x58, 0xb9, 0x6d,
-	0xdc, 0x48, 0x0d, 0x72, 0x13, 0x3e, 0x35, 0xe1, 0xf1, 0x92, 0x1c, 0xc0, 0xe2, 0x15, 0xf3, 0x22,
-	0x6e, 0xbe, 0x86, 0xf3, 0x7f, 0x62, 0x69, 0x92, 0xbf, 0x9d, 0x7d, 0x97, 0xd9, 0x2d, 0x43, 0x71,
-	0xc4, 0x64, 0xc0, 0x95, 0xda, 0x3d, 0xfe, 0xfa, 0x71, 0x28, 0xec, 0x78, 0x3e, 0xfc, 0x71, 0xe4,
-	0xdb, 0x42, 0x0e, 0x9d, 0x74, 0x23, 0x94, 0x33, 0x0e, 0x2e, 0x25, 0x73, 0xf0, 0xdf, 0xe1, 0x0c,
-	0x85, 0x73, 0xd7, 0xff, 0xaa, 0x57, 0xc0, 0xd0, 0x37, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc,
-	0x2a, 0xde, 0x5c, 0xda, 0x06, 0x00, 0x00,
+	// 637 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xfd, 0x4a, 0x1b, 0x41,
+	0x10, 0xc0, 0xcd, 0x87, 0x97, 0xcb, 0xc4, 0xea, 0x75, 0x51, 0x39, 0xae, 0xd0, 0x5a, 0xff, 0x92,
+	0x42, 0xef, 0xa8, 0x15, 0x5a, 0xc4, 0xfe, 0xa1, 0x26, 0x7e, 0x21, 0x56, 0x36, 0x6a, 0x69, 0x11,
+	0x8e, 0x4d, 0x6e, 0x4d, 0xd2, 0xdc, 0xdd, 0x1e, 0xfb, 0x21, 0xe4, 0x21, 0x0a, 0x7d, 0xa7, 0x3e,
+	0x41, 0x5f, 0xa4, 0xcf, 0x50, 0xb2, 0xb7, 0x47, 0xa3, 0x15, 0x34, 0xe2, 0x7f, 0xb3, 0xf3, 0xf1,
+	0x9b, 0xdb, 0x99, 0x9d, 0x39, 0x78, 0x2b, 0xa9, 0x90, 0x61, 0x16, 0x13, 0x79, 0xc5, 0x78, 0x12,
+	0x88, 0xe1, 0x28, 0x26, 0x9d, 0x50, 0x2b, 0xb9, 0x4a, 0x53, 0xca, 0x03, 0x4e, 0x85, 0x8a, 0xa5,
+	0x9f, 0x71, 0x26, 0x19, 0x5a, 0xb9, 0xe1, 0xee, 0xff, 0xef, 0xee, 0xbd, 0xba, 0x09, 0xec, 0xb2,
+	0x24, 0x61, 0x69, 0x20, 0x89, 0x18, 0xe6, 0x88, 0xd5, 0x1f, 0x0d, 0xb0, 0xb0, 0x66, 0xa2, 0x4b,
+	0x58, 0x20, 0x4a, 0xb2, 0x3c, 0x5c, 0xab, 0xdc, 0xd2, 0x4a, 0x69, 0xad, 0xb1, 0xfe, 0xce, 0xbf,
+	0x2f, 0x8f, 0x9f, 0x23, 0xfc, 0x6d, 0x13, 0x7f, 0x30, 0x83, 0xe7, 0x0b, 0x96, 0xa1, 0xef, 0x83,
+	0x95, 0x71, 0xfa, 0x9d, 0x75, 0xdc, 0xb2, 0x86, 0x06, 0x0f, 0x86, 0x9e, 0xea, 0x30, 0x6c, 0xc2,
+	0xd1, 0x16, 0xd8, 0x31, 0xeb, 0x85, 0x11, 0x91, 0xc4, 0xad, 0x68, 0xd4, 0xeb, 0x5b, 0xa8, 0xfc,
+	0x96, 0xfe, 0x19, 0x11, 0xc3, 0x63, 0xd6, 0x6b, 0x12, 0x49, 0x70, 0x2d, 0xce, 0x05, 0xf4, 0x05,
+	0xe6, 0x84, 0x24, 0x92, 0x86, 0x2a, 0x8b, 0x88, 0xa4, 0x6e, 0x55, 0x13, 0x36, 0x1e, 0xfc, 0x31,
+	0xed, 0x71, 0xf0, 0xb9, 0x8e, 0xc5, 0x0d, 0xf1, 0xef, 0x80, 0xfa, 0xe0, 0xdc, 0xaa, 0x9e, 0x70,
+	0xad, 0x95, 0xca, 0x5a, 0x63, 0xfd, 0xd3, 0xd4, 0xe5, 0xcb, 0x8f, 0xa2, 0x95, 0x4a, 0x3e, 0xc2,
+	0x0b, 0x37, 0x0b, 0x29, 0xbc, 0xdf, 0x15, 0xb0, 0x0b, 0x4f, 0xf4, 0x15, 0x40, 0x83, 0xba, 0x44,
+	0x50, 0xe1, 0x96, 0x74, 0xc2, 0xcd, 0xa9, 0x13, 0xfa, 0x67, 0x54, 0xc8, 0x5d, 0x22, 0x28, 0xae,
+	0x4b, 0x23, 0x09, 0xf4, 0x12, 0x60, 0x90, 0x76, 0x59, 0x92, 0xc5, 0x54, 0x52, 0xdd, 0x35, 0x1b,
+	0x4f, 0x68, 0xd0, 0x07, 0x70, 0xc5, 0x28, 0xed, 0xf6, 0x39, 0x4b, 0x99, 0x12, 0x61, 0xd1, 0x94,
+	0x50, 0xf1, 0x58, 0x37, 0xa6, 0x8e, 0x97, 0x26, 0xec, 0xa6, 0x13, 0xe7, 0x3c, 0xf6, 0x7e, 0x96,
+	0xc1, 0x2e, 0x12, 0x22, 0x04, 0xd5, 0x94, 0x24, 0x54, 0x3f, 0xb5, 0x3a, 0xd6, 0x32, 0xba, 0x84,
+	0xda, 0x35, 0xe5, 0xd1, 0xa0, 0x2b, 0x75, 0xda, 0xf9, 0xf5, 0x9d, 0xc7, 0xdf, 0xc8, 0xbf, 0xc8,
+	0x49, 0xb8, 0x40, 0xa2, 0x0d, 0x58, 0xee, 0xab, 0x84, 0xa4, 0x21, 0xa7, 0x24, 0x22, 0x9d, 0x98,
+	0x86, 0x42, 0x25, 0x09, 0xe1, 0x23, 0xf3, 0xd5, 0x8b, 0xda, 0x8a, 0x8d, 0xb1, 0x9d, 0xdb, 0x56,
+	0x2f, 0xa1, 0x66, 0x48, 0x68, 0x09, 0x9e, 0x5f, 0xb4, 0x70, 0xf3, 0x70, 0xf7, 0x2c, 0x3c, 0x3f,
+	0x69, 0xb6, 0xf6, 0x0e, 0x4f, 0x5a, 0x4d, 0x67, 0x06, 0x39, 0x30, 0x57, 0xa8, 0x4f, 0xb7, 0xdb,
+	0x6d, 0xa7, 0x34, 0xa9, 0xd9, 0xdb, 0x3e, 0x3c, 0x76, 0xca, 0x68, 0x19, 0x50, 0xa1, 0x39, 0xf9,
+	0x1c, 0x1a, 0xd1, 0xa9, 0x78, 0xbf, 0xca, 0x60, 0xe5, 0xef, 0x1c, 0x1d, 0x40, 0x55, 0x48, 0x9a,
+	0x99, 0x5e, 0x6e, 0x4c, 0x39, 0x26, 0x7e, 0x5b, 0xd2, 0x0c, 0x6b, 0x82, 0xf7, 0xa7, 0x04, 0xd5,
+	0xf1, 0xf1, 0xce, 0x1a, 0x5f, 0xdc, 0xae, 0xf1, 0xd6, 0x63, 0x32, 0x3d, 0x55, 0x75, 0x9b, 0x4f,
+	0x51, 0x5d, 0xef, 0x0d, 0x34, 0x26, 0xe6, 0x13, 0xbd, 0x80, 0x7a, 0xa4, 0x64, 0xa8, 0xa7, 0xd4,
+	0xdc, 0xdd, 0x8e, 0x94, 0xd4, 0x2e, 0x9e, 0x82, 0xc5, 0xbb, 0xc6, 0x0d, 0x39, 0x50, 0x19, 0xd2,
+	0x91, 0x71, 0x1f, 0x8b, 0x68, 0x1f, 0x66, 0xaf, 0x49, 0xac, 0xa8, 0x59, 0x5c, 0xd3, 0x6f, 0x43,
+	0x9c, 0xc7, 0x6f, 0x96, 0x3f, 0x96, 0x76, 0xea, 0x50, 0xeb, 0x13, 0x9e, 0x52, 0x21, 0x8e, 0xaa,
+	0xf6, 0xac, 0x63, 0xe1, 0x67, 0x64, 0x3c, 0x24, 0xc5, 0xca, 0xd8, 0x39, 0xfe, 0x76, 0xd4, 0x63,
+	0xfe, 0x78, 0x68, 0x92, 0x81, 0x4a, 0x7c, 0xc6, 0x7b, 0x41, 0x71, 0x60, 0x22, 0x18, 0xa4, 0x57,
+	0x9c, 0x04, 0x7a, 0x73, 0x07, 0x3d, 0x16, 0xdc, 0xf7, 0xb7, 0xe8, 0x58, 0xda, 0xf5, 0xfd, 0xdf,
+	0x00, 0x00, 0x00, 0xff, 0xff, 0x7d, 0xdc, 0x75, 0x79, 0x58, 0x06, 0x00, 0x00,
 }
diff --git a/src/test_platform/phosphorus/common.proto b/src/test_platform/phosphorus/common.proto
index e42b47d..e8ca8b3 100644
--- a/src/test_platform/phosphorus/common.proto
+++ b/src/test_platform/phosphorus/common.proto
@@ -17,10 +17,6 @@
 
 // TaskEnvironment defines task-specific parameters used by phosphorus.
 message TaskEnvironment {
-  // Path to the client offload directory relative to the results directory
-  //  Intended for log-data which is needed synchronously with high reliability
-  string synchronous_offload_dir = 1;
-
   // Absolute path to the results directory for a given run. Include results of
   //  both tests and non-test tasks like provision
   string results_dir = 2;
@@ -37,6 +33,9 @@
   //
   // See go/ctp-ssp for an overview of SSP.
   string ssp_base_image_name = 4;
+
+  reserved 1;
+  reserved "synchronous_offload_dir";
 }
 
 // Knobs specific to the step that uploads log-data to Google Storage.
diff --git a/src/test_platform/skylab_local_state/load.proto b/src/test_platform/skylab_local_state/load.proto
index 5aba9bb..a875d1b 100644
--- a/src/test_platform/skylab_local_state/load.proto
+++ b/src/test_platform/skylab_local_state/load.proto
@@ -9,14 +9,11 @@
 option go_package = "go.chromium.org/chromiumos/infra/proto/go/test_platform/skylab_local_state";
 
 import "test_platform/skylab_local_state/common.proto";
-import "test_platform/skylab_test_runner/result.proto";
 
 // LoadRequest defines the input of `skylab_local_state load`.
 message LoadRequest {
   Config config = 1;
 
-  string results_dir = 2 [deprecated=true];
-
   // DUT hostname.
   string dut_name = 3;
 
@@ -28,6 +25,9 @@
 
   // Test ID, used in the results directory name
   string test_id = 6;
+
+  reserved 2;
+  reserved "results_dir";
 }
 
 // LoadResponse defines the output of `skylab_local_state load`.
@@ -39,10 +39,6 @@
   // The path to the newly created directory containing the host info file.
   string results_dir = 2;
 
-  // Paths to future results archives.
-  // These paths depend on the path of the local results directory, so they
-  // become well-defined the moment the local directory is created.
-  // `skylab_local_state load` does not perform the offload to the locations,
-  // the offload happens asynchronously after the task finishes.
-  test_platform.skylab_test_runner.AsyncResults async_results = 3;
+  reserved 3;
+  reserved "async_results";
 }
diff --git a/src/test_platform/skylab_test_runner/config.proto b/src/test_platform/skylab_test_runner/config.proto
index 3b01512..0497c1a 100644
--- a/src/test_platform/skylab_test_runner/config.proto
+++ b/src/test_platform/skylab_test_runner/config.proto
@@ -32,10 +32,6 @@
     // e.g. "/usr/local/autotest".
     string autotest_dir = 1;
 
-    // Subdirectory, as relative path from the autotest results directory,
-    // to use for synchronous offloads
-    string synch_offload_subdir = 2;
-
     // The name of the base lxc image used for Server Side Packaging (SSP).
     //
     // autoserv fetches the base image from a hard-coded path on Google
@@ -46,20 +42,21 @@
 
     // The maximum duration for prejobs (e.g. provisioning).
     int64 prejob_deadline_seconds = 4;
+
+    reserved 2;
+    reserved "synch_offload_subdir";
   }
 
   // Output defines parameters around how the task will deliver output to
   // the callers, e.g. Google Storage bucket.
   message Output {
-    // A Google Storage path to upload a specified subset of log-data
-    // synchronously.
-    // This synchronous upload mechanism is obviated by log_data_gs_dir.
-    string gs_root_dir = 1;
-
     // A Google Storage path prefix to upload all log-data to synchronously.
     // Reflected in the test_platform.skylab_test_runner.Result.log_data
     // returned by the task.
     string log_data_gs_root = 2;
+
+    reserved 1;
+    reserved "gs_root_dir";
   }
 
   // PubSub defines the configuration parameters for PubSub topic.
diff --git a/src/test_platform/skylab_test_runner/result.proto b/src/test_platform/skylab_test_runner/result.proto
index ef7dba8..775a224 100644
--- a/src/test_platform/skylab_test_runner/result.proto
+++ b/src/test_platform/skylab_test_runner/result.proto
@@ -10,16 +10,6 @@
 
 option go_package = "go.chromium.org/chromiumos/infra/proto/go/test_platform/skylab_test_runner";
 
-// AsyncResults contains references to locations where task results will
-// eventually be available.
-message AsyncResults {
-  // The URL at which a human will be able to view the task's logs.
-  string logs_url = 1;
-
-  // The full google storage URL at which a task's full logs will be stored.
-  string gs_url = 2;
-}
-
 // Result defines the output format of skylab_test_runner.
 // It contains a summary of test results from a single Swarming task run.
 message Result {
@@ -104,10 +94,11 @@
 
   StateUpdate state_update = 4;
 
-  AsyncResults async_results = 5;
-
   // Set of test results. The string is a UUID used to identify each test, and
   // comes from the client.
   map<string, Autotest> autotest_results = 6;
+
+  reserved 5;
+  reserved "async_results";
 }
 
