055-wallet-problem-report.rst (3078B)
1 DD 55: Wallet Problem Reports 2 ############################# 3 4 :Design status: Rejected 5 :Implementation status: Not started 6 :DD shepherd: TBD 7 :Historical contributors: Florian Dold, Christian Grothoff 8 :First published: 2024-02-21 9 :Last substantive change: 2024-03-05 10 11 .. warning:: 12 13 This rejected proposal is retained for historical context and is 14 non-normative. We concluded that the problem reports feature was not 15 needed because the relevant cases were covered by other mechanisms. 16 17 Summary 18 ======= 19 20 This design document specifies global error reports generated/managed by wallet-core 21 and rendered by the wallet UIs. 22 23 Motivation 24 ========== 25 26 Sometimes the wallet encounters issues that go beyond the scope of single transaction. 27 28 Requirements 29 ============ 30 31 * problem reports must have a clear lifecycle 32 * problem reports must have some type of identification that allows to 33 easily find out if a new problem report needs to be created when an 34 error happens or whether an existing one has been created 35 36 Proposed Solution 37 ================= 38 39 Report identification 40 --------------------- 41 42 The report identifier serves multiple purposes: 43 44 1. Usage as a reference in wallet-core APIs 45 2. De-duplication. The report ID should allow easy identification of an already existing report for a particular problem. 46 47 New wallet-core requests 48 ------------------------ 49 50 * ``listProblemReports`` 51 * ``acknowledgeProblemReport``: Mark a problem report as read. 52 * ``deleteProblemReport``: Delete the problem report. 53 54 New wallet-core notification type 55 --------------------------------- 56 57 * ``problem-report`` to notify clients about status changes or an error report 58 (including creation!) 59 60 61 Types of reports 62 ---------------- 63 64 (Currently we don't have any good examples where this is actually needed.) 65 66 Examples of what should NOT be a report 67 --------------------------------------- 68 69 * money lost due to the exchange stopping to offer a denomination 70 71 * => Should be a transactions item 72 73 * money locked behind a (long) pending refresh 74 75 * => Should be a pending transaction 76 77 * money lost due to a permanently failing refresh 78 79 * => pending or final transaction item 80 81 * money lost due to expired denominations (auto-refresh wasn't done fast enough) 82 83 * => transaction item 84 85 * a denomination changed its info (expiration, fees) 86 87 * => exchange entry state 88 89 * Important information about the exchange changed (master pub, accounts, keys) 90 91 => exchange entry state 92 93 94 Definition of Done 95 ================== 96 97 * [ ] No implementation is planned because the proposal was rejected. 98 99 Alternatives 100 ============ 101 102 * Report problems with an API specific to each resource (exchange entry, transaction, ...) 103 * Have an *alerts* API that returns alerts to the client that the client can show to the user, 104 but that a user can't interact with. 105 106 Drawbacks 107 ========= 108 109 TBD. 110 111 Discussion / Q&A 112 ================ 113 114 * When is a report amended vs a new report created? 115 116 * example: Exchange stops offering denomination D1. Later, it stops offering D2. 117 Are two reports generated or is the first report changed?