From dca41155f4b29c1e55ee576228159337980d21e4 Mon Sep 17 00:00:00 2001 From: Feiyang Xie Date: Sun, 23 Aug 2026 11:58:17 -0700 Subject: [PATCH 1/4] add ts to schedulers --- openapi/openapiv2.json | 8 ++++++++ openapi/openapiv3.yaml | 13 +++++++++++++ temporal/api/schedule/v1/message.proto | 4 ++++ .../api/workflowservice/v1/request_response.proto | 6 ++++++ 4 files changed, 31 insertions(+) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index cbb73e756..aeb72ae87 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -12917,6 +12917,10 @@ "propagatedNexusSerializationContext": { "$ref": "#/definitions/v1PropagatedSerializationContext", "description": "Serialization context propagated from the Nexus caller that started this workflow." + }, + "timeSkippingStatePropagation": { + "$ref": "#/definitions/v1TimeSkippingStatePropagation", + "description": "Time-skipping state propagated by the execution that started this workflow.\nThis field is intended for use by the Temporal server, for example when a schedule\nstarts a workflow, and is not intended to be set by external clients." } } }, @@ -19487,6 +19491,10 @@ }, "state": { "$ref": "#/definitions/v1ScheduleState" + }, + "timeSkippingConfig": { + "$ref": "#/definitions/v1TimeSkippingConfig", + "description": "Time-skipping configuration for this schedule.\nIf not set, time skipping is disabled for triggered workflow executions." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index a6465fa4b..e7c38b95e 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -16348,6 +16348,12 @@ components: $ref: '#/components/schemas/SchedulePolicies' state: $ref: '#/components/schemas/ScheduleState' + timeSkippingConfig: + allOf: + - $ref: '#/components/schemas/TimeSkippingConfig' + description: |- + Time-skipping configuration for this schedule. + If not set, time skipping is disabled for triggered workflow executions. ScheduleAction: type: object properties: @@ -17846,6 +17852,13 @@ components: allOf: - $ref: '#/components/schemas/PropagatedSerializationContext' description: Serialization context propagated from the Nexus caller that started this workflow. + timeSkippingStatePropagation: + allOf: + - $ref: '#/components/schemas/TimeSkippingStatePropagation' + description: |- + Time-skipping state propagated by the execution that started this workflow. + This field is intended for use by the Temporal server, for example when a schedule + starts a workflow, and is not intended to be set by external clients. StartWorkflowExecutionResponse: type: object properties: diff --git a/temporal/api/schedule/v1/message.proto b/temporal/api/schedule/v1/message.proto index 3a0a9344c..0a918ba78 100644 --- a/temporal/api/schedule/v1/message.proto +++ b/temporal/api/schedule/v1/message.proto @@ -359,6 +359,10 @@ message Schedule { ScheduleAction action = 2; SchedulePolicies policies = 3; ScheduleState state = 4; + + // Time-skipping configuration for this schedule. + // If not set, time skipping is disabled for triggered workflow executions. + temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 5; } // ScheduleListInfo is an abbreviated set of values from Schedule and ScheduleInfo diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index bfdac483a..f4b4cdb7f 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -219,8 +219,14 @@ message StartWorkflowExecutionRequest { // Time-skipping configuration. If not set, time skipping is disabled. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 29; + // Serialization context propagated from the Nexus caller that started this workflow. temporal.api.nexus.v1.PropagatedSerializationContext propagated_nexus_serialization_context = 30; + + // Time-skipping state propagated by the execution that started this workflow. + // This field is intended for use by the Temporal server, for example when a schedule + // starts a workflow, and is not intended to be set by external clients. + temporal.api.common.v1.TimeSkippingStatePropagation time_skipping_state_propagation = 31; } message StartWorkflowExecutionResponse { From 88b0e8f3b779df2d9b808ffc87a1986a01d9b061 Mon Sep 17 00:00:00 2001 From: Feiyang Xie Date: Sun, 23 Aug 2026 13:11:55 -0700 Subject: [PATCH 2/4] Add time skipping info to DescribeSchedule --- openapi/openapiv2.json | 4 ++++ openapi/openapiv3.yaml | 6 ++++++ temporal/api/workflowservice/v1/request_response.proto | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index aeb72ae87..cb08c4dc1 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -15823,6 +15823,10 @@ "type": "string", "format": "byte", "description": "This value can be passed back to UpdateSchedule to ensure that the\nschedule was not modified between a Describe and an Update, which could\nlead to lost updates and other confusion." + }, + "timeSkippingInfo": { + "$ref": "#/definitions/v1TimeSkippingInfo", + "description": "Information about time skipping for this schedule.\nIf the schedule has never enabled time skipping, this will be unset." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index e7c38b95e..bd8c9448b 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -12015,6 +12015,12 @@ components: schedule was not modified between a Describe and an Update, which could lead to lost updates and other confusion. format: bytes + timeSkippingInfo: + allOf: + - $ref: '#/components/schemas/TimeSkippingInfo' + description: |- + Information about time skipping for this schedule. + If the schedule has never enabled time skipping, this will be unset. DescribeTaskQueueResponse: type: object properties: diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index f4b4cdb7f..642e9698d 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -1473,6 +1473,10 @@ message DescribeScheduleResponse { // schedule was not modified between a Describe and an Update, which could // lead to lost updates and other confusion. bytes conflict_token = 5; + + // Information about time skipping for this schedule. + // If the schedule has never enabled time skipping, this will be unset. + temporal.api.common.v1.TimeSkippingInfo time_skipping_info = 6; } message UpdateScheduleRequest { From 46b1b803bdb259620f7092b07382808978822ce9 Mon Sep 17 00:00:00 2001 From: Feiyang Xie Date: Sun, 23 Aug 2026 13:21:31 -0700 Subject: [PATCH 3/4] Move time skipping info into ScheduleInfo --- openapi/openapiv2.json | 8 ++++---- openapi/openapiv3.yaml | 12 ++++++------ temporal/api/schedule/v1/message.proto | 4 ++++ .../api/workflowservice/v1/request_response.proto | 4 ---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index cb08c4dc1..55ae019a7 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -15823,10 +15823,6 @@ "type": "string", "format": "byte", "description": "This value can be passed back to UpdateSchedule to ensure that the\nschedule was not modified between a Describe and an Update, which could\nlead to lost updates and other confusion." - }, - "timeSkippingInfo": { - "$ref": "#/definitions/v1TimeSkippingInfo", - "description": "Information about time skipping for this schedule.\nIf the schedule has never enabled time skipping, this will be unset." } } }, @@ -19603,6 +19599,10 @@ "type": "string", "format": "int64", "description": "Size of the schedule's internal state (including payloads) in bytes." + }, + "timeSkippingInfo": { + "$ref": "#/definitions/v1TimeSkippingInfo", + "description": "Information about time skipping for this schedule.\nIf the schedule has never enabled time skipping, this will be unset." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index bd8c9448b..77848413a 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -12015,12 +12015,6 @@ components: schedule was not modified between a Describe and an Update, which could lead to lost updates and other confusion. format: bytes - timeSkippingInfo: - allOf: - - $ref: '#/components/schemas/TimeSkippingInfo' - description: |- - Information about time skipping for this schedule. - If the schedule has never enabled time skipping, this will be unset. DescribeTaskQueueResponse: type: object properties: @@ -16458,6 +16452,12 @@ components: stateSizeBytes: type: string description: Size of the schedule's internal state (including payloads) in bytes. + timeSkippingInfo: + allOf: + - $ref: '#/components/schemas/TimeSkippingInfo' + description: |- + Information about time skipping for this schedule. + If the schedule has never enabled time skipping, this will be unset. ScheduleListEntry: type: object properties: diff --git a/temporal/api/schedule/v1/message.proto b/temporal/api/schedule/v1/message.proto index 0a918ba78..5190a0b54 100644 --- a/temporal/api/schedule/v1/message.proto +++ b/temporal/api/schedule/v1/message.proto @@ -352,6 +352,10 @@ message ScheduleInfo { // Size of the schedule's internal state (including payloads) in bytes. int64 state_size_bytes = 12; + + // Information about time skipping for this schedule. + // If the schedule has never enabled time skipping, this will be unset. + temporal.api.common.v1.TimeSkippingInfo time_skipping_info = 13; } message Schedule { diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index 642e9698d..f4b4cdb7f 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -1473,10 +1473,6 @@ message DescribeScheduleResponse { // schedule was not modified between a Describe and an Update, which could // lead to lost updates and other confusion. bytes conflict_token = 5; - - // Information about time skipping for this schedule. - // If the schedule has never enabled time skipping, this will be unset. - temporal.api.common.v1.TimeSkippingInfo time_skipping_info = 6; } message UpdateScheduleRequest { From 6a20abe1007adf703694d9039de63af7c667f4d5 Mon Sep 17 00:00:00 2001 From: Feiyang Xie Date: Thu, 8 Oct 2026 23:08:32 -0700 Subject: [PATCH 4/4] refine comment --- openapi/openapiv2.json | 2 +- openapi/openapiv3.yaml | 4 +++- temporal/api/schedule/v1/message.proto | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index 55ae019a7..a6720e2fa 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -19494,7 +19494,7 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "Time-skipping configuration for this schedule.\nIf not set, time skipping is disabled for triggered workflow executions." + "description": "Time-skipping configuration for this schedule.\nWhen enabled, the schedule advances its virtual time without waiting for\nwall-clock time, causing scheduled actions to be triggered sooner.\nThis feature is intended for testing only." } } }, diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index 77848413a..047a3135b 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -16353,7 +16353,9 @@ components: - $ref: '#/components/schemas/TimeSkippingConfig' description: |- Time-skipping configuration for this schedule. - If not set, time skipping is disabled for triggered workflow executions. + When enabled, the schedule advances its virtual time without waiting for + wall-clock time, causing scheduled actions to be triggered sooner. + This feature is intended for testing only. ScheduleAction: type: object properties: diff --git a/temporal/api/schedule/v1/message.proto b/temporal/api/schedule/v1/message.proto index 5190a0b54..4c4086c88 100644 --- a/temporal/api/schedule/v1/message.proto +++ b/temporal/api/schedule/v1/message.proto @@ -365,7 +365,9 @@ message Schedule { ScheduleState state = 4; // Time-skipping configuration for this schedule. - // If not set, time skipping is disabled for triggered workflow executions. + // When enabled, the schedule advances its virtual time without waiting for + // wall-clock time, causing scheduled actions to be triggered sooner. + // This feature is intended for testing only. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 5; }