Shared lib.sh normalize_taler_uri for ladder/e2e/pay. urls phase checks
public bank/exchange/merchant intros and bank mint JSON for residual
default ports (ERROR on GOA/local). Unit test included.
Root cause of stale intro payments: koopa max-ladder minted but accept-uri
failed with taler-wallet-cli not found (SKIP_ACCEPT ×16). Fail early without
CLI/helper; after bank transfer_done keep polling + run-pending for available
coins; pay wait 180s; host-agent max-ladder sets WALLET_CLI PATH.
Force MAX_LADDER_RUN_TIMEOUT/10800 in run-max-ladder-monitoring.sh so
shared ~/.config/taler-monitoring/env cannot shrink the daily hunt.
Install uses systemctl --no-block for long oneshots.
Host-agent wrappers + daily timers publish classic and max-search amount
ladder reports on bank/exchange/taler.hacktivism.ch. Install enables timers
and starts the first round immediately. monpages path allow + goa catalog;
Caddy bare redirs for ladder paths.
UX fix: after bank OK_BANK, available is often still 0 while pendingIncoming
ticks up. The silent wait looked hung. Show OK/OK_BANK withdraws in the order
they started, match wallet txs, and update pendingIncoming→done with a timer
on the same wallet DB. Short run-pending only; default wait 90s.
No host-agent or suite phase loads the path; taler-monitoring.sh
phase alias goa-ladder already runs check_amount_ladder.sh.
Update docs and admin-log pointer comments to the amount ladder only.
Split pay into ladder/lib_pay.sh; force-select extract in
ladder/extract_rpubs.py. check_goa_ladder.sh is only a compat shim.
max-ladder now hunts highest withdrawable and highest payable
(never above wallet available), using public free-amount template
goa-free on hacktivism. Classic remains default 23-rung wd+pay.
Pay phase always runs when LADDER_PAY=1 (visible SKIP_BALANCE when
no spendable coins). Report includes best_pay / alt names.
Wallet accept/tx dumps mix log lines with JSON; json.loads from the
first brace always failed, and regex only scanned accept (no reservePub).
Parse with JSONDecoder.raw_decode, scrape both files, score by WID/amount.
Prefer Homebrew python for taler-helper-sqlite3; find_wallet_cli prefers
ts-core 1.6.x. Soft-skip max-1 mint 5110/P0001 as ceiling.
Verified on live GOA: mid rungs force-select HTTP 200 + confirm 204 → OK_BANK.
Per-stack en|fr lives in domains.conf; load_domain_profile sets
TALER_DOMAIN_LANG. FP profiles use lang=fr; workstation LANG=en no longer
overrides. HTML chrome resolves lang from the same conf.
Mail/surface catalogs used non-resolving anastasis.taler-systems.com;
point to mail.anastasis.lu (pixel) and anastasis.lu. Stage mon defaults
include e2e with francpaysan-secrets + wallet-cli paths.
Rename user-facing e2e "ATM withdraw" to "Bank withdraw". The ladder
amounts (20/50/100/200/…) were labeled ATM because they match typical
CHF cash-note sizes (Bankomat), not because anything hits a physical ATM.
Keep E2E_ATM_MAX as alias of E2E_BANK_WITHDRAW_MAX; keep e2e.atm-* group ids.
devtesting runs a log-spaced amount ladder up to CHF:50000 after the
baseline plumbing probe. Each rung uses geniban debit funding. Defaults
DEVTESTING_LADDER=1 STEPS=23 MAX=50000; stage RUN_TIMEOUT example 1800s.
Terminal SUMMARY uses verdict-tinted header, bold counts, and
per-row background tints for OK/ERROR/WARN/INFO/BLOCK. HTML mon
pages map those lines to sum-* CSS panels with matching emphasis.