Replace probe dumps with outcome analysis: stack load is fine, mint 5110 /
SKIP_CONFIRM / pendingIncoming with available=0; sparse what-worked table
and pay board example (tsv_ok=2, wallet_wd=14, done=0).
Expand CLI-AUTOMATION-NOTES with the 2026-07-19 max-ladder probe table:
hi descent while lo=0, OK at 424114/822256, fine bisect fails to 822788,
and same-day landing Giga/Mega withdraws for contrast.
Record recurring bank SQL 5110/P0001 as server-side (not mon/wallet),
max-search fail band ~824k GOA, and same-day landing recent_withdraws
that still show Giga/Mega explorer mints succeeded earlier.
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.
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.
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.