docs: §3b nuance — withdraw fails at least not in time

Spendable coins may arrive later; mon does not get available>0 within
the pay wait budget (default 90s).
This commit is contained in:
Hernâni Marques 2026-07-19 14:58:28 +02:00
parent 0ae4325d4b
commit dfc7595990
No known key found for this signature in database

View file

@ -67,11 +67,11 @@ Legend:
| **Workaround** | Use `LADDER_STEPS≥5` (or higher) so random mids exist; treat zero / absolute-max / max-1-5110 as probes (soft `CEILING_REJECT` in mon ≥1.20.2). |
| **Wanted** | Ladder plan docs: pin vs mid semantics; CLI structured error for amount-too-large / zero. |
### 3b. We do **not** manage to withdraw (GOA) — bank path broken, not load
### 3b. We do **not** manage to withdraw **in time** (GOA) — bank path unreliable, not load
| | |
|--|--|
| **Bottom line** | On live **hacktivism GOA**, automation **does not reliably complete a withdraw to spendable coins**. Max-search may report a “best” amount; pay then sees **`available=GOA:0`**. This is **recurring (several runs, 2026-07-19)**. |
| **Bottom line** | On live **hacktivism GOA**, automation **does not get spendable coins in time** for the pay phase (default wait **90 s**). Max-search may report a “best” amount and bank may even show `transfer_done`; pay still sees **`available=GOA:0`** with large **`pendingIncoming`**. Coins might arrive **later** (wirewatch / wallet) — **at least not within mons budget**. Recurring (several runs, 2026-07-19). |
| **Area** | **bank** + wire/wallet settle — **not** mon overload, **not** “laptop too slow” |
| **Not the cause: ecosystem load** | Outside-in check **2026-07-19 ~14:56 CEST**: bank/exchange/merchant all **HTTP 200**, config ~**50150 ms**, exchange `/keys` ~**0.5 s**. Container **loadavg ~1.51.7**, RSS bank **~737 MiB** / exchange **~670 MiB**, bank probes **47 ms**, **`wirewatch_running: true`**. Stack is **healthy under moderate load** — failures are **application/SQL/protocol**, not “host on fire.” |
| **Call site (mint)** | `POST ${BANK}/accounts/explorer/withdrawals` → often HTTP **500** `{ code: 5110, hint: "Unexpected sql error with state P0001" }` (**`BANK_UNMANAGED_EXCEPTION`**; Postgres **`P0001`** = `RAISE EXCEPTION`). Should often be clean **409** (insufficient funds); instead opaque **500**. |
@ -85,7 +85,7 @@ Legend:
| **Mint (some mid amounts)** | occasional **HTTP 200** + URI | Mint only — not done |
| **Confirm** | force-select 200 then stuck **`selected`**, confirm **HTTP 500** → mon **`SKIP_CONFIRM`** (bounds unchanged) | **No** — bank never wires; **not** out-of-money (§3 / 5114 class) |
| **Bank settle** | rare full path: confirm 204 + `transfer_done` | Bank side “OK_BANK” |
| **Wallet coins** | almost always **`available=0`**, large **`pendingIncoming`**, board **`done=0`** | **No spendable coins** → pay **SKIP_BALANCE** / skip max-pay |
| **Wallet coins** | almost always **`available=0`** within wait, large **`pendingIncoming`**, board **`done=0`** | **Not in time** for pay → **SKIP_BALANCE** / skip max-pay |
**Pay-wait board (same cumulative wallet), example:**
@ -95,7 +95,7 @@ timer 0s left — available still GOA:0
pendingIncoming=GOA:335776
```
Reading: only **2** TSV rows are full OK/OK_BANK, but the wallet holds **14** withdrawal txs still **pendingIncoming** and **none done**. Max-search leaves many **mint-OK / confirm-failed** (and lagging) withdraws in the DB; they **inflate pendingIncoming** without ever becoming **available**. After **90 s** wait + short `run-pending` nudge: **still no spendable balance****we do not manage to withdraw** in the sense that matters (pay).
Reading: only **2** TSV rows are full OK/OK_BANK, but the wallet holds **14** withdrawal txs still **pendingIncoming** and **none done** after the wait. Max-search also leaves many **mint-OK / confirm-failed** withdraws that **inflate pendingIncoming** and may never complete. After **90 s** + short `run-pending`: **still no spendable balance****we do not manage to withdraw in time** for pay (whether coins would appear later is unknown to the job).
#### What *did* work (sparse) — for contrast
@ -104,9 +104,9 @@ Reading: only **2** TSV rows are full OK/OK_BANK, but the wallet holds **14** wi
| Landing **2026-07-19 14:1914:29 CEST** | Explorer singles **recorded** on bank intro stats | **~1.52 Giga-GOA**, **~145202 Mega-GOA**, **~1.83.4 Mega-GOA** |
| Max-search run A (same day) | Full bank path (mint→confirm→`transfer_done`) for **two** amounts only; mon best | **`GOA:424114`**, **`GOA:822256`** (~822 Kilo best) |
| Max-search run B (later) | Even fewer full successes; many mint OK + **SKIP_CONFIRM**; mon best collapsed | e.g. full success around **`GOA:12276`** / **`GOA:17257`** (~**17 Kilo** best) |
| Pay after either | Spendable **available** | **`GOA:0`** (fail) |
| Pay after either | Spendable **available** within **90 s** | **`GOA:0`** (not in time) |
So: **landing/history prove large withdraws were possible earlier the same day**; **automation now does not manage a usable withdraw** (best amount drops run-to-run; coins never spendable).
So: **landing/history prove large withdraws were possible earlier the same day**; **automation does not manage a usable withdraw in time** (best amount drops run-to-run; coins not available inside mons wait).
#### Mon behaviour (workaround only)
@ -334,7 +334,7 @@ If only a few changes land, these unlock the most automation:
| ladder explorer | `read_secret` / EXP_PW_FILE |
| stage maxima | bank `max_wire` + keys min denom |
| force-select | multi-rpub try; soft-skip confirm; empty scrape → WARN not balance fail |
| higher amounts / withdraw fail | **§3b: we do not manage to withdraw** (spendable coins) on GOA despite healthy load; mint 5110/P0001 + SKIP_CONFIRM + pendingIncoming pile-up; landing had Giga/Mega earlier same day |
| higher amounts / withdraw fail | **§3b: we do not manage to withdraw in time** on GOA (healthy load); mint 5110/P0001 + SKIP_CONFIRM + pendingIncoming; pay still available=0 after 90s; landing had Giga/Mega earlier same day |
| pay vs balance | never order more than wallet **available** (soft `SKIP_BALANCE`); pendingIncoming does not count as spendable |
| pay wait UX | board: OK/OK_BANK start order + live pendingIncoming/`done`; often `tsv_ok≪wallet_wd` and **done=0** after 90s → skip pay |
| wallet-db path | Prefer `*.sqlite3` (never `*.json` as db path) |