Durable Promise Specification

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

Scope: Lean-modeled core vs. extended surface

This page specifies the full durable promise contract, including surface the Lean 4 abstract machine (resonatehq/resonate-specification) does not model: the ikc/iku idempotency keys, the strict flag, and the state-transition table built on them. That extended surface comes from the legacy durable-promise contract and is implemented by the reference server. Where this page and the Lean model overlap and disagree, the Lean model wins.

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#

code
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