Durable Promise Specification

API + state-transition table for durable promises — the persistent coordination primitive of Distributed Async Await.

Units of coordination

Promises are fundamental units of coordination. Distributed Async Await proposes Durable Promises — promises that persist in storage and enable coordination across process boundaries.

Within the Distributed Async Await specification, each execution — whether a function execution or an action taking place in the physical world — pairs to a promise.

Distributed Async Await requires that promise data objects are stored to disk, thus making the promises durable, giving them the name Durable Promises.

A promise (also called future, awaitable, or deferred) is a representation of a future value. A promise is either pending or completed. A pending promise has no value yet; a completed promise carries one of four outcomes: resolved (success), rejected (failure), rejectedCanceled (canceled by a downstream caller), or rejectedTimedout (expired before settlement).

Promise lifecycle diagram

A promise is a coordination primitive. In a typical scenario, a downstream function execution creates a promise and awaits its completion. An upstream function execution settles the promise. On completion, the downstream execution resumes with the value of the promise.

API#

Durable Promise Application Programming Interface

Logically, the Application Programming Interface (API) is divided into two parts: the Downstream API and the Upstream API.

Promise API illustration

Downstream API#

  • Create

    A downstream component may create a promise.

    code
    Create(promise-id, idempotency-key, param, header, timeout, strict)
  • Cancel

    A downstream component can cancel an existing promise.

    code
    Cancel(promise-id, idempotency-key, value, header, strict)
  • Callback

    A downstream component can register a callback on an existing promise.

    code
    Callback(id, promise-id, root-promise-id, timeout, recv)

    A recv specifies the transport on which the callback will occur. Below is a non-exhaustive list of supported receivers.

    TypeDataShorthand
    poll{"group": "string", "id": "string"}poll://group:id
    http{"headers": {"string": "string"}, "url": "string"}http://example.com

Upstream API#

  • Settle

    An upstream component settles an existing promise with a terminal state. A single promise.settle operation carries a state parameter that selects the outcome.

    code
    Settle(promise-id, idempotency-key, state, value, header, strict)

    Where state is one of resolved, rejected, or rejectedCanceled. (By convention, rejectedTimedout is reserved for server-initiated timeout settlement.)

    The legacy API exposed these as separate operations — Resolve(...) and Reject(...) upstream, Cancel(...) downstream; the current wire protocol unifies all three into the single promise.settle handler.

OpenAPI spec example#

yaml
openapi: 3.0.0
info:
  title: Durable Promise API
  version: x.x.x
  license:
    name: Apache 2.0
    url: https://opensource.org/license/apache-2-0

servers:
  - url: https://your_public_api_url
    description: <your_public_server_description>
  - url: http://localhost:<port>
    description: <your_local_server_description>

paths:
  /promises:
    get:
      tags: [Promises]
      summary: Search promises
      operationId: searchPromises
      parameters:
        - in: header
          name: request-id
          schema: { type: string }
        - name: id
          in: query
          schema: { type: string }
        - name: state
          in: query
          schema: { type: string, enum: [pending, resolved, rejected] }
        - name: tags
          in: query
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties: { type: string }
        - name: limit
          in: query
          schema: { type: integer }
        - name: cursor
          in: query
          schema: { type: string }
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  promises:
                    type: array
                    items:
                      $ref: "#/components/schemas/Promise"
                  cursor:
                    type: string
    post:
      tags: [Promises]
      summary: Create promise
      operationId: createPromise
      parameters:
        - in: header
          name: request-id
          schema: { type: string }
        - in: header
          name: idempotency-key
          schema: { type: string }
        - in: header
          name: strict
          schema: { type: boolean }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id, timeout]
              properties:
                id: { type: string }
                timeout: { type: integer, format: int64 }
                param: { $ref: "#/components/schemas/Value" }
                tags:
                  type: object
                  additionalProperties: { type: string }
      responses:
        200:
          description: OK — returned for both new and existing promises; duplicate create is idempotent
          content:
            application/json:
              schema: { $ref: "#/components/schemas/Promise" }
        400: { description: Invalid request }
        403: { description: Forbidden }

  /promises/{id}:
    get:
      tags: [Promises]
      summary: Read promise
      operationId: readPromise
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
        - in: header
          name: request-id
          schema: { type: string }
      responses:
        200:
          description: OK
          content:
            application/json:
              schema: { $ref: "#/components/schemas/Promise" }
        400: { description: Invalid request }
        404: { description: Promise not found }

    patch:
      tags: [Promises]
      summary: Complete promise
      operationId: completePromise
      parameters:
        - in: path
          name: id
          required: true
          schema: { type: string }
        - in: header
          name: request-id
          schema: { type: string }
        - in: header
          name: idempotency-key
          schema: { type: string }
        - in: header
          name: strict
          schema: { type: boolean }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [state]
              properties:
                state:
                  type: string
                  enum: [RESOLVED, REJECTED, REJECTED_CANCELED]
                value: { $ref: "#/components/schemas/Value" }
      responses:
        200:
          description: OK
          content:
            application/json:
              schema: { $ref: "#/components/schemas/Promise" }
        400: { description: Invalid request }
        403: { description: Forbidden }
        404: { description: Promise not found }

components:
  schemas:
    Promise:
      type: object
      required: [id, state, timeout, param, value, tags]
      properties:
        id: { type: string }
        state:
          type: string
          enum:
            [PENDING, RESOLVED, REJECTED, REJECTED_CANCELED, REJECTED_TIMEDOUT]
        timeout: { type: integer, format: int64 }
        param: { $ref: "#/components/schemas/Value" }
        value: { $ref: "#/components/schemas/Value" }
        tags:
          type: object
          additionalProperties: { type: string }
        idempotencyKeyForCreate: { type: string, readOnly: true }
        idempotencyKeyForComplete: { type: string, readOnly: true }
        createdOn: { type: integer, format: int64 }
        completedOn: { type: integer, format: int64 }

    Value:
      type: object
      properties:
        headers:
          type: object
          additionalProperties: { type: string }
        data: { type: string }

    Task:
      type: object
      required: [id, version, state]
      properties:
        id: { type: string }
        state:
          type: string
          enum: [pending, acquired, suspended, halted, fulfilled]
        version: { type: integer }
        timeout: { type: integer, format: int64 }
        processId: { type: string }
        createdOn: { type: integer, format: int64 }
        completedOn: { type: integer, format: int64 }

A task and its associated promise share an identifier; they are paired but distinct. A task carries a version that increments only on the pending → acquired transition (task.acquire); transitions back to pending (release, resume, lease expiry) do not change the version. All mutating task operations require the caller to present the current version — a mismatch returns conflict (status 409).

For the full task lifecycle, operations, and invariants, see Tasks.

State transitions#

Current StateActionNext StateOutput
1InitCreate(id, -, T)Pending(id, -, -)OK
2InitCreate(id, -, F)Pending(id, -, -)OK
3InitCreate(id, ikc, T)Pending(id, ikc, -)OK
4InitCreate(id, ikc, F)Pending(id, ikc, -)OK
5InitResolve(id, -, T)InitKO, Already Init
6InitResolve(id, -, F)InitKO, Already Init
7InitResolve(id, iku, T)InitKO, Already Init
8InitResolve(id, iku, F)InitKO, Already Init
9InitReject(id, -, T)InitKO, Already Init
10InitReject(id, -, F)InitKO, Already Init
11InitReject(id, iku, T)InitKO, Already Init
12InitReject(id, iku, F)InitKO, Already Init
13InitCancel(id, -, T)InitKO, Already Init
14InitCancel(id, -, F)InitKO, Already Init
15InitCancel(id, iku, T)InitKO, Already Init
16InitCancel(id, iku, F)InitKO, Already Init
17Pending(id, -, -)Create(id, -, T)Pending(id, -, -)KO, Already Pending
18Pending(id, -, -)Create(id, -, F)Pending(id, -, -)KO, Already Pending
19Pending(id, -, -)Create(id, ikc, T)Pending(id, -, -)KO, Already Pending
20Pending(id, -, -)Create(id, ikc, F)Pending(id, -, -)KO, Already Pending
21Pending(id, -, -)Resolve(id, -, T)Resolved(id, -, -)OK
22Pending(id, -, -)Resolve(id, -, F)Resolved(id, -, -)OK
23Pending(id, -, -)Resolve(id, iku, T)Resolved(id, -, iku)OK
24Pending(id, -, -)Resolve(id, iku, F)Resolved(id, -, iku)OK
25Pending(id, -, -)Reject(id, -, T)Rejected(id, -, -)OK
26Pending(id, -, -)Reject(id, -, F)Rejected(id, -, -)OK
27Pending(id, -, -)Reject(id, iku, T)Rejected(id, -, iku)OK
28Pending(id, -, -)Reject(id, iku, F)Rejected(id, -, iku)OK
29Pending(id, -, -)Cancel(id, -, T)RejectedCanceled(id, -, -)OK
30Pending(id, -, -)Cancel(id, -, F)RejectedCanceled(id, -, -)OK
31Pending(id, -, -)Cancel(id, iku, T)RejectedCanceled(id, -, iku)OK
32Pending(id, -, -)Cancel(id, iku, F)RejectedCanceled(id, -, iku)OK
33Pending(id, ikc, -)Create(id, -, T)Pending(id, ikc, -)KO, Already Pending
34Pending(id, ikc, -)Create(id, -, F)Pending(id, ikc, -)KO, Already Pending
35Pending(id, ikc, -)Create(id, ikc, T)Pending(id, ikc, -)OK, Deduplicated
36Pending(id, ikc, -)Create(id, ikc, F)Pending(id, ikc, -)OK, Deduplicated
37Pending(id, ikc, -)Create(id, ikc*, T)Pending(id, ikc, -)KO, Already Pending
38Pending(id, ikc, -)Create(id, ikc*, F)Pending(id, ikc, -)KO, Already Pending
39Pending(id, ikc, -)Resolve(id, -, T)Resolved(id, ikc, -)OK
40Pending(id, ikc, -)Resolve(id, -, F)Resolved(id, ikc, -)OK
41Pending(id, ikc, -)Resolve(id, iku, T)Resolved(id, ikc, iku)OK
42Pending(id, ikc, -)Resolve(id, iku, F)Resolved(id, ikc, iku)OK
43Pending(id, ikc, -)Reject(id, -, T)Rejected(id, ikc, -)OK
44Pending(id, ikc, -)Reject(id, -, F)Rejected(id, ikc, -)OK
45Pending(id, ikc, -)Reject(id, iku, T)Rejected(id, ikc, iku)OK
46Pending(id, ikc, -)Reject(id, iku, F)Rejected(id, ikc, iku)OK
47Pending(id, ikc, -)Cancel(id, -, T)RejectedCanceled(id, ikc, -)OK
48Pending(id, ikc, -)Cancel(id, -, F)RejectedCanceled(id, ikc, -)OK
49Pending(id, ikc, -)Cancel(id, iku, T)RejectedCanceled(id, ikc, iku)OK
50Pending(id, ikc, -)Cancel(id, iku, F)RejectedCanceled(id, ikc, iku)OK
51Resolved(id, -, -)Create(id, -, T)Resolved(id, -, -)KO, Already Resolved
52Resolved(id, -, -)Create(id, -, F)Resolved(id, -, -)KO, Already Resolved
53Resolved(id, -, -)Create(id, ikc, T)Resolved(id, -, -)KO, Already Resolved
54Resolved(id, -, -)Create(id, ikc, F)Resolved(id, -, -)KO, Already Resolved
55Resolved(id, -, -)Resolve(id, -, T)Resolved(id, -, -)KO, Already Resolved
56Resolved(id, -, -)Resolve(id, -, F)Resolved(id, -, -)KO, Already Resolved
57Resolved(id, -, -)Resolve(id, iku, T)Resolved(id, -, -)KO, Already Resolved
58Resolved(id, -, -)Resolve(id, iku, F)Resolved(id, -, -)KO, Already Resolved
59Resolved(id, -, -)Reject(id, -, T)Resolved(id, -, -)KO, Already Resolved
60Resolved(id, -, -)Reject(id, -, F)Resolved(id, -, -)KO, Already Resolved
61Resolved(id, -, -)Reject(id, iku, T)Resolved(id, -, -)KO, Already Resolved
62Resolved(id, -, -)Reject(id, iku, F)Resolved(id, -, -)KO, Already Resolved
63Resolved(id, -, -)Cancel(id, -, T)Resolved(id, -, -)KO, Already Resolved
64Resolved(id, -, -)Cancel(id, -, F)Resolved(id, -, -)KO, Already Resolved
65Resolved(id, -, -)Cancel(id, iku, T)Resolved(id, -, -)KO, Already Resolved
66Resolved(id, -, -)Cancel(id, iku, F)Resolved(id, -, -)KO, Already Resolved
67Resolved(id, -, iku)Create(id, -, T)Resolved(id, -, iku)KO, Already Resolved
68Resolved(id, -, iku)Create(id, -, F)Resolved(id, -, iku)KO, Already Resolved
69Resolved(id, -, iku)Create(id, ikc, T)Resolved(id, -, iku)KO, Already Resolved
70Resolved(id, -, iku)Create(id, ikc, F)Resolved(id, -, iku)KO, Already Resolved
71Resolved(id, -, iku)Resolve(id, -, T)Resolved(id, -, iku)KO, Already Resolved
72Resolved(id, -, iku)Resolve(id, -, F)Resolved(id, -, iku)KO, Already Resolved
73Resolved(id, -, iku)Resolve(id, iku, T)Resolved(id, -, iku)OK, Deduplicated
74Resolved(id, -, iku)Resolve(id, iku, F)Resolved(id, -, iku)OK, Deduplicated
75Resolved(id, -, iku)Resolve(id, iku*, T)Resolved(id, -, iku)KO, Already Resolved
76Resolved(id, -, iku)Resolve(id, iku*, F)Resolved(id, -, iku)KO, Already Resolved
77Resolved(id, -, iku)Reject(id, -, T)Resolved(id, -, iku)KO, Already Resolved
78Resolved(id, -, iku)Reject(id, -, F)Resolved(id, -, iku)KO, Already Resolved
79Resolved(id, -, iku)Reject(id, iku, T)Resolved(id, -, iku)KO, Already Resolved
80Resolved(id, -, iku)Reject(id, iku, F)Resolved(id, -, iku)OK, Deduplicated
81Resolved(id, -, iku)Reject(id, iku*, T)Resolved(id, -, iku)KO, Already Resolved
82Resolved(id, -, iku)Reject(id, iku*, F)Resolved(id, -, iku)KO, Already Resolved
83Resolved(id, -, iku)Cancel(id, -, T)Resolved(id, -, iku)KO, Already Resolved
84Resolved(id, -, iku)Cancel(id, -, F)Resolved(id, -, iku)KO, Already Resolved
85Resolved(id, -, iku)Cancel(id, iku, T)Resolved(id, -, iku)KO, Already Resolved
86Resolved(id, -, iku)Cancel(id, iku, F)Resolved(id, -, iku)OK, Deduplicated
87Resolved(id, -, iku)Cancel(id, iku*, T)Resolved(id, -, iku)KO, Already Resolved
88Resolved(id, -, iku)Cancel(id, iku*, F)Resolved(id, -, iku)KO, Already Resolved
89Resolved(id, ikc, -)Create(id, -, T)Resolved(id, ikc, -)KO, Already Resolved
90Resolved(id, ikc, -)Create(id, -, F)Resolved(id, ikc, -)KO, Already Resolved
91Resolved(id, ikc, -)Create(id, ikc, T)Resolved(id, ikc, -)KO, Already Resolved
92Resolved(id, ikc, -)Create(id, ikc, F)Resolved(id, ikc, -)OK, Deduplicated
93Resolved(id, ikc, -)Create(id, ikc*, T)Resolved(id, ikc, -)KO, Already Resolved
94Resolved(id, ikc, -)Create(id, ikc*, F)Resolved(id, ikc, -)KO, Already Resolved
95Resolved(id, ikc, -)Resolve(id, -, T)Resolved(id, ikc, -)KO, Already Resolved
96Resolved(id, ikc, -)Resolve(id, -, F)Resolved(id, ikc, -)KO, Already Resolved
97Resolved(id, ikc, -)Resolve(id, iku, T)Resolved(id, ikc, -)KO, Already Resolved
98Resolved(id, ikc, -)Resolve(id, iku, F)Resolved(id, ikc, -)KO, Already Resolved
99Resolved(id, ikc, -)Reject(id, -, T)Resolved(id, ikc, -)KO, Already Resolved
100Resolved(id, ikc, -)Reject(id, -, F)Resolved(id, ikc, -)KO, Already Resolved
101Resolved(id, ikc, -)Reject(id, iku, T)Resolved(id, ikc, -)KO, Already Resolved
102Resolved(id, ikc, -)Reject(id, iku, F)Resolved(id, ikc, -)KO, Already Resolved
103Resolved(id, ikc, -)Cancel(id, -, T)Resolved(id, ikc, -)KO, Already Resolved
104Resolved(id, ikc, -)Cancel(id, -, F)Resolved(id, ikc, -)KO, Already Resolved
105Resolved(id, ikc, -)Cancel(id, iku, T)Resolved(id, ikc, -)KO, Already Resolved
106Resolved(id, ikc, -)Cancel(id, iku, F)Resolved(id, ikc, -)KO, Already Resolved
107Resolved(id, ikc, iku)Create(id, -, T)Resolved(id, ikc, iku)KO, Already Resolved
108Resolved(id, ikc, iku)Create(id, -, F)Resolved(id, ikc, iku)KO, Already Resolved
109Resolved(id, ikc, iku)Create(id, ikc, T)Resolved(id, ikc, iku)KO, Already Resolved
110Resolved(id, ikc, iku)Create(id, ikc, F)Resolved(id, ikc, iku)OK, Deduplicated
111Resolved(id, ikc, iku)Create(id, ikc*, T)Resolved(id, ikc, iku)KO, Already Resolved
112Resolved(id, ikc, iku)Create(id, ikc*, F)Resolved(id, ikc, iku)KO, Already Resolved
113Resolved(id, ikc, iku)Resolve(id, -, T)Resolved(id, ikc, iku)KO, Already Resolved
114Resolved(id, ikc, iku)Resolve(id, -, F)Resolved(id, ikc, iku)KO, Already Resolved
115Resolved(id, ikc, iku)Resolve(id, iku, T)Resolved(id, ikc, iku)OK, Deduplicated
116Resolved(id, ikc, iku)Resolve(id, iku, F)Resolved(id, ikc, iku)OK, Deduplicated
117Resolved(id, ikc, iku)Resolve(id, iku*, T)Resolved(id, ikc, iku)KO, Already Resolved
118Resolved(id, ikc, iku)Resolve(id, iku*, F)Resolved(id, ikc, iku)KO, Already Resolved
119Resolved(id, ikc, iku)Reject(id, -, T)Resolved(id, ikc, iku)KO, Already Resolved
120Resolved(id, ikc, iku)Reject(id, -, F)Resolved(id, ikc, iku)KO, Already Resolved
121Resolved(id, ikc, iku)Reject(id, iku, T)Resolved(id, ikc, iku)KO, Already Resolved
122Resolved(id, ikc, iku)Reject(id, iku, F)Resolved(id, ikc, iku)OK, Deduplicated
123Resolved(id, ikc, iku)Reject(id, iku*, T)Resolved(id, ikc, iku)KO, Already Resolved
124Resolved(id, ikc, iku)Reject(id, iku*, F)Resolved(id, ikc, iku)KO, Already Resolved
125Resolved(id, ikc, iku)Cancel(id, -, T)Resolved(id, ikc, iku)KO, Already Resolved
126Resolved(id, ikc, iku)Cancel(id, -, F)Resolved(id, ikc, iku)KO, Already Resolved
127Resolved(id, ikc, iku)Cancel(id, iku, T)Resolved(id, ikc, iku)KO, Already Resolved
128Resolved(id, ikc, iku)Cancel(id, iku, F)Resolved(id, ikc, iku)OK, Deduplicated
129Resolved(id, ikc, iku)Cancel(id, iku*, T)Resolved(id, ikc, iku)KO, Already Resolved
130Resolved(id, ikc, iku)Cancel(id, iku*, F)Resolved(id, ikc, iku)KO, Already Resolved
131Rejected(id, -, -)Create(id, -, T)Rejected(id, -, -)KO, Already Rejected
132Rejected(id, -, -)Create(id, -, F)Rejected(id, -, -)KO, Already Rejected
133Rejected(id, -, -)Create(id, ikc, T)Rejected(id, -, -)KO, Already Rejected
134Rejected(id, -, -)Create(id, ikc, F)Rejected(id, -, -)KO, Already Rejected
135Rejected(id, -, -)Resolve(id, -, T)Rejected(id, -, -)KO, Already Rejected
136Rejected(id, -, -)Resolve(id, -, F)Rejected(id, -, -)KO, Already Rejected
137Rejected(id, -, -)Resolve(id, iku, T)Rejected(id, -, -)KO, Already Rejected
138Rejected(id, -, -)Resolve(id, iku, F)Rejected(id, -, -)KO, Already Rejected
139Rejected(id, -, -)Reject(id, -, T)Rejected(id, -, -)KO, Already Rejected
140Rejected(id, -, -)Reject(id, -, F)Rejected(id, -, -)KO, Already Rejected
141Rejected(id, -, -)Reject(id, iku, T)Rejected(id, -, -)KO, Already Rejected
142Rejected(id, -, -)Reject(id, iku, F)Rejected(id, -, -)KO, Already Rejected
143Rejected(id, -, -)Cancel(id, -, T)Rejected(id, -, -)KO, Already Rejected
144Rejected(id, -, -)Cancel(id, -, F)Rejected(id, -, -)KO, Already Rejected
145Rejected(id, -, -)Cancel(id, iku, T)Rejected(id, -, -)KO, Already Rejected
146Rejected(id, -, -)Cancel(id, iku, F)Rejected(id, -, -)KO, Already Rejected
147Rejected(id, -, iku)Create(id, -, T)Rejected(id, -, iku)KO, Already Rejected
148Rejected(id, -, iku)Create(id, -, F)Rejected(id, -, iku)KO, Already Rejected
149Rejected(id, -, iku)Create(id, ikc, T)Rejected(id, -, iku)KO, Already Rejected
150Rejected(id, -, iku)Create(id, ikc, F)Rejected(id, -, iku)KO, Already Rejected
151Rejected(id, -, iku)Resolve(id, -, T)Rejected(id, -, iku)KO, Already Rejected
152Rejected(id, -, iku)Resolve(id, -, F)Rejected(id, -, iku)KO, Already Rejected
153Rejected(id, -, iku)Resolve(id, iku, T)Rejected(id, -, iku)KO, Already Rejected
154Rejected(id, -, iku)Resolve(id, iku, F)Rejected(id, -, iku)OK, Deduplicated
155Rejected(id, -, iku)Resolve(id, iku*, T)Rejected(id, -, iku)KO, Already Rejected
156Rejected(id, -, iku)Resolve(id, iku*, F)Rejected(id, -, iku)KO, Already Rejected
157Rejected(id, -, iku)Reject(id, -, T)Rejected(id, -, iku)KO, Already Rejected
158Rejected(id, -, iku)Reject(id, -, F)Rejected(id, -, iku)KO, Already Rejected
159Rejected(id, -, iku)Reject(id, iku, T)Rejected(id, -, iku)OK, Deduplicated
160Rejected(id, -, iku)Reject(id, iku, F)Rejected(id, -, iku)OK, Deduplicated
161Rejected(id, -, iku)Reject(id, iku*, T)Rejected(id, -, iku)KO, Already Rejected
162Rejected(id, -, iku)Reject(id, iku*, F)Rejected(id, -, iku)KO, Already Rejected
163Rejected(id, -, iku)Cancel(id, -, T)Rejected(id, -, iku)KO, Already Rejected
164Rejected(id, -, iku)Cancel(id, -, F)Rejected(id, -, iku)KO, Already Rejected
165Rejected(id, -, iku)Cancel(id, iku, T)Rejected(id, -, iku)KO, Already Rejected
166Rejected(id, -, iku)Cancel(id, iku, F)Rejected(id, -, iku)OK, Deduplicated
167Rejected(id, -, iku)Cancel(id, iku*, T)Rejected(id, -, iku)KO, Already Rejected
168Rejected(id, -, iku)Cancel(id, iku*, F)Rejected(id, -, iku)KO, Already Rejected
169Rejected(id, ikc, -)Create(id, -, T)Rejected(id, ikc, -)KO, Already Rejected
170Rejected(id, ikc, -)Create(id, -, F)Rejected(id, ikc, -)KO, Already Rejected
171Rejected(id, ikc, -)Create(id, ikc, T)Rejected(id, ikc, -)KO, Already Rejected
172Rejected(id, ikc, -)Create(id, ikc, F)Rejected(id, ikc, -)OK, Deduplicated
173Rejected(id, ikc, -)Create(id, ikc*, T)Rejected(id, ikc, -)KO, Already Rejected
174Rejected(id, ikc, -)Create(id, ikc*, F)Rejected(id, ikc, -)KO, Already Rejected
175Rejected(id, ikc, -)Resolve(id, -, T)Rejected(id, ikc, -)KO, Already Rejected
176Rejected(id, ikc, -)Resolve(id, -, F)Rejected(id, ikc, -)KO, Already Rejected
177Rejected(id, ikc, -)Resolve(id, iku, T)Rejected(id, ikc, -)KO, Already Rejected
178Rejected(id, ikc, -)Resolve(id, iku, F)Rejected(id, ikc, -)KO, Already Rejected
179Rejected(id, ikc, -)Reject(id, -, T)Rejected(id, ikc, -)KO, Already Rejected
180Rejected(id, ikc, -)Reject(id, -, F)Rejected(id, ikc, -)KO, Already Rejected
181Rejected(id, ikc, -)Reject(id, iku, T)Rejected(id, ikc, -)KO, Already Rejected
182Rejected(id, ikc, -)Reject(id, iku, F)Rejected(id, ikc, -)KO, Already Rejected
183Rejected(id, ikc, -)Cancel(id, -, T)Rejected(id, ikc, -)KO, Already Rejected
184Rejected(id, ikc, -)Cancel(id, -, F)Rejected(id, ikc, -)KO, Already Rejected
185Rejected(id, ikc, -)Cancel(id, iku, T)Rejected(id, ikc, -)KO, Already Rejected
186Rejected(id, ikc, -)Cancel(id, iku, F)Rejected(id, ikc, -)KO, Already Rejected
187Rejected(id, ikc, iku)Create(id, -, T)Rejected(id, ikc, iku)KO, Already Rejected
188Rejected(id, ikc, iku)Create(id, -, F)Rejected(id, ikc, iku)KO, Already Rejected
189Rejected(id, ikc, iku)Create(id, ikc, T)Rejected(id, ikc, iku)KO, Already Rejected
190Rejected(id, ikc, iku)Create(id, ikc, F)Rejected(id, ikc, iku)OK, Deduplicated
191Rejected(id, ikc, iku)Create(id, ikc*, T)Rejected(id, ikc, iku)KO, Already Rejected
192Rejected(id, ikc, iku)Create(id, ikc*, F)Rejected(id, ikc, iku)KO, Already Rejected
193Rejected(id, ikc, iku)Resolve(id, -, T)Rejected(id, ikc, iku)KO, Already Rejected
194Rejected(id, ikc, iku)Resolve(id, -, F)Rejected(id, ikc, iku)KO, Already Rejected
195Rejected(id, ikc, iku)Resolve(id, iku, T)Rejected(id, ikc, iku)KO, Already Rejected
196Rejected(id, ikc, iku)Resolve(id, iku, F)Rejected(id, ikc, iku)OK, Deduplicated
197Rejected(id, ikc, iku)Resolve(id, iku*, T)Rejected(id, ikc, iku)KO, Already Rejected
198Rejected(id, ikc, iku)Resolve(id, iku*, F)Rejected(id, ikc, iku)KO, Already Rejected
199Rejected(id, ikc, iku)Reject(id, -, T)Rejected(id, ikc, iku)KO, Already Rejected
200Rejected(id, ikc, iku)Reject(id, -, F)Rejected(id, ikc, iku)KO, Already Rejected
201Rejected(id, ikc, iku)Reject(id, iku, T)Rejected(id, ikc, iku)OK, Deduplicated
202Rejected(id, ikc, iku)Reject(id, iku, F)Rejected(id, ikc, iku)OK, Deduplicated
203Rejected(id, ikc, iku)Reject(id, iku*, T)Rejected(id, ikc, iku)KO, Already Rejected
204Rejected(id, ikc, iku)Reject(id, iku*, F)Rejected(id, ikc, iku)KO, Already Rejected
205Rejected(id, ikc, iku)Cancel(id, -, T)Rejected(id, ikc, iku)KO, Already Rejected
206Rejected(id, ikc, iku)Cancel(id, -, F)Rejected(id, ikc, iku)KO, Already Rejected
207Rejected(id, ikc, iku)Cancel(id, iku, T)Rejected(id, ikc, iku)KO, Already Rejected
208Rejected(id, ikc, iku)Cancel(id, iku, F)Rejected(id, ikc, iku)OK, Deduplicated
209Rejected(id, ikc, iku)Cancel(id, iku*, T)Rejected(id, ikc, iku)KO, Already Rejected
210Rejected(id, ikc, iku)Cancel(id, iku*, F)Rejected(id, ikc, iku)KO, Already Rejected
211RejectedCanceled(id, -, -)Create(id, -, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
212RejectedCanceled(id, -, -)Create(id, -, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
213RejectedCanceled(id, -, -)Create(id, ikc, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
214RejectedCanceled(id, -, -)Create(id, ikc, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
215RejectedCanceled(id, -, -)Resolve(id, -, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
216RejectedCanceled(id, -, -)Resolve(id, -, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
217RejectedCanceled(id, -, -)Resolve(id, iku, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
218RejectedCanceled(id, -, -)Resolve(id, iku, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
219RejectedCanceled(id, -, -)Reject(id, -, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
220RejectedCanceled(id, -, -)Reject(id, -, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
221RejectedCanceled(id, -, -)Reject(id, iku, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
222RejectedCanceled(id, -, -)Reject(id, iku, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
223RejectedCanceled(id, -, -)Cancel(id, -, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
224RejectedCanceled(id, -, -)Cancel(id, -, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
225RejectedCanceled(id, -, -)Cancel(id, iku, T)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
226RejectedCanceled(id, -, -)Cancel(id, iku, F)RejectedCanceled(id, -, -)KO, Already RejectedCanceled
227RejectedCanceled(id, -, iku)Create(id, -, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
228RejectedCanceled(id, -, iku)Create(id, -, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
229RejectedCanceled(id, -, iku)Create(id, ikc, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
230RejectedCanceled(id, -, iku)Create(id, ikc, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
231RejectedCanceled(id, -, iku)Resolve(id, -, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
232RejectedCanceled(id, -, iku)Resolve(id, -, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
233RejectedCanceled(id, -, iku)Resolve(id, iku, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
234RejectedCanceled(id, -, iku)Resolve(id, iku, F)RejectedCanceled(id, -, iku)OK, Deduplicated
235RejectedCanceled(id, -, iku)Resolve(id, iku*, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
236RejectedCanceled(id, -, iku)Resolve(id, iku*, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
237RejectedCanceled(id, -, iku)Reject(id, -, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
238RejectedCanceled(id, -, iku)Reject(id, -, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
239RejectedCanceled(id, -, iku)Reject(id, iku, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
240RejectedCanceled(id, -, iku)Reject(id, iku, F)RejectedCanceled(id, -, iku)OK, Deduplicated
241RejectedCanceled(id, -, iku)Reject(id, iku*, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
242RejectedCanceled(id, -, iku)Reject(id, iku*, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
243RejectedCanceled(id, -, iku)Cancel(id, -, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
244RejectedCanceled(id, -, iku)Cancel(id, -, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
245RejectedCanceled(id, -, iku)Cancel(id, iku, T)RejectedCanceled(id, -, iku)OK, Deduplicated
246RejectedCanceled(id, -, iku)Cancel(id, iku, F)RejectedCanceled(id, -, iku)OK, Deduplicated
247RejectedCanceled(id, -, iku)Cancel(id, iku*, T)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
248RejectedCanceled(id, -, iku)Cancel(id, iku*, F)RejectedCanceled(id, -, iku)KO, Already RejectedCanceled
249RejectedCanceled(id, ikc, -)Create(id, -, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
250RejectedCanceled(id, ikc, -)Create(id, -, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
251RejectedCanceled(id, ikc, -)Create(id, ikc, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
252RejectedCanceled(id, ikc, -)Create(id, ikc, F)RejectedCanceled(id, ikc, -)OK, Deduplicated
253RejectedCanceled(id, ikc, -)Create(id, ikc*, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
254RejectedCanceled(id, ikc, -)Create(id, ikc*, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
255RejectedCanceled(id, ikc, -)Resolve(id, -, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
256RejectedCanceled(id, ikc, -)Resolve(id, -, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
257RejectedCanceled(id, ikc, -)Resolve(id, iku, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
258RejectedCanceled(id, ikc, -)Resolve(id, iku, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
259RejectedCanceled(id, ikc, -)Reject(id, -, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
260RejectedCanceled(id, ikc, -)Reject(id, -, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
261RejectedCanceled(id, ikc, -)Reject(id, iku, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
262RejectedCanceled(id, ikc, -)Reject(id, iku, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
263RejectedCanceled(id, ikc, -)Cancel(id, -, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
264RejectedCanceled(id, ikc, -)Cancel(id, -, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
265RejectedCanceled(id, ikc, -)Cancel(id, iku, T)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
266RejectedCanceled(id, ikc, -)Cancel(id, iku, F)RejectedCanceled(id, ikc, -)KO, Already RejectedCanceled
267RejectedCanceled(id, ikc, iku)Create(id, -, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
268RejectedCanceled(id, ikc, iku)Create(id, -, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
269RejectedCanceled(id, ikc, iku)Create(id, ikc, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
270RejectedCanceled(id, ikc, iku)Create(id, ikc, F)RejectedCanceled(id, ikc, iku)OK, Deduplicated
271RejectedCanceled(id, ikc, iku)Create(id, ikc*, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
272RejectedCanceled(id, ikc, iku)Create(id, ikc*, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
273RejectedCanceled(id, ikc, iku)Resolve(id, -, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
274RejectedCanceled(id, ikc, iku)Resolve(id, -, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
275RejectedCanceled(id, ikc, iku)Resolve(id, iku, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
276RejectedCanceled(id, ikc, iku)Resolve(id, iku, F)RejectedCanceled(id, ikc, iku)OK, Deduplicated
277RejectedCanceled(id, ikc, iku)Resolve(id, iku*, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
278RejectedCanceled(id, ikc, iku)Resolve(id, iku*, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
279RejectedCanceled(id, ikc, iku)Reject(id, -, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
280RejectedCanceled(id, ikc, iku)Reject(id, -, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
281RejectedCanceled(id, ikc, iku)Reject(id, iku, T)RejectedCanceled(id, ikc, iku)OK, Deduplicated
282RejectedCanceled(id, ikc, iku)Reject(id, iku, F)RejectedCanceled(id, ikc, iku)OK, Deduplicated
283RejectedCanceled(id, ikc, iku)Reject(id, iku*, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
284RejectedCanceled(id, ikc, iku)Reject(id, iku*, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
285RejectedCanceled(id, ikc, iku)Cancel(id, -, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
286RejectedCanceled(id, ikc, iku)Cancel(id, -, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
287RejectedCanceled(id, ikc, iku)Cancel(id, iku, T)RejectedCanceled(id, ikc, iku)OK, Deduplicated
288RejectedCanceled(id, ikc, iku)Cancel(id, iku, F)RejectedCanceled(id, ikc, iku)OK, Deduplicated
289RejectedCanceled(id, ikc, iku)Cancel(id, iku*, T)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
290RejectedCanceled(id, ikc, iku)Cancel(id, iku*, F)RejectedCanceled(id, ikc, iku)KO, Already RejectedCanceled
291RejectedTimedout(id, -, -)Create(id, -, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
292RejectedTimedout(id, -, -)Create(id, -, F)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
293RejectedTimedout(id, -, -)Create(id, ikc, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
294RejectedTimedout(id, -, -)Create(id, ikc, F)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
295RejectedTimedout(id, -, -)Resolve(id, -, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
296RejectedTimedout(id, -, -)Resolve(id, -, F)RejectedTimedout(id, -, -)OK, Deduplicated
297RejectedTimedout(id, -, -)Resolve(id, iku, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
298RejectedTimedout(id, -, -)Resolve(id, iku, F)RejectedTimedout(id, -, -)OK, Deduplicated
299RejectedTimedout(id, -, -)Reject(id, -, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
300RejectedTimedout(id, -, -)Reject(id, -, F)RejectedTimedout(id, -, -)OK, Deduplicated
301RejectedTimedout(id, -, -)Reject(id, iku, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
302RejectedTimedout(id, -, -)Reject(id, iku, F)RejectedTimedout(id, -, -)OK, Deduplicated
303RejectedTimedout(id, -, -)Cancel(id, -, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
304RejectedTimedout(id, -, -)Cancel(id, -, F)RejectedTimedout(id, -, -)OK, Deduplicated
305RejectedTimedout(id, -, -)Cancel(id, iku, T)RejectedTimedout(id, -, -)KO, Already RejectedTimedout
306RejectedTimedout(id, -, -)Cancel(id, iku, F)RejectedTimedout(id, -, -)OK, Deduplicated
307RejectedTimedout(id, ikc, -)Create(id, -, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
308RejectedTimedout(id, ikc, -)Create(id, -, F)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
309RejectedTimedout(id, ikc, -)Create(id, ikc, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
310RejectedTimedout(id, ikc, -)Create(id, ikc, F)RejectedTimedout(id, ikc, -)OK, Deduplicated
311RejectedTimedout(id, ikc, -)Create(id, ikc*, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
312RejectedTimedout(id, ikc, -)Create(id, ikc*, F)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
313RejectedTimedout(id, ikc, -)Resolve(id, -, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
314RejectedTimedout(id, ikc, -)Resolve(id, -, F)RejectedTimedout(id, ikc, -)OK, Deduplicated
315RejectedTimedout(id, ikc, -)Resolve(id, iku, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
316RejectedTimedout(id, ikc, -)Resolve(id, iku, F)RejectedTimedout(id, ikc, -)OK, Deduplicated
317RejectedTimedout(id, ikc, -)Reject(id, -, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
318RejectedTimedout(id, ikc, -)Reject(id, -, F)RejectedTimedout(id, ikc, -)OK, Deduplicated
319RejectedTimedout(id, ikc, -)Reject(id, iku, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
320RejectedTimedout(id, ikc, -)Reject(id, iku, F)RejectedTimedout(id, ikc, -)OK, Deduplicated
321RejectedTimedout(id, ikc, -)Cancel(id, -, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
322RejectedTimedout(id, ikc, -)Cancel(id, -, F)RejectedTimedout(id, ikc, -)OK, Deduplicated
323RejectedTimedout(id, ikc, -)Cancel(id, iku, T)RejectedTimedout(id, ikc, -)KO, Already RejectedTimedout
324RejectedTimedout(id, ikc, -)Cancel(id, iku, F)RejectedTimedout(id, ikc, -)OK, Deduplicated