summaryrefslogtreecommitdiff
path: root/design-documents/055-wallet-problem-report.rst
blob: 2fd7a2211db0352253e13cb33d8a65d1beffba07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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?