summaryrefslogtreecommitdiff
path: root/design-documents/055-wallet-problem-report.rst
diff options
context:
space:
mode:
Diffstat (limited to 'design-documents/055-wallet-problem-report.rst')
-rw-r--r--design-documents/055-wallet-problem-report.rst114
1 files changed, 114 insertions, 0 deletions
diff --git a/design-documents/055-wallet-problem-report.rst b/design-documents/055-wallet-problem-report.rst
new file mode 100644
index 00000000..2fd7a221
--- /dev/null
+++ b/design-documents/055-wallet-problem-report.rst
@@ -0,0 +1,114 @@
+DD 55: Wallet Problem Reports
+#############################
+
+.. note::
+
+ **Status**: Early work in progress / DD number reservation.
+
+.. warning::
+
+ We concluded that we don't need the problem reports feature right now,
+ as all cases we care about are already covered by something else.
+
+Summary
+=======
+
+This design document specifies global error reports generated/managed by wallet-core
+and rendered by the wallet UIs.
+
+Motivation
+==========
+
+Sometimes the wallet encounters issues that go beyond the scope of single transaction.
+
+Requirements
+============
+
+* problem reports must have a clear lifecycle
+* problem reports must have some type of identification that allows to
+ easily find out if a new problem report needs to be created when an
+ error happens or whether an existing one has been created
+
+Proposed Solution
+=================
+
+Report identification
+---------------------
+
+The report identifier serves multiple purposes:
+
+1. Usage as a reference in wallet-core APIs
+2. De-duplication. The report ID should allow easy identification of an already existing report for a particular problem.
+
+New wallet-core requests
+------------------------
+
+* ``listProblemReports``
+* ``acknowledgeProblemReport``: Mark a problem report as read.
+* ``deleteProblemReport``: Delete the problem report.
+
+New wallet-core notification type
+---------------------------------
+
+* ``problem-report`` to notify clients about status changes or an error report
+ (including creation!)
+
+
+Types of reports
+----------------
+
+(Currently we don't have any good examples where this is actually needed.)
+
+Examples of what should NOT be a report
+---------------------------------------
+
+* money lost due to the exchange stopping to offer a denomination
+
+ * => Should be a transactions item
+
+* money locked behind a (long) pending refresh
+
+ * => Should be a pending transaction
+
+* money lost due to a permanently failing refresh
+
+ * => pending or final transaction item
+
+* money lost due to expired denominations (auto-refresh wasn't done fast enough)
+
+ * => transaction item
+
+* a denomination changed its info (expiration, fees)
+
+ * => exchange entry state
+
+* Important information about the exchange changed (master pub, accounts, keys)
+
+ => exchange entry state
+
+
+Definition of Done
+==================
+
+TBD.
+
+Alternatives
+============
+
+* Report problems with an API specific to each resource (exchange entry, transaction, ...)
+* Have an *alerts* API that returns alerts to the client that the client can show to to the user,
+ but that a user can't interact with.
+
+Drawbacks
+=========
+
+TBD.
+
+Discussion / Q&A
+================
+
+* When is a report amended vs a new report created?
+
+ * example: Exchange stops offering denomination D1. Later, it stops offering D2.
+ Are two reports generated or is the first report changed?
+