gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-docs] branch master updated: more work on DD37 review


From: gnunet
Subject: [taler-docs] branch master updated: more work on DD37 review
Date: Sun, 09 Apr 2023 17:22:46 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository docs.

The following commit(s) were added to refs/heads/master by this push:
     new 9e148c4  more work on DD37 review
9e148c4 is described below

commit 9e148c42d940ddcfafe1394f0461d40bceabb008
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Apr 9 17:22:43 2023 +0200

    more work on DD37 review
---
 Makefile                                           |   4 +-
 .../037-wallet-transactions-lifecycle.rst          | 284 +++++++++++++++------
 transaction-common-states.dot                      |   2 +-
 transaction-deposit-states.dot                     |   4 +-
 transaction-payment-states.dot                     |   9 +-
 transaction-push-credit-states.dot                 |  75 ++++++
 transaction-refresh-states.dot                     |   5 +-
 transaction-refund-states.dot                      |  11 +-
 transaction-tip-states.dot                         |  32 +--
 transaction-withdrawal-states.dot                  |   4 +-
 10 files changed, 327 insertions(+), 103 deletions(-)

diff --git a/Makefile b/Makefile
index d2bd085..af89ca3 100644
--- a/Makefile
+++ b/Makefile
@@ -69,6 +69,8 @@ transaction-deposit-states.png: transaction-deposit-states.dot
        dot -Tpng transaction-deposit-states.dot > 
transaction-deposit-states.png
 transaction-push-debit-states.png: transaction-push-debit-states.dot
        dot -Tpng transaction-push-debit-states.dot > 
transaction-push-debit-states.png
+transaction-push-credit-states.png: transaction-push-credit-states.dot
+       dot -Tpng transaction-push-credit-states.dot > 
transaction-push-credit-states.png
 coin.png: coin.dot
        dot -Tpng coin.dot > coin.png
 deposit.png: deposit.dot
@@ -76,7 +78,7 @@ deposit.png: deposit.dot
 reserve.png: reserve.dot
        dot -Tpng reserve.dot > reserve.png
 
-diagrams: arch-api.png coin.png deposit.png reserve.png 
transaction-common-states.png transaction-withdrawal-states.png 
transaction-payment-states.png transaction-refund-states.png 
transaction-refresh-states.png transaction-tip-states.png 
transaction-deposit-states.png transaction-push-debit-states.png
+diagrams: arch-api.png coin.png deposit.png reserve.png 
transaction-common-states.png transaction-withdrawal-states.png 
transaction-payment-states.png transaction-refund-states.png 
transaction-refresh-states.png transaction-tip-states.png 
transaction-deposit-states.png transaction-push-debit-states.png 
transaction-push-credit-states.png
 
 
 # The html-linked builder does not support caching, so we
diff --git a/design-documents/037-wallet-transactions-lifecycle.rst 
b/design-documents/037-wallet-transactions-lifecycle.rst
index a08fe07..3242e69 100644
--- a/design-documents/037-wallet-transactions-lifecycle.rst
+++ b/design-documents/037-wallet-transactions-lifecycle.rst
@@ -56,7 +56,9 @@ include more information information relevant to the 
transaction in `abortReason
 ``suspended``: Similar to a ``aborted`` transaction, but the transaction was 
could be
 resumed and may then still succeed.
 
-``failed``: Similar to ``done``, but the transaction could not even be aborted 
properly.
+``failed``: Similar to ``done``, but the transaction could not even be aborted
+properly.  The user may have lost money. This is likely a case for a report to
+the auditor.
 
 ``deleted``: A ``deleted`` state is always a final state.  We only use this
 state for illustrative purposes. In the implementation, the data associated
@@ -68,13 +70,6 @@ Common Transitions
 
 Transitions are actions or other events.
 
-``[action:delete]``: Deleting a transaction
-completely deletes the transaction from the database.  Depending on the type of
-transaction, some of the other data *resulting* from the transaction might
-still survive deletion. For example, deleting a withdrawal transaction does not
-delete already successfully withdrawn coins. Deleting is only safe (no money 
lost)
-on initial and final states (failed, aborted, done).
-
 ``[action:retry]``: Retrying a transaction *(1.)* stops ongoing long-polling
 requests for the transaction *(2.)* resets the retry timeout *(3.)* re-runs the
 handler to process the transaction. Retries are always possible the following
@@ -96,11 +91,6 @@ states: ``pending(*)`` and ``aborting(*)``.
    retries should basically never be > 24h (we can impose a hard cap), the 
absolute
    time can just be in the format HH:MM:SS (without day).
 
-``[action:abort]``: Aborting a transaction either directly stops processing 
for the
-transaction and puts it in an ``aborted`` state, or starts the necessary steps 
to
-actively abort the transaction (e.g. to avoid losing money) and puts it in an
-``aborting`` state.
-
 ``[action:suspend]``: Suspends a pending transaction, stopping any associated
 network activities, but with a chance of trying again at a later time. This
 could be useful if a user needs to save battery power or bandwidth and an
@@ -110,22 +100,43 @@ withdrawal operation).
 ``[action:resume]``: Suspended transactions may be resumed, placing them back
 into a pending state.
 
-``[action:abort-force]``: Directly puts an ``aborting`` transaction into the
-``failed`` state.
+``[action:abort]``: Aborting a transaction either directly stops processing 
for the
+transaction and puts it in an ``aborted`` state, or starts the necessary steps 
to
+actively abort the transaction (e.g. to avoid losing money) and puts it in an
+``aborting`` state.
+
+``[action:force-abort]``: Directly puts an ``aborting`` transaction into a
+``failed`` state. May result in an ultimate loss of funds (beyond fees) to the
+user and thus requires additional consent.
 
+``[action:delete]``: Deleting a transaction completely deletes the transaction
+from the database.  Depending on the type of transaction, some of the other
+data *resulting* from the transaction might still survive deletion. For
+example, deleting a withdrawal transaction does not delete already
+successfully withdrawn coins. Deleting is only safe (no money lost) on initial
+and final states (failed, aborted, done).
 
-Whether aborting or resuming are possible depends on the transaction type, and
-usually only one of the two choices should be offered.
+``[action:force-delete]``: Directly puts a transaction into a ``deleted``
+state. May result in an ultimate loss of funds (beyond fees) to the user and
+thus requires additional consent.
+
+
+Whether aborting, deleting or suspending are possible depends on the
+transaction type, and usually only one of the three choices should be offered.
 
 
 .. image:: ../transaction-common-states.png
   :width: 400
 
 
-Boxed labels indicate an end state in which it is safe to delete the
-transaction record since no work is due.
+Boxed labels indicate an end state in which there is no network activity and
+hence no need to give the user a way to abort or suspend the activity.  The
+circle indicates the initial state.  Ovals are states with network activity.
 
-Blue arrows are used for user-triggered actions (via UI buttons).
+Blue arrows are used for user-triggered actions (via UI buttons).  Purple
+arrows are used to indicate externally triggered actions.  Black arrows
+without labels are used for the normal successful path.  Red arrows indicate
+failure paths.
 
 
 Common pending sub-states
@@ -135,18 +146,18 @@ During the pending state the transaction can go through 
several sub-states befor
 reaching a final state. Some of this sub-states are shared between different
 transaction types:
 
-``kyc-required``: The transaction can't proceed because the user needs to 
actively
-finish a KYC process. Part of a withdrawal process or peer-to-peer push credit.
-
-``aml-required``: The transaction can't proceed because the user needs to wait 
for
-the exchange operator to conclude an AML investigation by the staff at the 
exchange.
-The user is not expected to take any action and should just wait for the 
investigation
-to conclude. Part of a withdrawal process or peer-to-peer push credit.
+``kyc``: The transaction cannot proceed because the user needs to actively
+finish a KYC process.  The wallet should show the user a hint on how to
+start the KYC process.
 
-``aml-frozen``: The staff at the exchange decided that the account needed to 
be frozen.
-The user should contact the exchange provider's customer service department and
-seek resolution (possibly through the courts) to avoid loosing the funds for 
good.
-Part of a withdrawal process or peer-to-peer push credit.
+``aml``: The transaction can't proceed because the user needs to wait for the
+exchange operator to conclude an AML investigation by the staff at the
+exchange.  There are two AML substates. In the substate ``pending`` the user
+is not expected to take any action and should just wait for the investigation
+to conclude. In the substate ``frozen`` the staff at the exchange decided that
+the account needed to be frozen.  The user should contact the exchange
+provider's customer service department and seek resolution (possibly through
+the courts) to avoid loosing the funds for good.
 
 
 Transaction Type: Withdrawal
@@ -193,15 +204,19 @@ Transaction Type: Withdrawal
   ``suspended(after-wired)`` (treating the ``abort`` action as a ``suspend``
   action).
 
-  * ``[processed-success] => deleted``: We show a transient message that the 
operation was aborted.
-  * ``[processed-error(already-confirmed)] => suspended(after-wired)``: We 
keep a transaction history entry reminding the user about when the already 
wired funds will be returned.
+  * ``[processed-success] => deleted``: We show a transient message that the
+    operation was aborted.
+  * ``[processed-error(already-confirmed)] => suspended(after-wired)``: We
+    keep a transaction history entry reminding the user about when the already
+    wired funds will be returned.
   * ``[processed-error(unknown-transaction)] => deleted``
 
 * ``suspended(after-wired)``
 
-  In this state, the wallet should show to the user that the money from the 
withdrawal
-  reserve will be sent back to the originating bank account after 
``$closing_delay``.
-  Note that the ``resume`` action should be disabled after ``$closing_delay``.
+  In this state, the wallet should show to the user that the money from the
+  withdrawal reserve will be sent back to the originating bank account after
+  ``$closing_delay``.  Note that the ``resume`` action should be disabled
+  after ``$closing_delay``.
 
   * ``[action:delete] => deleted``
   * ``[action:resume] => pending(exchange-wait-reserve)``
@@ -369,22 +384,31 @@ Transaction Type: Payment to Merchant
   is active.  If auto refunds are not enabled, we immediately continue to
   ``done``.
 
-  * ``[timeout] => done`` -- This happens when the auto refund set by the 
contract expired.
-  * ``[action:abort] => done`` -- The user may explicitly request to abort the 
auto-refund processing (for example to enable subsequent deletion before the 
auto-refund delay expires).
+  * ``[timeout] => done`` -- This happens when the auto refund set by the
+    contract expired.
+  * ``[long-poll:refund] => aborting(refund)`` -- An auto-refund was detected.
+  * ``[action:abort] => done`` -- The user may explicitly request to abort the
+    auto-refund processing (for example to enable subsequent deletion before
+    the auto-refund delay expires).
 
 * ``aborting(refund)``
 
   The wallet should interact with the merchant to confirm that a refund
   was approved.
 
-  * ``[success] => aborted(refunded)``
-  * ``[failure] => aborting(refresh)``
+  * ``[success] => aborting(refresh)``
+  * ``[failure] => aborting(refresh)``: Try refresh anyway.
+  * ``[action:force-delete] => deleted``: User may loose money.
 
 * ``aborting(refresh)``
 
   The wallet should interact with the exchange to obtain fresh coins for
   the refunded balance.
 
+  * ``[success] => aborted(refunded)``
+  * ``[failure] => failed``
+  * ``[action:force-delete] => deleted``: User may loose money.
+
 * ``aborted(refunded)``
 
   The purchase ended with a (partial) refund. The state (and UI) should show
@@ -392,8 +416,6 @@ Transaction Type: Payment to Merchant
   balance (due to double-spending being detected during payment), and one or
   more partial or full refunds.
 
-  * ``[URI:refund] => aborting(refund)`` -- The previous refund was partial,
-    and we have received an additional refund for this transaction.
   * ``[action:delete] => deleted``
 
 * ``done``
@@ -401,46 +423,49 @@ Transaction Type: Payment to Merchant
   The purchase is completed.
 
   * ``[action:delete] => deleted``
-  * ``[repurchase] => pending(repurchase-session-reset)`` -- Another offer 
became pending for this product.
+  * ``[repurchase] => pending(repurchase-session-reset)``: Another offer
+    became pending for this product and we need to update the session so
+    that the user does not have to buy it again.
 
 * ``pending(repurchase-session-reset)``
 
-  The wallet should reset the associated session for the already purchased 
item.
+  The wallet should reset the associated session for the already purchased
+  (digital) item.
 
   * ``[success] => done``
   * ``[action:abort] => done`` -- User aborted the session reset.
 
 * ``deleted``
 
-  When a payment is deleted, associated refunds are always deleted with it.
+  When a payment is deleted, associated refund transactions are always deleted
+  with it.
 
 .. image:: ../transaction-payment-states.png
   :width: 800
 
-Purple arrows are used to indicate transitions triggered in special ways 
outside
-of the user interface for this transaction, such as side-effects of repurchase
-detection for another purchase or opening of a refund URI.
-
 
 Transaction Type: Refund
 ------------------------
 
-A refund is a pseudo-transaction that is always associated with a merchant 
payment transaction.
+A refund is a pseudo-transaction that is always associated with a merchant
+payment transaction.
 
 * ``pending(lookup-refund)``
 
-  We received a ``refund`` URI. Download refund details (like the amount) from 
the merchant.  If the merchant responds with a permanent failure, we only show 
a transient warning and delete the transaction.
+  We received a ``refund`` URI. Download refund details (like the amount) from
+  the merchant.  If the merchant responds with a permanent failure, we only
+  show a transient warning and delete the transaction.
 
   * ``[success] => pending(user-accept)``
   * ``[action:suspend] => suspended(lookup-refund)``
-  * ``[failure] => deleted``
+  * ``[failure] => deleted``: A transient warning is shown to the user about 
the failure.
 
 * ``suspended(lookup-refund)``
 
   The user suspended while we were looking up the refund details. Allow 
resuming or permanent deletion.
 
   * ``[action:resume] => pending(lookup-refund)``
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``: Refund funds will be lost to the 
user.
 
 * ``pending(user-accept)``
 
@@ -457,6 +482,13 @@ A refund is a pseudo-transaction that is always associated 
with a merchant payme
   * ``[processed-success] => pending(refresh)``
   * ``[processed-error] => failed``: we received a permanent failure (such as 
money already wired to the merchant)
 
+* ``suspended(merchant)``
+
+  Refund processing was suspended while waiting for the merchant.
+
+  * ``[action:resume] => pending(merchant)``
+  * ``[action:force-delete] => deleted``
+
 * ``pending(refresh)``
 
   The wallet is now refreshing the coins.
@@ -465,6 +497,12 @@ A refund is a pseudo-transaction that is always associated 
with a merchant payme
   * ``[action:suspend] => suspended(refresh)``
   * ``[processed-error] => failed``: we received a permanent failure.
 
+* ``suspended(refresh)``
+
+  Refund processing was suspended while waiting for the refresh to complete.
+
+  * ``[action:resume] => pending(refresh)``
+  * ``[action:force-delete] => deleted``
 
 * ``failed``
 
@@ -497,13 +535,14 @@ the same as if the double-spending transaction had been 
deleted by the user.
 
   * ``[processed-success] => done``
   * ``[action:suspend] => suspended``
+  * ``[failed] => failed``
 
 * ``suspended``
 
   A refresh operation was suspended by the user.
 
   * ``[action:resume] => pending``
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``
 
 * ``done``
 
@@ -511,6 +550,12 @@ the same as if the double-spending transaction had been 
deleted by the user.
 
   * ``[action:delete] => deleted``
 
+* ``failed``
+
+  The refresh operation failed. The user lost funds.
+
+  * ``[action:delete] => deleted``
+
 * ``deleted``
 
   All memory of the refresh operation is lost, but of course the resulting
@@ -536,7 +581,7 @@ Transaction Type: Tip
 
   The user suspended the operation to download the tip data.
 
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``
   * ``[action:resume] => pending(query)``
 
 * ``pending(user)``
@@ -546,7 +591,7 @@ Transaction Type: Tip
 
   * ``[tip-expired] => failed``
   * ``[action:accept] => pending(pickup)``
-  * ``[action:abort] => deleted``
+  * ``[action:force-delete] => deleted``
 
 * ``pending(pickup)``
 
@@ -561,7 +606,7 @@ Transaction Type: Tip
 
   The user suspended the operation while the tip was being picked up.
 
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``
   * ``[tip-expired] => failed``
   * ``[action:resume] => pending(pickup)``
 
@@ -579,7 +624,7 @@ Transaction Type: Tip
   the tip expires, as the wallet balance threshold KYC likely applies even
   without the tip.
 
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``
   * ``[action:resume] => pending(kyc)``
 
 * ``done``
@@ -641,7 +686,7 @@ Transaction Type: Deposit
   The user suspended us while we were trying to get a refund.
 
   * ``[action:resume] => aborting(refund)``
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``
 
 * ``aborting(refresh)``
 
@@ -654,7 +699,7 @@ Transaction Type: Deposit
   The user suspended us while we were trying to do the refresh.
 
   * ``[action:resume] => aborting(refresh)``
-  * ``[action:delete] => deleted``
+  * ``[action:force-delete] => deleted``
 
 * ``aborted``
 
@@ -725,6 +770,7 @@ States and transitions:
 
   * ``[processed-success] => aborting(refresh)``: After the refund, we still 
need to refresh the coins.
   * ``[processed-failure] => aborting(refresh)``: The refund failed, we still 
try to refresh the coins.
+  * ``[action:abort-force] => failed``: The user explicitly asked us to give 
up and accepted the possible loss of funds.
 
 * ``aborting(refresh)``
 
@@ -761,7 +807,7 @@ States and transitions:
   All memory of the push debit operation is lost.
 
 .. image:: ../transaction-push-debit-states.png
-  :width: 400
+  :width: 600
 
 
 Transaction Type: Peer Push Credit
@@ -772,34 +818,124 @@ a ``taler://pay-push`` URI.
 
 States and transitions:
 
-* ``initial``
+* ``pending(download)``
 
-  Wallet read the taler:// URI and the transaction was initialized
+  Wallet read the taler:// URI and is downloading the contract details for the 
user.
 
-  * ``[processed-success] => pending(withdrawing)``: Merging the reserve was 
successful
+  * ``[processed-success] => pending(user)``: Contract can be shown to the 
user.
+  * ``[action:suspend] => suspended(download)``: User suspended the operation.
 
-* ``pending(withdrawing-coins)``
+* ``suspended(download)``
 
-  * ``[processed-kyc-required] => pending(kyc-required)``
+  The download of the purse meta data was suspended by the user.
 
-* ``pending(kyc-required)``
+  * ``[action:resume] => pending(download)``
+  * ``[action:force-delete] => deleted``
+
+* ``pending(user)``
+
+  User needs to decide about accepting the money.
+
+  * ``[action:accept] => pending(merge)``
+  * ``[action:force-delete] => deleted``
+  * ``[timeout] => failed``: User took too long to decide.
+
+* ``pending(merge)``
+
+  * ``[processed-success] => pending(withdraw)``: Merging the reserve was 
successful.
+  * ``[kyc-required] => pending(merge-kyc)``: User must pass KYC checks before 
the purse can be merged.
+  * ``[timeout] => failed``: The purse expired before we could complete the 
merge.
+  * ``[failure] => failed``: The merge failed permanently.
+  * FIXME(CG): do we want to allow suspending here?
+
+* ``pending(merge-kyc)``
+
+  We cannot merge the purse until passing a KYC check.
+  The user is shown a hint where to begin the KYC
+  process and the wallet long-polls on the KYC status.
+
+  * ``[poll-success] => pending(withdraw)``
+  * ``[action:suspend] => suspended(kyc)``
+  * ``[timeout] => failed``: The purse expired before we could complete the 
merge.
+
+* ``suspended(merge-kyc)``
+
+  We cannot merge the purse until passing a KYC check,
+  and that check was suspended by the user.
+
+  * ``[action:resume] => pending(kyc)``
+  * ``[action:force-delete] => deleted``
+  * ``[timeout] => failed``: The purse expired before we could complete the 
merge.
+
+* ``pending(withdraw)``
+
+  The wallet is withdrawing coins from the reserve that was filled by merging
+  the purse.
+
+  * ``[kyc-required] => pending(withdraw-kyc)``
+  * ``[aml-required] => pending(withdraw-aml)``
+  * ``[withdraw-failure] => failed``
+  * ``[withdraw-success] => done``
+  * ``[action:suspend] => suspended(withdraw)``
+
+* ``suspended(withdraw)``
+
+  The user requested the withdraw operation to be suspended.
+
+  * ``[action:resume] => pending(withdraw)``
+  * ``[action:force-delete] => deleted``: Money is lost.
+
+* ``pending(withdraw-kyc)``
+
+  We cannot withdraw more coins until passing a KYC check.
+  The user is shown a hint where to begin the KYC
+  process and the wallet long-polls on the KYC status.
 
   * ``[poll-success] => pending(withdrawing-coins)``
-  * ``[action:abort] => aborted``: The user will lose the coins they were not 
able to withdraw yet, unless they
-    resume the transaction again. Exchange should return non-withdrawn coins 
discounting closing fee.
+  * ``[action:suspend] => suspended(withdraw-kyc)``
 
-* ``aborted``
+* ``suspended(withdraw-kyc)``
+
+  We cannot withdraw from the reserve until passing a KYC check,
+  and that check was suspended by the user.
+
+  * ``[action:resume] => pending(withdraw-kyc)``
+  * ``[action:force-delete] => deleted``: Money is lost.
+
+* ``pending(withdraw-aml)``
 
-  * ``[action:resume] => pending(withdrawing-coins)``
-(??) this is not possible since aborted is final
+  We cannot withdraw more coins until AML rules are satisfied.
+  The user is shown a hint as to the AML status (pending or frozen).
 
-  * ``[action:delete] => deleted``: The user will irrevocable lose coins that 
were not withdrawn from the reserve yet.
-(??) no, i think aborting a push-credit should return to the sender, like a 
refund
+  * ``[poll-success] => pending(withdrawing-coins)``
+  * ``[action:suspend] => suspended(withdraw-aml)``
+
+* ``suspended(withdraw-aml)``
+
+  We cannot withdraw from the reserve until AML rules are satisfied,
+  and the status check was suspended by the user.
+
+  * ``[action:resume] => pending(withdraw-aml)``
+  * ``[action:delete] => deleted``
+
+* ``failed``
+
+  The operation failed. Details are shown to the user. The money from the 
purse eventually goes to the sender (or some other wallet that merged it).
+
+  * ``[action:delete] => deleted``
 
 * ``done``
 
+  The operation succeeded.
+
   * ``[action:delete] => deleted``: No money will be lost, the withdrawn coins 
will be kept
 
+* ``deleted``
+
+  All memory of the push credit operation is lost.
+
+.. image:: ../transaction-push-credit-states.png
+  :width: 600
 
 
 Transaction Type: Peer Pull Credit
diff --git a/transaction-common-states.dot b/transaction-common-states.dot
index 890cc23..3cbee21 100644
--- a/transaction-common-states.dot
+++ b/transaction-common-states.dot
@@ -6,7 +6,7 @@ digraph G {
   aborted[label="aborted", shape="box"];
   aborting[label="aborting"];
   failed[label="failed", shape="box"];
-  suspended[label="suspended"];
+  suspended[label="suspended", shape="box"];
 
   subgraph {
     rank = same; pending;suspended;
diff --git a/transaction-deposit-states.dot b/transaction-deposit-states.dot
index 5353cf3..73c2a09 100644
--- a/transaction-deposit-states.dot
+++ b/transaction-deposit-states.dot
@@ -27,8 +27,8 @@ digraph G {
 
   suspended_abort_refund->aborting_refund [color="blue", label="resume"];
   suspended_abort_refresh->aborting_refresh [color="blue", label="resume"];
-  suspended_abort_refund->deleted [color="blue", label="delete"];
-  suspended_abort_refresh->deleted [color="blue", label="delete"];
+  suspended_abort_refund->deleted [color="blue", label="force-delete"];
+  suspended_abort_refresh->deleted [color="blue", label="force-delete"];
 
 
   suspended_deposit->pending_deposit [color="blue", label="resume"];
diff --git a/transaction-payment-states.dot b/transaction-payment-states.dot
index 9dbecae..a884f36 100644
--- a/transaction-payment-states.dot
+++ b/transaction-payment-states.dot
@@ -1,8 +1,8 @@
 digraph G {
 
   initial[label="", shape="circle"];
+  pending_pr[label="pending(proposed)", shape="box"];
   pending_dp[label="pending(claim-proposal)"];
-  pending_pr[label="pending(proposed)"];
   pending_sp[label="pending(submit-payment)"];
   pending_rf[label="pending(refundable)"];
   pending_re[label="pending(repurchase-session-reset)"];
@@ -10,6 +10,7 @@ digraph G {
   aborting_refund[label="aborting(refund)"];
   aborting_refresh[label="aborting(refresh)"];
   aborted_refund[label="aborted(refunded)", shape="box"];
+  failed[label="failed", shape="box"];
   done[label="done", shape="box"];
   deleted[label="deleted", shape="box"];
 
@@ -30,12 +31,16 @@ digraph G {
   pending_sp->aborting_refund [color="blue", label="abort"];  
pending_sp->aborting_refund [color="red", label="insufficient balance"];
   pending_rf->aborting_refund [label="long-poll:refund"];
   aborting_refund->aborting_refresh;
-  aborting_refund->aborted_refund [color="red", label="failure"];
+  aborting_refund->deleted [color="blue", label="force-delete"];
+  aborting_refund->aborting_refresh [color="red", label="failure"];
+  aborting_refresh->failed [color="red", label="failure"];
   aborting_refresh->aborted_refund;
+  aborting_refresh->deleted [color="blue", label="force-delete"];
   aborted_refund->deleted [color="blue", label="delete"];
   pending_rf->done [label="timeout"];
   pending_rf->done [color="blue", label="abort"];
   aborting_unclaim->deleted;
+  failed->deleted [color="blue", label="delete"];
   done->deleted [color="blue", xlabel="delete"];
   done->pending_re [color="purple", label="repurchase"];
   pending_re->done [color="blue", label="abort"];
diff --git a/transaction-push-credit-states.dot 
b/transaction-push-credit-states.dot
new file mode 100644
index 0000000..4110699
--- /dev/null
+++ b/transaction-push-credit-states.dot
@@ -0,0 +1,75 @@
+digraph G {
+
+  initial[label="", shape="circle"];
+  pending_download[label="pending(download)"];
+  suspended_download[label="suspended(download)", shape="box"];
+  pending_user[label="pending(user)", shape="box"];
+  pending_merge[label="pending(merge)"];
+  pending_merge_kyc[label="pending(merge-kyc)"];
+  suspended_merge_kyc[label="suspended(merge-kyc)", shape="box"];
+  pending_withdraw[label="pending(withdraw)"];
+  suspended_withdraw[label="suspended(withdraw)", shape="box"];
+  pending_withdraw_kyc[label="pending(withdraw-kyc)"];
+  suspended_withdraw_kyc[label="suspended(withdraw-kyc)", shape="box"];
+  pending_withdraw_aml[label="pending(withdraw-aml)"];
+  suspended_withdraw_aml[label="suspended(withdraw-aml)", shape="box"];
+
+  failed[label="failed", shape="box"];
+  done[label="done", shape="box"];
+  deleted[label="deleted", shape="box"];
+
+  subgraph {
+    rank = same; pending_withdraw; failed;
+  }
+
+  initial->pending_download [color="blue", label="URI trigger"];
+
+  pending_download->suspended_download [color="blue", label="suspend"];
+  pending_download->pending_user;
+
+  suspended_download->pending_download [color="blue", label="resume"];
+  suspended_download->deleted [color="blue", label="force-delete"];
+
+  pending_user->pending_merge [color="blue", label="accept"];
+  pending_user->deleted [color="blue", label="force-delete"];
+  pending_user->failed [label="timeout"];
+
+  pending_merge->pending_withdraw;
+  pending_merge->pending_merge_kyc [label="kyc-required"];
+  pending_merge->failed [label="timeout"];
+  pending_merge->failed [color="red", label="failure"];
+
+  pending_merge_kyc->pending_merge [color="purple", label="poll-success"];
+  pending_merge_kyc->suspended_merge_kyc [color="blue", label="suspend"];
+  pending_merge_kyc->failed [label="timeout"];
+
+  suspended_merge_kyc->pending_merge_kyc [color="blue", label="resume"];
+  suspended_merge_kyc->deleted [color="blue", label="force-delete"];
+  suspended_merge_kyc->failed [label="timeout"];
+
+  pending_withdraw->pending_withdraw_kyc [label="kyc-required"];
+  pending_withdraw->pending_withdraw_aml [label="aml-required"];
+  pending_withdraw->done;
+  pending_withdraw->suspended_withdraw [color="blue", label="suspend"];
+  pending_withdraw->failed [color="red", label="failure"];
+
+  suspended_withdraw->pending_withdraw [color="blue", label="resume"];
+  suspended_withdraw->deleted [color="blue", label="force-delete"];
+
+
+  pending_withdraw_kyc->suspended_withdraw_kyc [color="blue", label="suspend"];
+  pending_withdraw_kyc->pending_withdraw [color="purple", 
label="poll-success"];
+
+  suspended_withdraw_kyc->pending_withdraw_kyc [color="blue", label="resume"];
+  suspended_withdraw_kyc->deleted [color="blue", label="force-delete"];
+
+  pending_withdraw_aml->suspended_withdraw_aml [color="blue", label="suspend"];
+  pending_withdraw_aml->pending_withdraw [color="purple", 
label="poll-success"];
+
+  suspended_withdraw_aml->pending_withdraw_aml [color="blue", label="resume"];
+  suspended_withdraw_aml->deleted [color="blue", label="force-delete"];
+
+  failed->deleted [color="blue", label="delete"];
+  done->deleted [color="blue", label="delete"];
+
+}
diff --git a/transaction-refresh-states.dot b/transaction-refresh-states.dot
index 1296e4b..ab0462b 100644
--- a/transaction-refresh-states.dot
+++ b/transaction-refresh-states.dot
@@ -4,16 +4,19 @@ digraph G {
   pending[label="pending"];
   suspended[label="suspended", shape="box"];
   done[label="done", shape="box"];
+  failed[label="failed", shape="box"];
   deleted[label="deleted", shape="box"];
 
   initial->pending [color="blue", label="trigger"];
 
   pending->done;
   pending->suspended [color="blue", label="suspend"];
+  pending->failed [color="red", label="failure"];
 
   suspended->pending [color="blue", label="resume"];
-  suspended->deleted [color="blue", label="delete"];
+  suspended->deleted [color="blue", label="force-delete"];
 
+  failed->deleted [color="blue", label="delete"];
   done->deleted [color="blue", label="delete"];
 
 }
diff --git a/transaction-refund-states.dot b/transaction-refund-states.dot
index cde8dbd..8bd9ce6 100644
--- a/transaction-refund-states.dot
+++ b/transaction-refund-states.dot
@@ -2,7 +2,7 @@ digraph G {
 
   initial[label="", shape="circle"];
   pending_in[label="pending(lookup-refund)"];
-  pending_ar[label="pending(user-accept)"];
+  pending_ar[label="pending(user-accept)", shape="box"];
   pending_me[label="pending(merchant)"];
   pending_re[label="pending(refresh)"];
   suspended_in[label="suspended(lookup-refund)", shape="box"];
@@ -23,26 +23,27 @@ digraph G {
 
   pending_in->pending_ar;
   pending_in->suspended_in [color="blue", label="suspend"];
+  pending_in->deleted [color="red", label="failure"];
 
   suspended_in->pending_in [color="blue", label="resume"];
-  suspended_in->deleted [color="blue", label="delete"];
+  suspended_in->deleted [color="blue", label="force-delete"];
 
   pending_ar->pending_me [color="blue", label="accept"];
-  pending_ar->deleted [color="blue", label="delete"];
+  pending_ar->deleted [color="blue", label="force-delete"];
 
   pending_me->pending_re;
   pending_me->suspended_me [color="blue", label="suspend"];
   pending_me->failed [color="red", label="failure"];
 
   suspended_me->pending_me [color="blue", label="resume"];
-  suspended_me->deleted [color="blue", label="delete"];
+  suspended_me->deleted [color="blue", label="force-delete"];
 
   pending_re->suspended_re [color="blue", label="suspend"];
   pending_re->done;
   pending_re->failed [color="red", label="failure"];
 
   suspended_re->pending_re [color="blue", label="resume"];
-  suspended_re->deleted [color="blue", label="delete"];
+  suspended_re->deleted [color="blue", label="force-delete"];
 
   done->deleted [color="blue", label="delete"];
 
diff --git a/transaction-tip-states.dot b/transaction-tip-states.dot
index 335ee81..9bf5e87 100644
--- a/transaction-tip-states.dot
+++ b/transaction-tip-states.dot
@@ -15,29 +15,31 @@ digraph G {
   initial->pending_query [color="blue", label="URI trigger"];
 
   pending_query->pending_user;
-  pending_user->pending_pickup [color="blue", label="accept"];
-  pending_pickup->pending_kyc;
   pending_query->suspended_query [color="blue", label="suspend"];
-  pending_pickup->suspended_pickup [color="blue", label="suspend"];
-  pending_kyc->suspended_kyc [color="blue", label="suspend"];
+  pending_query->deleted [color="red", label="failure"];
 
-  pending_kyc->pending_pickup [color="purple", label="kyc"];
+  suspended_query->pending_query [color="blue", label="resume"];
+  suspended_query->deleted [color="blue", label="force-delete"];
 
+  pending_user->pending_pickup [color="blue", label="accept"];
+  pending_user->deleted [color="blue", label="force-delete"];
+  pending_user->failed [label="expired"];
 
+  pending_pickup->pending_kyc [label="kyc required"];
+  pending_pickup->suspended_pickup [color="blue", label="suspend"];
   pending_pickup->done;
+  pending_pickup->failed [color="red", label="failure"];
 
-  suspended_query->pending_query [color="blue", label="resume"];
   suspended_pickup->pending_pickup [color="blue", label="resume"];
-  suspended_kyc->pending_kyc [color="blue", label="resume"];
-
-  suspended_query->deleted [color="blue", label="delete"];
-  suspended_pickup->deleted [color="blue", label="delete"];
-  suspended_kyc->deleted [color="blue", label="delete"];
-  pending_user->deleted [color="blue", label="abort"];
-  pending_user->failed [color="red", label="expired"];
   suspended_pickup->failed [color="red", label="expired"];
-  pending_pickup->failed [color="red", label="failure"];
-  pending_query->deleted [color="red", label="failure"];
+  suspended_pickup->deleted [color="blue", label="force-delete"];
+
+  pending_kyc->suspended_kyc [color="blue", label="suspend"];
+
+  pending_kyc->pending_pickup [color="purple", label="long-poll:kyc"];
+
+  suspended_kyc->pending_kyc [color="blue", label="resume"];
+  suspended_kyc->deleted [color="blue", label="force-delete"];
 
   done->deleted [color="blue", label="delete"];
   failed->deleted [color="blue", label="delete"];
diff --git a/transaction-withdrawal-states.dot 
b/transaction-withdrawal-states.dot
index 2aeffbd..95c8fda 100644
--- a/transaction-withdrawal-states.dot
+++ b/transaction-withdrawal-states.dot
@@ -41,8 +41,8 @@ digraph G {
   pending_ewr->pending_wc [label="exchange-poll:\nreserve ready"];
   pending_wc->pending_kyc;
   pending_wc->pending_aml;
-  pending_kyc->pending_wc [color="blue",label="kyc"];
-  pending_aml->pending_wc [color="purple",label="approve"];
+  pending_kyc->pending_wc [color="purple",label="long-poll:kyc"];
+  pending_aml->pending_wc [color="purple",label="long-poll:approve"];
   pending_kyc->suspended_kyc [color="blue", label="suspend"];
   pending_aml->suspended_aml [color="blue", label="suspend"];
   suspended_aml->pending_aml [color="blue", label="resume"];

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]