docs: point all ladder entrypoints at modular amount ladder

Drop remaining check_goa_ladder / old-shim wording. Document ladder/
modules, goa-ladder as phase alias only, and max-ladder as wd+pay
max-search. Update admin-log goa-withdraw-ladder comments to prefer
taler-monitoring.sh ladder|max-ladder.
This commit is contained in:
Hernâni Marques 2026-07-19 14:27:14 +02:00
parent 32e7f9668b
commit 35cd86bd43
No known key found for this signature in database
5 changed files with 30 additions and 22 deletions

View file

@ -306,7 +306,7 @@ E2E_VARIABLE=0 WITHDRAW_AMT=GOA:50 PAY_AMT=GOA:1 ./taler-monitoring.sh e2e # s
| **versions** | `deb.taler.net` reachable (InRelease/Packages/pool `.deb`); containers can reach it + have apt source; installed Taler packages vs **trixie** | | **versions** | `deb.taler.net` reachable (InRelease/Packages/pool `.deb`); containers can reach it + have apt source; installed Taler packages vs **trixie** |
| **sanity** | bank · exchange · merchant sections (public + server) | | **sanity** | bank · exchange · merchant sections (public + server) |
| **e2e** | account → credit → withdraw → wallet → confirm → order → pay | | **e2e** | account → credit → withdraw → wallet → confirm → order → pay |
| **ladder** | amount ladder: **classic** (0 + mids + max) or **max-search** (`max-ladder` / `LADDER_MODE=max`) | | **ladder** | amount ladder modules: classic 23-rung wd+pay, or max-search wd+pay (`max-ladder`) |
```bash ```bash
# package suite (default trixie on deb.taler.net) # package suite (default trixie on deb.taler.net)

View file

@ -25,7 +25,7 @@ Every check line has a **global** run number and a **grouped** id:
| **sanity** | `check_sanity.sh` | `bank` `exchange` `merchant` | | **sanity** | `check_sanity.sh` | `bank` `exchange` `merchant` |
| **server** | `check_server.sh` | (flat `server-NN` or host groups) | | **server** | `check_server.sh` | (flat `server-NN` or host groups) |
| **e2e** | `check_e2e.sh` | `prereq` `load` `bank` `wallet` `bankwd` `settle` `pay` `shop` `paivana` `dig` `report` | | **e2e** | `check_e2e.sh` | `prereq` `load` `bank` `wallet` `bankwd` `settle` `pay` `shop` `paivana` `dig` `report` |
| **ladder** | `check_amount_ladder.sh` | `plan` `load` `withdraw` `pay` `report`modes classic / max (`max-ladder`); phase alias `goa-ladder` | | **ladder** | `check_amount_ladder.sh` + `ladder/lib_pay.sh` | `plan` `load` `withdraw` `pay` `report`classic / max-search; phases `ladder` · `max-ladder` · `goa-ladder` (alias) |
**Why groups:** flat `www-001``www-080` was hard to talk about. **Why groups:** flat `www-001``www-080` was hard to talk about.
`www.bank-04` / `e2e.bankwd-02` pin the failure to a logical block. `www.bank-04` / `e2e.bankwd-02` pin the failure to a logical block.
@ -141,7 +141,7 @@ Standalone: `host-agent/run-aptdeploy.sh` (on koopa local; else ssh `$DEPLOY_SSH
- OSV CVE query when package+version known → **ERROR** on hits - OSV CVE query when package+version known → **ERROR** on hits
- Never SSH / never podman on the *targets* - Never SSH / never podman on the *targets*
| **sanity.bank-** / **.exchange-** / **.merchant-** | public + optional server-side per component | | **sanity.bank-** / **.exchange-** / **.merchant-** | public + optional server-side per component |
| **ladder.plan-** / **.load-** / **.withdraw-** / **.pay-** / **.report-** | amount ladder (GOA ceiling or stage TESTPAYSAN `max_wire`) | | **ladder.plan-** / **.load-** / **.withdraw-** / **.pay-** / **.report-** | amount ladder classic or max-search (any currency; stage uses `max_wire`) |
| **server-** | SSH host ports / processes (flat unless grouped later) | | **server-** | SSH host ports / processes (flat unless grouped later) |
| **auth401.*** | merchant 401 / case matrix (WebUI APIs): **signup** `POST /instances` MIX id, **login** Basic user low vs MIX/UPPER, full **case** matrix, **password** bad/empty, **pwchange** `POST private/auth` + re-login, **admin-create** `POST /management/instances` (if admin token), **bearer**, **durable mon401**, **webui** SPA `toLowerCase` probe (`check_auth401.sh`) | | **auth401.*** | merchant 401 / case matrix (WebUI APIs): **signup** `POST /instances` MIX id, **login** Basic user low vs MIX/UPPER, full **case** matrix, **password** bad/empty, **pwchange** `POST private/auth` + re-login, **admin-create** `POST /management/instances` (if admin token), **bearer**, **durable mon401**, **webui** SPA `toLowerCase` probe (`check_auth401.sh`) |

View file

@ -1,31 +1,31 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# check_amount_ladder.sh — generic withdraw/pay amount ladder (any Taler currency) # check_amount_ladder.sh — generic withdraw/pay amount ladder (any Taler currency)
# #
# Currency-agnostic bank landing ladder for GOA, TESTPAYSAN, KUDOS, … # Orchestrator for the modular amount ladder:
# (formerly check_goa_ladder.sh; use phase ladder / max-ladder / goa-ladder). # Phase A withdraw — this file (classic plan or max-search)
# Phase B pay — ladder/lib_pay.sh (classic list or max payable)
# Force-select — ladder/extract_rpubs.py
# See ladder/README.md.
# #
# Flow (bank landings): # Flow (bank landings):
# 1) GET /intro/auto-account.json → personal *account-* (balance 0) # 1) GET /intro/auto-account.json → personal *account-* (balance 0)
# 2) Mint pool withdrawals as explorer + confirm when selected # 2) Mint pool withdrawals as explorer + confirm when selected
# 3) wallet-cli accept-uri only (no run-until-done) # 3) wallet-cli accept-uri only (no run-until-done)
# 4) bank confirm when selected; settle = balance + transfer_done # 4) bank confirm when selected; settle = balance + transfer_done
# 5) pay via free-amount template (GOA: goa-free) or private orders
# #
# Modes (LADDER_MODE): # Modes (LADDER_MODE):
# classic — random strictly increasing rungs + pins 0, max-1, max (default 23) # classic — default 23-rung withdraw + matching pay plan (pins 0, max-1, max)
# max — max-search: highest withdrawable AND highest payable # max — max-search: highest withdrawable AND highest payable
# (pay never exceeds wallet available; GOA uses public free-amount # (pay never exceeds wallet available; GOA uses public free-amount
# template goa-free by default) # template goa-free by default)
# #
# Phase A: withdraw. Phase B: pay (classic plan list, or max-search pay).
#
# Stacks auto-tune via bank /config max_wire + exchange min denom when possible.
#
# Usage: # Usage:
# ./taler-monitoring.sh ladder # ./taler-monitoring.sh ladder # classic
# ./taler-monitoring.sh max-ladder # LADDER_MODE=max (wd + pay hunt) # ./taler-monitoring.sh max-ladder # LADDER_MODE=max
# ./taler-monitoring.sh goa-ladder # alias of ladder (phase name only)
# ./taler-monitoring.sh -d stage.lefrancpaysan.ch ladder # ./taler-monitoring.sh -d stage.lefrancpaysan.ch ladder
# LADDER_MODE=max LADDER_MAX_PROBES=32 ./taler-monitoring.sh ladder # LADDER_MODE=max LADDER_MAX_PROBES=32 ./taler-monitoring.sh ladder
# LADDER_MAX_AMOUNT=100 LADDER_STEPS=7 ./taler-monitoring.sh -d stage.lefrancpaysan.ch ladder
# #
# Env: LADDER_MODE, LADDER_STEPS, LADDER_MAX_AMOUNT, LADDER_MIN_AMOUNT, # Env: LADDER_MODE, LADDER_STEPS, LADDER_MAX_AMOUNT, LADDER_MIN_AMOUNT,
# LADDER_MAX_PROBES, LADDER_MAX_TOL_REL, LADDER_HIGH_RUNGS, LADDER_STACK_AUTO, # LADDER_MAX_PROBES, LADDER_MAX_TOL_REL, LADDER_HIGH_RUNGS, LADDER_STACK_AUTO,

View file

@ -1,18 +1,24 @@
# Amount ladder modules # Amount ladder modules
Glued by `../check_amount_ladder.sh` (phase entry: `ladder` / `max-ladder`). **Entry:** `../check_amount_ladder.sh` via:
```bash
./taler-monitoring.sh ladder # classic 23-rung withdraw + pay
./taler-monitoring.sh max-ladder # max-search withdraw + pay
./taler-monitoring.sh goa-ladder # legacy phase name = classic ladder
```
| Path | Role | | Path | Role |
|------|------| |------|------|
| `extract_rpubs.py` | Force-select: scrape `reservePub` from wallet dumps (no bash heredoc) | | `../check_amount_ladder.sh` | Orchestrator: classic / max **withdraw**, then pay phase |
| `lib_pay.sh` | **Payment** ladder: free-amount template orders, classic pay list, max-search highest **payable** ≤ available | | `lib_pay.sh` | **Pay** module: free-amount template, classic pay list, max **payable** ≤ available |
| *(withdraw stays in `check_amount_ladder.sh`)* | **Withdraw** ladder: classic 23-rung plan + max-search highest **withdrawable** | | `extract_rpubs.py` | Force-select: scrape `reservePub` from wallet dumps |
Phase alias `goa-ladder` maps to `check_amount_ladder.sh` (no separate goa_ladder script). There is **no** `check_goa_ladder.sh` — removed; use the phases above.
## Modes ## Modes
- **classic** (default): withdraw plan 0→mids→max-1→max, then matching pay plan (never overspend). - **classic** (default): 23-rung withdraw 0→mids→max-1→max, then matching pay plan (never overspend).
- **max** (`max-ladder`): adaptive max withdraw, then adaptive max pay via public free template (hacktivism: `goa-free`). - **max** (`max-ladder`): adaptive max withdraw, then adaptive max pay via public free template (hacktivism: `goa-free`).
## Env (pay) ## Env (pay)

View file

@ -93,8 +93,9 @@ Phases:
sanity public + optional server sanity public + optional server
server server-side only (SSH) server server-side only (SSH)
e2e withdraw + pay (small amounts; remote aborts on login/KYC) e2e withdraw + pay (small amounts; remote aborts on login/KYC)
ladder amount ladder (classic: 0→mids→max; any currency / stack ceiling) ladder amount ladder classic (default 23-rung withdraw + pay; any currency)
max-ladder highest withdrawable + highest payable (free-amount template on GOA) max-ladder max-search: highest withdrawable + highest payable (≤ available)
goa-ladder alias of ladder (legacy phase name; same check_amount_ladder.sh)
auth401 merchant Basic-auth / case matrix (HTTP 401 paths; may create throwaway instance) auth401 merchant Basic-auth / case matrix (HTTP 401 paths; may create throwaway instance)
aptdeploy koopa podman apt-src smoke: taler-merchant in aptdeploy koopa podman apt-src smoke: taler-merchant in
koopa-taler-deploy-test-apt-src-trixie{,-testing} koopa-taler-deploy-test-apt-src-trixie{,-testing}
@ -317,7 +318,8 @@ export INSIDE_PROFILE INSIDE_SSH
export INSIDE_BANK_CTR INSIDE_EXCHANGE_CTR INSIDE_MERCHANT_CTR export INSIDE_BANK_CTR INSIDE_EXCHANGE_CTR INSIDE_MERCHANT_CTR
export INSIDE_BANK_PORT INSIDE_EXCHANGE_PORT INSIDE_MERCHANT_PORT export INSIDE_BANK_PORT INSIDE_EXCHANGE_PORT INSIDE_MERCHANT_PORT
export INSIDE_DNS_BANK INSIDE_DNS_EXCHANGE INSIDE_DNS_MERCHANT export INSIDE_DNS_BANK INSIDE_DNS_EXCHANGE INSIDE_DNS_MERCHANT
# Amount ladder — classic or max-search (see check_amount_ladder.sh; goa-ladder alias). # Amount ladder — check_amount_ladder.sh + ladder/lib_pay.sh + ladder/extract_rpubs.py
# Phases: ladder|goa-ladder (classic), max-ladder|maxladder (max-search).
# Defaults so set -u export is safe when vars were never set by caller. # Defaults so set -u export is safe when vars were never set by caller.
: "${LADDER_STEPS:=23}" : "${LADDER_STEPS:=23}"
: "${LADDER_MIN_AMOUNT:=0.000001}" : "${LADDER_MIN_AMOUNT:=0.000001}"