From c1a3cba28b57cf63b1abb4300c8e9a3b01edbd21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A2ni=20Marques?= Date: Sun, 19 Jul 2026 15:05:21 +0200 Subject: [PATCH] fix 1.23.1: only /monitoring-max-ladder for GOA (drop classic ladder page) Hacktivism mon page is max-search only on bank/exchange/taler. Remove classic /monitoring-ladder units, monpages catalog, and Caddy bare redirs. --- VERSION | 2 +- VERSIONS.md | 3 +- check_monitoring_pages.sh | 15 +++----- host-agent/README.md | 10 ++--- host-agent/ROOT-APPLY-MONITORING.md | 5 +-- host-agent/apply-monitoring-live.sh | 3 -- host-agent/install-host-agent.sh | 21 +++++------ host-agent/run-hacktivism-monitoring.sh | 6 +-- host-agent/run-ladder-monitoring.sh | 43 ---------------------- host-agent/taler-monitoring-ladder.service | 19 ---------- host-agent/taler-monitoring-ladder.timer | 14 ------- site-gen/caddy-monitoring-handles.snippet | 5 +-- site-gen/console_to_html.py | 12 +++--- 13 files changed, 34 insertions(+), 124 deletions(-) delete mode 100755 host-agent/run-ladder-monitoring.sh delete mode 100644 host-agent/taler-monitoring-ladder.service delete mode 100644 host-agent/taler-monitoring-ladder.timer diff --git a/VERSION b/VERSION index a6c2798..49e0a31 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.23.0 +1.23.1 diff --git a/VERSIONS.md b/VERSIONS.md index 3e7f783..77bc56f 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -17,7 +17,8 @@ Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.8.0`). File `VERSION` omits the `v` pre | Tag | Date (UTC) | Notes | |-----|------------|--------| -| **v1.23.0** | 2026-07-19 | **Feature:** GOA daily mon pages **`/monitoring-ladder/`** (classic) + **`/monitoring-max-ladder/`** (max-search) on bank/exchange/taler.hacktivism.ch. Host-agent timers once/day + install starts first round immediately. monpages catalog/path allow; Caddy bare redirs. | +| **v1.23.1** | 2026-07-19 | **Fix / scope:** only **`/monitoring-max-ladder/`** for GOA (drop classic `/monitoring-ladder`). Daily timer + install first-run. monpages catalog/Caddy bare redirs for max-ladder only. | +| **v1.23.0** | 2026-07-19 | **Feature:** GOA daily mon page **`/monitoring-max-ladder/`** (max-search) on bank/exchange/taler.hacktivism.ch *(1.23.0 briefly also had classic ladder; removed in 1.23.1)*. | | **v1.22.1** | 2026-07-19 | **Bugfix (UX):** pay wait after withdraw no longer looks hung — shows **withdraw board in start order** (OK/OK_BANK from TSV) with live wallet status (`pendingIncoming` → `done`) + timer + aggregate available/pendingIncoming on the **same** wallet DB. Short `run-pending` nudge only (no run-until-done). Default wait 90s (`LADDER_PAY_WAIT_AVAILABLE_S`). | | **v1.22.0** | 2026-07-19 | **Feature:** modular amount ladder — `ladder/lib_pay.sh` (pay) + withdraw in `check_amount_ladder.sh`; `ladder/extract_rpubs.py`. **max-ladder** hunts highest **withdrawable** and highest **payable** (≤ wallet available). GOA pays use public free-amount template **`goa-free`** (`LADDER_FREE_TEMPLATE`). Classic still default 23-rung wd+pay. Phase alias `goa-ladder` → amount ladder (shim removed). | | **v1.21.0** | 2026-07-19 | **Feature:** generic **amount ladder** (`check_amount_ladder.sh`; compat shim `check_goa_ladder.sh`). Default **classic** 23-rung withdraw (+ pay when enabled); **max-search** (`max-ladder` / `LADDER_MODE=max`) hunts highest mintable amount (probes default 32, `0`=until timeout). **Pay:** never overspend — soft `SKIP_BALANCE` if amount > wallet available. **Alt units:** report/logs show human names (e.g. `8.15 Tera-GOA (GOA:…)`) + raw. **Fixes bundled:** external extract (no stdin SyntaxError); force-select multi-rpub; soft `CEILING_REJECT` on mint 5110/P0001; crash-proof report. CLI-AUTOMATION-NOTES §3/3a/3b/§15–18. | diff --git a/check_monitoring_pages.sh b/check_monitoring_pages.sh index f4804b7..4ca714a 100755 --- a/check_monitoring_pages.sh +++ b/check_monitoring_pages.sh @@ -100,21 +100,20 @@ _host_allowed() { } # Public mon URL families (suite name "taler-monitoring" ≠ a public path): -# 1) /monitoring(+_err) — landing hosts (bare + slash) -# 2) /monitoring-ladder(+_err) — GOA classic amount ladder (daily) -# 3) /monitoring-max-ladder(+_err) — GOA max-search ladder (daily) -# 4) /taler-monitoring-surface(+_err) — taler.hacktivism.ch only -# 5) /taler-monitoring-aptdeploy(+_err) — taler.hacktivism.ch only -# No /taler-monitoring page. No /taler-monitoring-mail|mattermost pages. +# 1) /monitoring(+_err) — landing hosts (bare + slash) +# 2) /monitoring-max-ladder(+_err) — GOA max-search amount ladder (daily, hacktivism) +# 3) /taler-monitoring-surface(+_err) — taler.hacktivism.ch only +# 4) /taler-monitoring-aptdeploy(+_err) — taler.hacktivism.ch only +# No classic /monitoring-ladder. No /taler-monitoring page. _path_allowed() { case "$1" in monitoring|monitoring_err|\ - monitoring-ladder|monitoring-ladder_err|\ monitoring-max-ladder|monitoring-max-ladder_err|\ taler-monitoring-surface|taler-monitoring-surface_err|\ taler-monitoring-aptdeploy|taler-monitoring-aptdeploy_err) return 0 ;; # explicit deny (never invent a mon page here) + monitoring-ladder|monitoring-ladder_err|\ taler-monitoring|taler-monitoring-mail|taler-monitoring-mattermost) return 1 ;; *) return 1 ;; esac @@ -152,7 +151,6 @@ _catalog_urls() { goa) for h in bank.hacktivism.ch exchange.hacktivism.ch taler.hacktivism.ch; do printf 'https://%s/monitoring/\n' "$h" - printf 'https://%s/monitoring-ladder/\n' "$h" printf 'https://%s/monitoring-max-ladder/\n' "$h" done # ecosystem surface (versions / software) + apt-src deploy mon page @@ -173,7 +171,6 @@ _catalog_urls() { printf 'https://%s/monitoring/\n' "$h" case "$h" in *.hacktivism.ch) - printf 'https://%s/monitoring-ladder/\n' "$h" printf 'https://%s/monitoring-max-ladder/\n' "$h" ;; esac diff --git a/host-agent/README.md b/host-agent/README.md index 6c8ea53..cf8969c 100644 --- a/host-agent/README.md +++ b/host-agent/README.md @@ -23,27 +23,23 @@ Thin wrappers only set stack defaults: | `run-aptdeploy.sh` | CLI: ensure + **aptdeploy** (no HTML) | local if hostname=koopa, else **ssh $DEPLOY_SSH** | | `run-aptdeploy-monitoring.sh` | apt-src tests → `/taler-monitoring-aptdeploy*` | `hernani` @ koopa (4h) | | `run-surface-monitoring.sh` | **surface** → only `/taler-monitoring-surface*` (ecosystem + mail + mattermost + versions) | `hernani` @ koopa (hourly) | -| `run-ladder-monitoring.sh` | GOA **classic** amount ladder → `/monitoring-ladder/` on bank/exchange/taler | `hernani` @ koopa (**daily**) | | `run-max-ladder-monitoring.sh` | GOA **max-search** ladder → `/monitoring-max-ladder/` on bank/exchange/taler | `hernani` @ koopa (**daily**) | -Deprecated mail/mattermost wrappers: **`../meta/deprecated/`** (not installed). +Deprecated mail/mattermost wrappers: **`../meta/deprecated/`** (not installed). No classic **`/monitoring-ladder`** page. -### GOA amount ladder pages (daily) +### GOA max-search ladder page (daily) | URL | Phase | Timer | |-----|-------|-------| -| `https://{bank,exchange,taler}.hacktivism.ch/monitoring-ladder/` | `ladder` (classic) | `taler-monitoring-ladder.timer` (~05:15 + jitter) | | `https://{bank,exchange,taler}.hacktivism.ch/monitoring-max-ladder/` | `max-ladder` | `taler-monitoring-max-ladder.timer` (~06:30 + jitter) | ```bash -systemctl --user enable --now taler-monitoring-ladder.timer systemctl --user enable --now taler-monitoring-max-ladder.timer # first round now: -systemctl --user start taler-monitoring-ladder.service systemctl --user start taler-monitoring-max-ladder.service ``` -Needs explorer secrets (`SECRETS_ROOT` / bank-explorer password). Long wall: classic ~2h, max ~3h (`RUN_TIMEOUT`). +Needs explorer secrets (`SECRETS_ROOT` / bank-explorer password). Wall ~3h (`RUN_TIMEOUT=10800`). ### apt-src deploy tests (hacktivism `/monitoring`) diff --git a/host-agent/ROOT-APPLY-MONITORING.md b/host-agent/ROOT-APPLY-MONITORING.md index 9687af2..7d38b35 100644 --- a/host-agent/ROOT-APPLY-MONITORING.md +++ b/host-agent/ROOT-APPLY-MONITORING.md @@ -48,12 +48,11 @@ There is **no** public page `/taler-monitoring`. Each family needs **bare and sl | Family | Paths | Host | Source timer | |--------|-------|------|----------------| | **monitoring** | `/monitoring` · `/monitoring/` · `/monitoring_err` · `/monitoring_err/` | bank + exchange + taler (and other landings) | `taler-monitoring-hacktivism.timer` (4h) | -| **monitoring-ladder** | `/monitoring-ladder` · `/` · `_err` | bank + exchange + taler (**GOA**) | `taler-monitoring-ladder.timer` (**daily**) | -| **monitoring-max-ladder** | `/monitoring-max-ladder` · `/` · `_err` | bank + exchange + taler (**GOA**) | `taler-monitoring-max-ladder.timer` (**daily**) | +| **monitoring-max-ladder** | `/monitoring-max-ladder` · `/` · `_err` | bank + exchange + taler (**GOA** max-search only) | `taler-monitoring-max-ladder.timer` (**daily**) | | **taler-monitoring-surface** | bare + slash + `_err` | **taler.hacktivism.ch only** | `taler-monitoring-surface.timer` (1h) | | **taler-monitoring-aptdeploy** | bare + slash + `_err` | **taler.hacktivism.ch only** | `taler-monitoring-aptdeploy.timer` (4h) | -Served via existing Caddy `handle /monitoring*` (file_server under `/var/www/monitoring-sites/{host}/`). +No classic **`/monitoring-ladder`**. Max-ladder served via Caddy `handle /monitoring*` under `/var/www/monitoring-sites/{host}/`. HTML is generated as **hernani** into `$DEPLOY_STAGING (or $HOME/monitoring-sites-staging)/`. diff --git a/host-agent/apply-monitoring-live.sh b/host-agent/apply-monitoring-live.sh index f14b7e7..dfc4798 100755 --- a/host-agent/apply-monitoring-live.sh +++ b/host-agent/apply-monitoring-live.sh @@ -57,9 +57,6 @@ urls=( https://taler.hacktivism.ch/monitoring/ https://bank.hacktivism.ch/monitoring/ https://exchange.hacktivism.ch/monitoring/ - https://taler.hacktivism.ch/monitoring-ladder/ - https://bank.hacktivism.ch/monitoring-ladder/ - https://exchange.hacktivism.ch/monitoring-ladder/ https://taler.hacktivism.ch/monitoring-max-ladder/ https://bank.hacktivism.ch/monitoring-max-ladder/ https://exchange.hacktivism.ch/monitoring-max-ladder/ diff --git a/host-agent/install-host-agent.sh b/host-agent/install-host-agent.sh index d4624c2..42c87d6 100755 --- a/host-agent/install-host-agent.sh +++ b/host-agent/install-host-agent.sh @@ -63,19 +63,21 @@ install_local() { # optional aptdeploy (not a public mon page layout — v1.8.0 simplified overview) install -m 644 "$ROOT/taler-monitoring-aptdeploy.service" "$home_unit/" install -m 644 "$ROOT/taler-monitoring-aptdeploy.timer" "$home_unit/" - # GOA amount ladder pages (daily) - install -m 644 "$ROOT/taler-monitoring-ladder.service" "$home_unit/" - install -m 644 "$ROOT/taler-monitoring-ladder.timer" "$home_unit/" + # GOA max-search amount ladder page (daily only — no classic /monitoring-ladder) install -m 644 "$ROOT/taler-monitoring-max-ladder.service" "$home_unit/" install -m 644 "$ROOT/taler-monitoring-max-ladder.timer" "$home_unit/" - chmod +x "$ROOT/run-ladder-monitoring.sh" "$ROOT/run-max-ladder-monitoring.sh" 2>/dev/null || true + chmod +x "$ROOT/run-max-ladder-monitoring.sh" 2>/dev/null || true systemctl --user daemon-reload systemctl --user enable --now taler-monitoring-hacktivism.path systemctl --user enable --now taler-monitoring-hacktivism.timer systemctl --user enable --now taler-monitoring-surface.timer systemctl --user enable --now taler-monitoring-aptdeploy.timer - systemctl --user enable --now taler-monitoring-ladder.timer systemctl --user enable --now taler-monitoring-max-ladder.timer + # drop classic ladder mon page if previously installed + systemctl --user disable --now taler-monitoring-ladder.timer 2>/dev/null || true + systemctl --user stop taler-monitoring-ladder.service 2>/dev/null || true + rm -f "$home_unit/taler-monitoring-ladder.service" \ + "$home_unit/taler-monitoring-ladder.timer" 2>/dev/null || true # Remove leftover mail/mattermost units if present (moved to meta/deprecated/) systemctl --user disable --now taler-monitoring-mattermost.timer 2>/dev/null || true systemctl --user disable --now taler-monitoring-mail.timer 2>/dev/null || true @@ -89,8 +91,7 @@ install_local() { systemctl --user start taler-monitoring-hacktivism.service || true systemctl --user start taler-monitoring-surface.service || true systemctl --user start taler-monitoring-aptdeploy.service || true - # first ladder rounds immediately (classic then max-search; both daily thereafter) - systemctl --user start taler-monitoring-ladder.service || true + # first max-ladder round immediately (daily thereafter) systemctl --user start taler-monitoring-max-ladder.service || true echo "--- status ---" @@ -98,18 +99,16 @@ install_local() { systemctl --user status taler-monitoring-hacktivism.timer --no-pager -l | head -12 systemctl --user status taler-monitoring-surface.timer --no-pager -l | head -12 systemctl --user status taler-monitoring-aptdeploy.timer --no-pager -l | head -12 - systemctl --user status taler-monitoring-ladder.timer --no-pager -l | head -12 systemctl --user status taler-monitoring-max-ladder.timer --no-pager -l | head -12 systemctl --user list-timers --all | grep taler-monitoring || true echo "OK host-agent:" echo " · hacktivism 4h → /monitoring on bank/exchange/taler (landing stacks)" - echo " · ladder daily → /monitoring-ladder/ (classic amount ladder, GOA)" - echo " · max-ladder daily → /monitoring-max-ladder/ (max-search, GOA)" + echo " · max-ladder daily → /monitoring-max-ladder/ (GOA max-search, bank/exchange/taler)" echo " · surface 1h → /taler-monitoring-surface* (ecosystem versions/software)" echo " · aptdeploy 4h (optional tests)" + echo " · no classic /monitoring-ladder page" echo " · mail/mattermost: not installed (meta/deprecated/; content in surface)" echo "suite: $mon" - echo "manual ladder: systemctl --user start taler-monitoring-ladder.service" echo "manual max-ladder: systemctl --user start taler-monitoring-max-ladder.service" echo "after upgrades: $ROOT/touch-software-stamp.sh" } diff --git a/host-agent/run-hacktivism-monitoring.sh b/host-agent/run-hacktivism-monitoring.sh index 9599cb1..7ccf7c7 100755 --- a/host-agent/run-hacktivism-monitoring.sh +++ b/host-agent/run-hacktivism-monitoring.sh @@ -16,12 +16,12 @@ export INSIDE_MODE="${INSIDE_MODE:-local-podman}" export LOCAL_STACK="${LOCAL_STACK:-1}" export CONTINUE_ON_ERROR="${CONTINUE_ON_ERROR:-1}" export RUN_TIMEOUT="${RUN_TIMEOUT:-600}" -# stack checks + full monpages inventory (landings + ladder + surface + aptdeploy). +# stack checks + full monpages inventory (landings + max-ladder + surface + aptdeploy). # Specialized pages also have their own timers; full outside-in inventory lives here. -# run-ladder-monitoring.sh → /monitoring-ladder* (daily classic) -# run-max-ladder-monitoring.sh → /monitoring-max-ladder* (daily max-search) +# run-max-ladder-monitoring.sh → /monitoring-max-ladder* (daily max-search, GOA) # run-aptdeploy-monitoring.sh → monpages job-only for /taler-monitoring-aptdeploy* # run-surface-monitoring.sh → monpages job-only for /taler-monitoring-surface* +# No classic /monitoring-ladder page. export PHASES="${PHASES:-urls inside versions monpages}" export MON_HOSTS="${MON_HOSTS:-bank.hacktivism.ch exchange.hacktivism.ch taler.hacktivism.ch}" export HTML_OUT="${HTML_OUT:-$HOME/monitoring-sites-staging}" diff --git a/host-agent/run-ladder-monitoring.sh b/host-agent/run-ladder-monitoring.sh deleted file mode 100755 index c51f4f3..0000000 --- a/host-agent/run-ladder-monitoring.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -# run-ladder-monitoring.sh — GOA classic amount ladder → public HTML -# -# Public (landing hosts, same Caddy /monitoring* static root): -# https://{bank,exchange,taler}.hacktivism.ch/monitoring-ladder/ -# https://{bank,exchange,taler}.hacktivism.ch/monitoring-ladder_err/ -# -# Timer: once daily (taler-monitoring-ladder.timer). Long wall clock. -# -set -uo pipefail -AGENT_DIR=$(cd "$(dirname "$0")" && pwd) - -export AGENT_LABEL="${AGENT_LABEL:-ladder-host-agent}" -export STATE_NAME="${STATE_NAME:-taler-ladder-monitoring}" -export TALER_DOMAIN="${TALER_DOMAIN:-hacktivism.ch}" -export TALER_MON_LANG="${TALER_MON_LANG:-en}" -export TALER_MON_LANG_SET=1 -export INSIDE_PODMAN="${INSIDE_PODMAN:-1}" -export INSIDE_MODE="${INSIDE_MODE:-local-podman}" -export LOCAL_STACK="${LOCAL_STACK:-1}" -export SKIP_SSH="${SKIP_SSH:-0}" -export CONTINUE_ON_ERROR="${CONTINUE_ON_ERROR:-1}" -# classic 23-rung + pay can run long -export RUN_TIMEOUT="${RUN_TIMEOUT:-7200}" - -export PHASES="ladder monpages" -export MON_HOSTS="${MON_HOSTS:-bank.hacktivism.ch exchange.hacktivism.ch taler.hacktivism.ch}" -export HTML_OUT="${HTML_OUT:-$HOME/monitoring-sites-staging}" -export DEPLOY_WWW_ROOT="${DEPLOY_WWW_ROOT:-/var/www/monitoring-sites}" - -export HTML_OK_DIR="monitoring-ladder" -export HTML_ERR_DIR="monitoring-ladder_err" -export HTML_URL_OK="/monitoring-ladder/" -export HTML_URL_ERR="/monitoring-ladder_err/" -export PAGE_LABEL="monitoring-ladder" -export MONPAGES_INVENTORY="job" - -# Classic ladder defaults (override in ~/.config/taler-monitoring/env) -export LADDER_MODE="${LADDER_MODE:-classic}" -export LADDER_PAY="${LADDER_PAY:-1}" -export APT_DEPLOY_ENSURE=0 - -exec bash "$AGENT_DIR/run-host-report.sh" "$@" diff --git a/host-agent/taler-monitoring-ladder.service b/host-agent/taler-monitoring-ladder.service deleted file mode 100644 index c93bcd8..0000000 --- a/host-agent/taler-monitoring-ladder.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=Taler monitoring GOA classic amount ladder → /monitoring-ladder/ -Documentation=file:%h/src/taler-monitoring/host-agent/README.md -After=network-online.target -Wants=network-online.target - -[Service] -Type=oneshot -Environment=PATH=%h/.local/bin:/usr/local/bin:/usr/bin:/bin -Environment=CONTINUE_ON_ERROR=1 -Environment=RUN_TIMEOUT=7200 -EnvironmentFile=-%h/.config/taler-monitoring/env -WorkingDirectory=%h/src/taler-monitoring -ExecStart=%h/src/taler-monitoring/host-agent/run-ladder-monitoring.sh -Nice=10 -TimeoutStartSec=3h - -[Install] -WantedBy=default.target diff --git a/host-agent/taler-monitoring-ladder.timer b/host-agent/taler-monitoring-ladder.timer deleted file mode 100644 index a076315..0000000 --- a/host-agent/taler-monitoring-ladder.timer +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Daily GOA classic amount ladder mon page -Documentation=file:%h/src/taler-monitoring/host-agent/README.md - -[Timer] -# Once per day (CEST morning-ish on typical hosts); randomize to avoid thundering herd -OnCalendar=*-*-* 05:15:00 -Persistent=true -AccuracySec=15min -RandomizedDelaySec=30min -Unit=taler-monitoring-ladder.service - -[Install] -WantedBy=timers.target diff --git a/site-gen/caddy-monitoring-handles.snippet b/site-gen/caddy-monitoring-handles.snippet index 1fb1e1b..9ab43a7 100644 --- a/site-gen/caddy-monitoring-handles.snippet +++ b/site-gen/caddy-monitoring-handles.snippet @@ -5,7 +5,6 @@ # # CORRECT (site-level named matcher — preferred): # @mon_bare path /monitoring /monitoring_err \ -# /monitoring-ladder /monitoring-ladder_err \ # /monitoring-max-ladder /monitoring-max-ladder_err \ # /taler-monitoring-surface /taler-monitoring-surface_err \ # /taler-monitoring-aptdeploy /taler-monitoring-aptdeploy_err @@ -37,7 +36,6 @@ # --- only inside taler.hacktivism.ch { ... } --- @mon_bare path /monitoring /monitoring_err \ - /monitoring-ladder /monitoring-ladder_err \ /monitoring-max-ladder /monitoring-max-ladder_err \ /taler-monitoring-surface /taler-monitoring-surface_err \ /taler-monitoring-aptdeploy /taler-monitoring-aptdeploy_err \ @@ -63,9 +61,8 @@ } # --- bank + exchange + taler (each site block; set root host dir) --- -# /monitoring* already covers /monitoring-ladder* and /monitoring-max-ladder* +# /monitoring* already covers /monitoring-max-ladder* @mon_bare path /monitoring /monitoring_err \ - /monitoring-ladder /monitoring-ladder_err \ /monitoring-max-ladder /monitoring-max-ladder_err redir @mon_bare {path}/ 302 diff --git a/site-gen/console_to_html.py b/site-gen/console_to_html.py index a2c4af1..6141c0e 100755 --- a/site-gen/console_to_html.py +++ b/site-gen/console_to_html.py @@ -282,10 +282,10 @@ def ui(lang: str, key: str, **kwargs) -> str: "pages_title": "Monitoring pages (suite HTML)", "pages_summary": "Public sticky-bar reports · phase monpages · part of taler-monitoring", "pages_i1": "Suite name taler-monitoring ≠ URL. Public families (bare + slash each):", - "pages_i2": "1) /monitoring(+_err) · 2) /monitoring-ladder(+_err) daily classic · 3) /monitoring-max-ladder(+_err) daily max-search · 4) /taler-monitoring-surface · 5) /taler-monitoring-aptdeploy (surface/aptdeploy on taler.hacktivism.ch)", - "pages_i3": "No /taler-monitoring page; no /taler-monitoring-mail|mattermost (folded into surface). Ladder pages on GOA bank/exchange/taler landings.", + "pages_i2": "1) /monitoring(+_err) · 2) /monitoring-max-ladder(+_err) daily max-search (GOA) · 3) /taler-monitoring-surface · 4) /taler-monitoring-aptdeploy (surface/aptdeploy on taler.hacktivism.ch)", + "pages_i3": "No classic /monitoring-ladder; no /taler-monitoring page; mail|mattermost folded into surface. Max-ladder on GOA bank/exchange/taler.", "pages_i4": "monpages: existence + content markers; bare → slash redir (not merchant code 21)", - "pages_i5": "Host-agent: staging → DEPLOY_WWW_ROOT; Caddy /monitoring* also serves ladder and max-ladder paths", + "pages_i5": "Host-agent: staging → DEPLOY_WWW_ROOT; Caddy /monitoring* also serves /monitoring-max-ladder*", "pages_i6": "This page host: {host} · path label: {label}", "stage_title": "mytops stage monitoring · {host}", "stage_summary": "betel only · CHF stage stack · not lifeline/prod · not GOA", @@ -392,10 +392,10 @@ def ui(lang: str, key: str, **kwargs) -> str: "pages_title": "Pages de monitoring (HTML de la suite)", "pages_summary": "Rapports publics sticky-bar · phase monpages · partie de taler-monitoring", "pages_i1": "Nom de suite taler-monitoring ≠ URL. Familles publiques (sans et avec /) :", - "pages_i2": "1) /monitoring(+_err) · 2) /monitoring-ladder(+_err) quotidien classic · 3) /monitoring-max-ladder(+_err) max-search · 4) surface · 5) aptdeploy (surface/aptdeploy sur taler.hacktivism.ch)", - "pages_i3": "Pas de page /taler-monitoring ; pas de /taler-monitoring-mail|mattermost (dans surface). Ladder sur landings GOA bank/exchange/taler.", + "pages_i2": "1) /monitoring(+_err) · 2) /monitoring-max-ladder(+_err) quotidien max-search (GOA) · 3) surface · 4) aptdeploy (surface/aptdeploy sur taler.hacktivism.ch)", + "pages_i3": "Pas de /monitoring-ladder classic ; pas de /taler-monitoring ; mail|mattermost dans surface. Max-ladder sur landings GOA.", "pages_i4": "monpages : existence + marqueurs ; bare → slash (pas code 21 merchant)", - "pages_i5": "Host-agent : staging → DEPLOY_WWW_ROOT ; Caddy /monitoring* sert aussi ladder et max-ladder", + "pages_i5": "Host-agent : staging → DEPLOY_WWW_ROOT ; Caddy /monitoring* sert aussi /monitoring-max-ladder*", "stage_title": "Surveillance mytops stage · {host}", "stage_summary": "betel uniquement · pile CHF stage · pas lifeline/prod · pas GOA", "stage_i1": "Hôte : betel (stage). HTML mon : stage.my.taler-ops.ch + stage.taler-ops.ch /monitoring/",