bot_scaling: Add enum to support bot scaling mode.

Add flexibility to support scaling modes for bot policies.  This will
allow Robocrop the flexibility to scale up small groups immediately
while step scaling for the larger bot groups.  Smaller groups are
susceptible to a number of smaller tasks, that may not trigger a step
up, or may be short lived and will then require a larger ramp up period
for shorter executions. The intent is to allow these small bot groups to
respond to demand without the need for stepping up.

Bug: chromium:1027593
Change-Id: I20b3885ec4b3f203017aab7be6da3c6c70894ea4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2156934
Reviewed-by: Dhanya Ganesh <dhanyaganesh@chromium.org>
Reviewed-by: Sean Abraham <seanabraham@chromium.org>
Commit-Queue: Mike Nichols <mikenichols@chromium.org>
Tested-by: Mike Nichols <mikenichols@chromium.org>
diff --git a/go/chromiumos/bot_scaling.pb.go b/go/chromiumos/bot_scaling.pb.go
index b902d5b..6a5c58c 100644
--- a/go/chromiumos/bot_scaling.pb.go
+++ b/go/chromiumos/bot_scaling.pb.go
@@ -51,6 +51,38 @@
 	return fileDescriptor_dbe70eabfd64e7ef, []int{2, 0}
 }
 
+// Specifies mode for a bot scaling
+type BotPolicy_BotScalingMode int32
+
+const (
+	BotPolicy_UNKNOWN_SCALING_MODE BotPolicy_BotScalingMode = 0
+	// Scale up or down bots by the step size associated with bot group..
+	BotPolicy_STEPPED BotPolicy_BotScalingMode = 1
+	// Scale up or down bots by the demand on the bot group.
+	// For use on smaller bot groups that are susceptible to smaller increases.
+	BotPolicy_DEMAND BotPolicy_BotScalingMode = 2
+)
+
+var BotPolicy_BotScalingMode_name = map[int32]string{
+	0: "UNKNOWN_SCALING_MODE",
+	1: "STEPPED",
+	2: "DEMAND",
+}
+
+var BotPolicy_BotScalingMode_value = map[string]int32{
+	"UNKNOWN_SCALING_MODE": 0,
+	"STEPPED":              1,
+	"DEMAND":               2,
+}
+
+func (x BotPolicy_BotScalingMode) String() string {
+	return proto.EnumName(BotPolicy_BotScalingMode_name, int32(x))
+}
+
+func (BotPolicy_BotScalingMode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_dbe70eabfd64e7ef, []int{2, 1}
+}
+
 // Specifies if there has been a change since the last iteration.
 type ScalingAction_Actionable int32
 
@@ -204,10 +236,12 @@
 	// Set whether a bot group should be configured or only monitored.
 	PolicyMode BotPolicy_Mode `protobuf:"varint,6,opt,name=policy_mode,json=policyMode,proto3,enum=chromiumos.BotPolicy_Mode" json:"policy_mode,omitempty"`
 	// Number of hours to lookback for Swarming stats.
-	LookbackHours        int32    `protobuf:"zigzag32,7,opt,name=lookback_hours,json=lookbackHours,proto3" json:"lookback_hours,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	LookbackHours int32 `protobuf:"zigzag32,7,opt,name=lookback_hours,json=lookbackHours,proto3" json:"lookback_hours,omitempty"`
+	// Set the scaling approach for the bot group being monitored.
+	ScalingMode          BotPolicy_BotScalingMode `protobuf:"varint,8,opt,name=scaling_mode,json=scalingMode,proto3,enum=chromiumos.BotPolicy_BotScalingMode" json:"scaling_mode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
 }
 
 func (m *BotPolicy) Reset()         { *m = BotPolicy{} }
@@ -284,6 +318,13 @@
 	return 0
 }
 
+func (m *BotPolicy) GetScalingMode() BotPolicy_BotScalingMode {
+	if m != nil {
+		return m.ScalingMode
+	}
+	return BotPolicy_UNKNOWN_SCALING_MODE
+}
+
 // Scaling restriction specifies the limits on how the group can be
 // expanded or reduced.
 type BotPolicy_ScalingRestriction struct {
@@ -645,6 +686,7 @@
 
 func init() {
 	proto.RegisterEnum("chromiumos.BotPolicy_Mode", BotPolicy_Mode_name, BotPolicy_Mode_value)
+	proto.RegisterEnum("chromiumos.BotPolicy_BotScalingMode", BotPolicy_BotScalingMode_name, BotPolicy_BotScalingMode_value)
 	proto.RegisterEnum("chromiumos.ScalingAction_Actionable", ScalingAction_Actionable_name, ScalingAction_Actionable_value)
 	proto.RegisterType((*BotType)(nil), "chromiumos.BotType")
 	proto.RegisterType((*SwarmingDimension)(nil), "chromiumos.SwarmingDimension")
@@ -660,53 +702,57 @@
 func init() { proto.RegisterFile("chromiumos/bot_scaling.proto", fileDescriptor_dbe70eabfd64e7ef) }
 
 var fileDescriptor_dbe70eabfd64e7ef = []byte{
-	// 767 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x5d, 0x6f, 0xe3, 0x44,
-	0x14, 0x5d, 0x27, 0x4d, 0x42, 0x6e, 0x9a, 0x34, 0x9d, 0x02, 0xf2, 0x06, 0x10, 0xc1, 0x02, 0xe1,
-	0x27, 0x47, 0x0a, 0x08, 0x90, 0x78, 0xda, 0x7c, 0x74, 0x1b, 0xa1, 0x3a, 0xd1, 0xa4, 0x11, 0x2c,
-	0x3c, 0x58, 0x76, 0x32, 0x71, 0x47, 0x6b, 0x7b, 0xcc, 0x8c, 0xc3, 0xd2, 0xfd, 0x03, 0xfc, 0x1a,
-	0x9e, 0xf9, 0x7b, 0x68, 0x3e, 0xd2, 0x24, 0x4d, 0xfa, 0x80, 0xc4, 0xdb, 0xdc, 0x33, 0xf7, 0x9e,
-	0xb9, 0x77, 0xce, 0x19, 0x1b, 0x3e, 0x5d, 0xde, 0x73, 0x96, 0xd2, 0x4d, 0xca, 0x44, 0x2f, 0x62,
-	0x45, 0x20, 0x96, 0x61, 0x42, 0xb3, 0xd8, 0xcb, 0x39, 0x2b, 0x18, 0x82, 0xdd, 0xae, 0x73, 0x03,
-	0xb5, 0x01, 0x2b, 0xee, 0x1e, 0x72, 0x82, 0x5e, 0xc2, 0x07, 0x2a, 0x97, 0xbe, 0x27, 0xb6, 0xd5,
-	0xb5, 0xdc, 0x3a, 0xae, 0x45, 0xac, 0x98, 0xd3, 0xf7, 0x04, 0x39, 0xd0, 0x5c, 0x32, 0x4e, 0x44,
-	0x90, 0x13, 0x1e, 0x44, 0xac, 0xb0, 0x4b, 0x5d, 0xcb, 0xad, 0xe0, 0x86, 0x02, 0x67, 0x84, 0x0f,
-	0x58, 0xe1, 0x2c, 0xe0, 0x72, 0xfe, 0x2e, 0xe4, 0x29, 0xcd, 0xe2, 0x11, 0x4d, 0x49, 0x26, 0x28,
-	0xcb, 0x10, 0x82, 0xb3, 0x2c, 0x4c, 0xb7, 0x7c, 0x6a, 0x8d, 0x3e, 0x84, 0xca, 0x1f, 0x61, 0xb2,
-	0x21, 0x8a, 0xa4, 0x8e, 0x75, 0x80, 0x3e, 0x86, 0xaa, 0x5a, 0x08, 0xbb, 0xdc, 0x2d, 0xbb, 0x75,
-	0x6c, 0x22, 0xe7, 0xaf, 0x2a, 0xd4, 0x07, 0xac, 0x98, 0xb1, 0x84, 0x2e, 0x1f, 0xd0, 0x27, 0x50,
-	0x97, 0x3d, 0xc6, 0x9c, 0x6d, 0x72, 0x43, 0x2a, 0x9b, 0x7e, 0x2d, 0x63, 0xe4, 0xe9, 0x01, 0x8a,
-	0x87, 0x5c, 0x73, 0x37, 0xfa, 0x57, 0xde, 0x6e, 0x54, 0xcf, 0xcc, 0xa9, 0xa6, 0x52, 0x03, 0xbf,
-	0x81, 0x2b, 0x73, 0x31, 0x01, 0x27, 0xa2, 0xe0, 0x74, 0x59, 0x50, 0x96, 0xd9, 0x65, 0x55, 0xea,
-	0x3e, 0x29, 0xd5, 0x0d, 0x78, 0x73, 0x5d, 0x80, 0x77, 0xf9, 0x18, 0x89, 0x23, 0x0c, 0xfd, 0x02,
-	0x57, 0x9c, 0xc4, 0x94, 0x65, 0xfb, 0xcc, 0xc2, 0x3e, 0xeb, 0x96, 0xdd, 0x46, 0xff, 0xeb, 0xd3,
-	0xd4, 0x58, 0x15, 0x1c, 0x30, 0xf3, 0xa7, 0x90, 0x40, 0x3e, 0x5c, 0x09, 0x73, 0xcd, 0xc1, 0x6a,
-	0x7b, 0xcf, 0xc2, 0xae, 0x28, 0xe6, 0xcf, 0xf6, 0x99, 0x8f, 0xd4, 0xc0, 0x48, 0x3c, 0x85, 0x04,
-	0xfa, 0x11, 0x1a, 0xb9, 0x3a, 0x3f, 0x48, 0xd9, 0x8a, 0xd8, 0xd5, 0xae, 0xe5, 0xb6, 0xfa, 0x9d,
-	0xd3, 0x1d, 0xde, 0xb2, 0x15, 0xc1, 0xa0, 0xd3, 0xe5, 0x1a, 0x7d, 0x05, 0xad, 0x84, 0xb1, 0xb7,
-	0x51, 0xb8, 0x7c, 0x1b, 0xdc, 0xb3, 0x0d, 0x17, 0x76, 0xad, 0x6b, 0xb9, 0x97, 0xb8, 0xb9, 0x45,
-	0x6f, 0x24, 0xd8, 0xf9, 0xdb, 0x02, 0x74, 0x7c, 0x71, 0xe8, 0x73, 0x68, 0x48, 0xbd, 0x96, 0x84,
-	0xca, 0x1d, 0x25, 0x67, 0x05, 0x43, 0xc4, 0x8a, 0xa1, 0x46, 0xb6, 0x6a, 0xaf, 0x13, 0xc6, 0xb8,
-	0xb1, 0x9c, 0x54, 0xf8, 0x5a, 0xc6, 0xd2, 0xae, 0x29, 0xcd, 0x02, 0xba, 0x4a, 0x88, 0x92, 0xac,
-	0x82, 0x6b, 0x29, 0xcd, 0x26, 0xab, 0x84, 0xc8, 0x3a, 0x51, 0x90, 0x5c, 0x5b, 0xf9, 0x4c, 0xd7,
-	0x49, 0x40, 0x79, 0xf9, 0x0b, 0x38, 0x57, 0xa4, 0x61, 0x92, 0xc8, 0x0e, 0xed, 0x8a, 0xb6, 0xb2,
-	0xe4, 0x35, 0x50, 0xe7, 0x37, 0xb8, 0x3c, 0x12, 0x43, 0x1a, 0x54, 0xcb, 0x61, 0x7c, 0x67, 0x22,
-	0x89, 0xe7, 0x9c, 0xac, 0xe9, 0x9f, 0xc6, 0xcf, 0x26, 0x92, 0xf8, 0x3b, 0x42, 0xe3, 0xfb, 0x42,
-	0x75, 0x57, 0xc2, 0x26, 0x72, 0xbe, 0x87, 0x33, 0x75, 0x77, 0x6d, 0x38, 0x5f, 0xf8, 0x3f, 0xf9,
-	0xd3, 0x9f, 0xfd, 0xe0, 0x76, 0x3a, 0x1a, 0xb7, 0x5f, 0xa0, 0x26, 0xd4, 0x6f, 0xa7, 0xfe, 0xe4,
-	0x6e, 0x8a, 0xc7, 0xa3, 0xb6, 0x85, 0x5a, 0x00, 0xc3, 0xa9, 0x7f, 0x3d, 0x79, 0xbd, 0x90, 0x71,
-	0xc9, 0xb9, 0x81, 0xf3, 0x47, 0x29, 0x86, 0xeb, 0x18, 0xfd, 0xa0, 0x07, 0x51, 0x72, 0x50, 0x22,
-	0x6c, 0x4b, 0x59, 0xe0, 0xa3, 0x93, 0xd2, 0xa9, 0xf9, 0x66, 0x26, 0xd3, 0xf9, 0xa7, 0x0c, 0x4d,
-	0xa3, 0xc7, 0x2b, 0x3d, 0xdc, 0xff, 0xfa, 0xae, 0x46, 0x00, 0xa1, 0xa2, 0x0d, 0x23, 0xa3, 0x4d,
-	0xab, 0xff, 0xe5, 0x81, 0x33, 0xf7, 0xcf, 0xf6, 0x5e, 0x3d, 0xe6, 0xe2, 0xbd, 0x3a, 0xe9, 0xad,
-	0x88, 0x15, 0x22, 0xe0, 0xe4, 0xf7, 0x0d, 0x11, 0x05, 0x59, 0x19, 0x25, 0x9b, 0x12, 0xc5, 0x5b,
-	0x10, 0xcd, 0xa1, 0xad, 0x85, 0x08, 0x93, 0x20, 0x34, 0xcf, 0x4c, 0x3f, 0x06, 0xf7, 0xf9, 0x23,
-	0xb1, 0xa9, 0xd0, 0x21, 0xbe, 0xe0, 0x07, 0xb1, 0xe8, 0xc4, 0xd0, 0x3a, 0x4c, 0xf9, 0xcf, 0xea,
-	0x1f, 0x77, 0x5f, 0x3e, 0xd1, 0xbd, 0xe3, 0x01, 0xec, 0xc6, 0x47, 0x17, 0xd0, 0x58, 0xf8, 0xf3,
-	0xd9, 0x78, 0x38, 0xb9, 0x9e, 0x8c, 0x47, 0xed, 0x17, 0xa8, 0x06, 0xe5, 0x37, 0xe3, 0x79, 0xdb,
-	0x42, 0x55, 0x28, 0xf9, 0xd3, 0x76, 0xc9, 0xb9, 0x83, 0x16, 0x66, 0x11, 0x1b, 0x72, 0x96, 0x9b,
-	0xc6, 0x06, 0x70, 0xb1, 0xfd, 0x88, 0x6d, 0xc7, 0xd7, 0x46, 0x78, 0xf9, 0xec, 0xf8, 0xb8, 0x25,
-	0xf6, 0x43, 0x31, 0xf8, 0xee, 0xd7, 0x6f, 0x63, 0xf6, 0x98, 0xee, 0x31, 0x1e, 0xf7, 0xf6, 0x7e,
-	0x20, 0x34, 0x5b, 0xf3, 0xb0, 0xa7, 0x7e, 0x1d, 0xbd, 0x98, 0xed, 0xed, 0x44, 0x55, 0x05, 0x7e,
-	0xf3, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xae, 0xe2, 0x5d, 0xd1, 0x6f, 0x06, 0x00, 0x00,
+	// 820 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x5b, 0x6f, 0xe3, 0x44,
+	0x14, 0x5e, 0x27, 0x4d, 0xb2, 0x39, 0x69, 0xd2, 0x74, 0xba, 0x20, 0x6f, 0x01, 0x11, 0x2c, 0x10,
+	0x79, 0x4a, 0xa5, 0x82, 0x00, 0x89, 0xa7, 0xe6, 0xd2, 0x36, 0x82, 0x3a, 0xd1, 0xa4, 0x15, 0x2c,
+	0x3c, 0x58, 0x76, 0x32, 0x75, 0x47, 0x6b, 0x7b, 0xcc, 0xcc, 0x84, 0xa5, 0xfb, 0x3f, 0xf8, 0x19,
+	0x3c, 0xf3, 0xf7, 0xd0, 0x5c, 0xdc, 0x5c, 0xfb, 0x80, 0xb4, 0x6f, 0x3e, 0xdf, 0x9c, 0xf3, 0x9d,
+	0xdb, 0x77, 0x64, 0xf8, 0x74, 0xfe, 0xc0, 0x59, 0x4a, 0x97, 0x29, 0x13, 0x67, 0x11, 0x93, 0x81,
+	0x98, 0x87, 0x09, 0xcd, 0xe2, 0x5e, 0xce, 0x99, 0x64, 0x08, 0x56, 0xaf, 0xde, 0x35, 0xd4, 0xfa,
+	0x4c, 0xde, 0x3e, 0xe6, 0x04, 0xbd, 0x86, 0x97, 0xda, 0x97, 0xbe, 0x27, 0xae, 0xd3, 0x71, 0xba,
+	0x75, 0x5c, 0x8b, 0x98, 0x9c, 0xd1, 0xf7, 0x04, 0x79, 0xd0, 0x9c, 0x33, 0x4e, 0x44, 0x90, 0x13,
+	0x1e, 0x44, 0x4c, 0xba, 0xa5, 0x8e, 0xd3, 0xad, 0xe0, 0x86, 0x06, 0xa7, 0x84, 0xf7, 0x99, 0xf4,
+	0xee, 0xe0, 0x78, 0xf6, 0x2e, 0xe4, 0x29, 0xcd, 0xe2, 0x21, 0x4d, 0x49, 0x26, 0x28, 0xcb, 0x10,
+	0x82, 0x83, 0x2c, 0x4c, 0x0b, 0x3e, 0xfd, 0x8d, 0x5e, 0x41, 0xe5, 0xcf, 0x30, 0x59, 0x12, 0x4d,
+	0x52, 0xc7, 0xc6, 0x40, 0x1f, 0x43, 0x55, 0x7f, 0x08, 0xb7, 0xdc, 0x29, 0x77, 0xeb, 0xd8, 0x5a,
+	0xde, 0xdf, 0x35, 0xa8, 0xf7, 0x99, 0x9c, 0xb2, 0x84, 0xce, 0x1f, 0xd1, 0x27, 0x50, 0x57, 0x35,
+	0xc6, 0x9c, 0x2d, 0x73, 0x4b, 0xaa, 0x8a, 0xbe, 0x52, 0x36, 0xea, 0x99, 0x06, 0xe4, 0x63, 0x6e,
+	0xb8, 0x1b, 0xe7, 0x27, 0xbd, 0x55, 0xab, 0x3d, 0xdb, 0xa7, 0xee, 0x4a, 0x37, 0xfc, 0x06, 0x4e,
+	0xec, 0x60, 0x02, 0x4e, 0x84, 0xe4, 0x74, 0x2e, 0x29, 0xcb, 0xdc, 0xb2, 0x0e, 0xed, 0x6e, 0x85,
+	0x9a, 0x02, 0x7a, 0x33, 0x13, 0x80, 0x57, 0xfe, 0x18, 0x89, 0x1d, 0x0c, 0xfd, 0x0a, 0x27, 0x9c,
+	0xc4, 0x94, 0x65, 0xeb, 0xcc, 0xc2, 0x3d, 0xe8, 0x94, 0xbb, 0x8d, 0xf3, 0xaf, 0xf7, 0x53, 0x63,
+	0x1d, 0xb0, 0xc1, 0xcc, 0xb7, 0x21, 0x81, 0x7c, 0x38, 0x11, 0x76, 0xcc, 0xc1, 0xa2, 0x98, 0xb3,
+	0x70, 0x2b, 0x9a, 0xf9, 0xb3, 0x75, 0xe6, 0x9d, 0x6d, 0x60, 0x24, 0xb6, 0x21, 0x81, 0x7e, 0x84,
+	0x46, 0xae, 0xf3, 0x07, 0x29, 0x5b, 0x10, 0xb7, 0xda, 0x71, 0xba, 0xad, 0xf3, 0xd3, 0xfd, 0x15,
+	0xde, 0xb0, 0x05, 0xc1, 0x60, 0xdc, 0xd5, 0x37, 0xfa, 0x0a, 0x5a, 0x09, 0x63, 0x6f, 0xa3, 0x70,
+	0xfe, 0x36, 0x78, 0x60, 0x4b, 0x2e, 0xdc, 0x5a, 0xc7, 0xe9, 0x1e, 0xe3, 0x66, 0x81, 0x5e, 0x2b,
+	0x10, 0x5d, 0xc1, 0x61, 0x31, 0x68, 0x9d, 0xe4, 0xa5, 0x4e, 0xf2, 0xe5, 0xfe, 0x24, 0x7d, 0x26,
+	0xed, 0x90, 0x75, 0xba, 0x86, 0x58, 0x19, 0xa7, 0xff, 0x38, 0x80, 0x76, 0x37, 0x80, 0x3e, 0x87,
+	0x86, 0x5a, 0xfc, 0x9c, 0x50, 0xf5, 0xa2, 0x75, 0x51, 0xc1, 0x10, 0x31, 0x39, 0x30, 0x48, 0x21,
+	0x9b, 0xfb, 0x84, 0x31, 0x6e, 0xb5, 0xab, 0xa4, 0x72, 0xa9, 0x6c, 0xa5, 0xfb, 0x94, 0x66, 0x01,
+	0x5d, 0x24, 0x44, 0xef, 0xbe, 0x82, 0x6b, 0x29, 0xcd, 0xc6, 0x8b, 0x84, 0xa8, 0x38, 0x21, 0x49,
+	0x6e, 0x6e, 0xe2, 0xc0, 0xc4, 0x29, 0x40, 0x1f, 0xc5, 0x17, 0x70, 0xa8, 0x49, 0xc3, 0x24, 0x51,
+	0xad, 0xba, 0x15, 0x73, 0x13, 0x8a, 0xd7, 0x42, 0xa7, 0xbf, 0xc3, 0xf1, 0xce, 0x56, 0x95, 0xd2,
+	0xcd, 0x5e, 0xad, 0x80, 0xad, 0xa5, 0xf0, 0x9c, 0x93, 0x7b, 0xfa, 0x97, 0x3d, 0x0c, 0x6b, 0x29,
+	0xfc, 0x1d, 0xa1, 0xf1, 0x83, 0xd4, 0xd5, 0x95, 0xb0, 0xb5, 0xbc, 0xef, 0xe1, 0x40, 0x2f, 0xa1,
+	0x0d, 0x87, 0x77, 0xfe, 0x4f, 0xfe, 0xe4, 0x17, 0x3f, 0xb8, 0x99, 0x0c, 0x47, 0xed, 0x17, 0xa8,
+	0x09, 0xf5, 0x9b, 0x89, 0x3f, 0xbe, 0x9d, 0xe0, 0xd1, 0xb0, 0xed, 0xa0, 0x16, 0xc0, 0x60, 0xe2,
+	0x5f, 0x8e, 0xaf, 0xee, 0x94, 0x5d, 0xf2, 0x06, 0xd0, 0xda, 0x1c, 0x32, 0x72, 0xe1, 0x55, 0x41,
+	0x31, 0x1b, 0x5c, 0xfc, 0x3c, 0xf6, 0xaf, 0x0a, 0xaa, 0x06, 0xd4, 0x66, 0xb7, 0xa3, 0xe9, 0x54,
+	0x13, 0x01, 0x54, 0x87, 0xa3, 0x9b, 0x0b, 0x5f, 0x91, 0x5c, 0xc3, 0xe1, 0xd3, 0xce, 0x06, 0xf7,
+	0x31, 0xfa, 0xc1, 0x4c, 0x43, 0x8b, 0x83, 0x12, 0xe1, 0x3a, 0x5a, 0x90, 0x1f, 0xed, 0xdd, 0xb1,
+	0x1e, 0xd2, 0xd4, 0x7a, 0x7a, 0xff, 0x96, 0xa1, 0x69, 0x8b, 0xb9, 0x30, 0x13, 0xfa, 0xa0, 0x57,
+	0x3e, 0x04, 0x08, 0x35, 0x6d, 0x18, 0xd9, 0x05, 0x6f, 0x49, 0x6f, 0x23, 0x77, 0xef, 0xe2, 0xc9,
+	0x17, 0xaf, 0xc5, 0x29, 0xa5, 0x47, 0x4c, 0x8a, 0x80, 0x93, 0x3f, 0x96, 0x44, 0x48, 0xb2, 0xb0,
+	0x72, 0x68, 0x2a, 0x14, 0x17, 0x20, 0x9a, 0x41, 0xdb, 0x6c, 0x33, 0x4c, 0x82, 0xd0, 0x1e, 0xbd,
+	0x39, 0xcd, 0xee, 0xf3, 0x29, 0xb1, 0x8d, 0x30, 0x26, 0x3e, 0xe2, 0x1b, 0xb6, 0x38, 0x8d, 0xa1,
+	0xb5, 0xe9, 0xf2, 0xbf, 0x25, 0xb4, 0x5b, 0x7d, 0x79, 0x4f, 0xf5, 0x5e, 0x0f, 0x60, 0xd5, 0x3e,
+	0x3a, 0x82, 0xc6, 0x9d, 0x3f, 0x9b, 0x8e, 0x06, 0xe3, 0xcb, 0xf1, 0x68, 0xd8, 0x7e, 0x81, 0x6a,
+	0x50, 0x7e, 0x33, 0x9a, 0xb5, 0x1d, 0x54, 0x85, 0x92, 0x3f, 0x69, 0x97, 0xbc, 0x5b, 0x68, 0x61,
+	0x16, 0xb1, 0x01, 0x67, 0xb9, 0x2d, 0xac, 0x0f, 0x47, 0xc5, 0xa5, 0x17, 0xed, 0x1b, 0x21, 0xbc,
+	0x7e, 0xb6, 0x7d, 0xdc, 0x12, 0xeb, 0xa6, 0xe8, 0x7f, 0xf7, 0xdb, 0xb7, 0x31, 0x7b, 0x72, 0xef,
+	0x31, 0x1e, 0x9f, 0xad, 0xfd, 0xce, 0x68, 0x76, 0xcf, 0xc3, 0x33, 0xfd, 0x23, 0x3b, 0x8b, 0xd9,
+	0xda, 0x4b, 0x54, 0xd5, 0xe0, 0x37, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xab, 0x89, 0xc3, 0x59,
+	0xfd, 0x06, 0x00, 0x00,
 }
diff --git a/src/chromiumos/bot_scaling.proto b/src/chromiumos/bot_scaling.proto
index d9f3b7e..f7593e9 100644
--- a/src/chromiumos/bot_scaling.proto
+++ b/src/chromiumos/bot_scaling.proto
@@ -80,6 +80,19 @@
   Mode policy_mode = 6;
   // Number of hours to lookback for Swarming stats.
   sint32 lookback_hours = 7;
+
+  // Specifies mode for a bot scaling
+  enum BotScalingMode {
+    UNKNOWN_SCALING_MODE = 0;
+    // Scale up or down bots by the step size associated with bot group..
+    STEPPED = 1;
+    // Scale up or down bots by the demand on the bot group.
+    // For use on smaller bot groups that are susceptible to smaller increases.
+    DEMAND = 2;
+  }
+
+  // Set the scaling approach for the bot group being monitored.
+  BotScalingMode scaling_mode = 8;
 }
 
 // Configures the root message.