# Taler sanity checks (koopa)

Run **on koopa as root** (reads `/root/*-password.txt`, may use `podman` as `hernani`).

| Script | What it checks |
|--------|----------------|
| `check_helpers-running.sh` | **No systemd:** starts missing exchange/merchant helpers (`ensure_*`), then requires transfer/aggregator/wirewatch/… |
| `check_stack-health.sh` | Public + local `/config` and exchange `/keys` HTTP 200; merchant has CHF+GOA |
| `check_merchant-delays.sh` | Global + instance delays are short (pay/refund/wire ≤ 120s) |
| `check_exchange-wirewatch.sh` | Wire gateway reachable with **bearer**; auth method; hosts pin |
| `check_settlement.sh` | Paid orders: `wired`, deposit_total, bank balances/transfers |
| `run_all.sh` | Runs all of the above |

Helper ensure scripts (in containers, no systemd):

| Script | Role |
|--------|------|
| `../taler-exchange/ensure_exchange_helpers.sh` | `nohup` aggregator, closer, wirewatch, **transfer** |
| `../taler-merchant/ensure_merchant_helpers.sh` | `nohup` wirewatch, depositcheck, kyccheck, webhook, … |
| Health: `check_*-health.sh` | Calls ensure (unless `SKIP_ENSURE=1`), then **FAIL** if still missing |

```bash
# on koopa
cd /path/to/koopa-admin-log/scripts/taler-sanity
./run_all.sh
./check_settlement.sh 2026.190-03V36SPAZ8CK6
```

Env overrides: `BANK_URL`, `MERCHANT_URL`, `EXCHANGE_PUBLIC`, `BANK_PUBLIC`, `MERCHANT_PUBLIC`, `MERCHANT_INSTANCE`.

See also: `../taler-wallet-cli/` for end-to-end withdraw → pay → settlement.
