diff options
Diffstat (limited to 'design-documents/055-wallet-problem-report.rst')
-rw-r--r-- | design-documents/055-wallet-problem-report.rst | 114 |
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? + |