diff --git a/VERSION b/VERSION index b0f139e..237a256 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.13.7 +1.13.8 diff --git a/VERSIONS.md b/VERSIONS.md index 2b6de89..cd8c2d6 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -17,6 +17,7 @@ Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.8.0`). File `VERSION` omits the `v` pre | Tag | Date (UTC) | Notes | |-----|------------|--------| +| **v1.13.8** | 2026-07-19 | **Bugfix:** monpages **TOP** meta/marker failures (missing generated/version-link/taler-mon-page, empty race body) are **WARN only** — no longer self-red the run; optional `MONPAGES_TOP_STRICT=1` restores ERROR. | | **v1.13.7** | 2026-07-19 | **Bugfix:** move optional/meta scripts under `meta/` (deprecated mail/mm units, firecuda outside-runner, legacy multi-host site-gen); production path stays host-agent + `site-gen/console_to_html.py`. | | **v1.13.6** | 2026-07-19 | **Bugfix:** machine paths and SSH hosts only via env (`~/.config/taler-monitoring/env` / `taler-monitoring-env`); suite loads env before defaults; no `/home/hernani` or bogus host hardcodes. | | **v1.13.5** | 2026-07-19 | **Bugfix:** progress bar — env-aware phase estimates (CHECK_BANK/LANDING, mon hosts); re-fit total after each phase (done+remaining); drop fake +12 for host-agent monpages post-check (fixes stage 42/139→46/46 snap). | diff --git a/check_monitoring_pages.sh b/check_monitoring_pages.sh index 6135612..707853a 100755 --- a/check_monitoring_pages.sh +++ b/check_monitoring_pages.sh @@ -356,8 +356,14 @@ validate_mon_content() { pct=$(_progress_max_pct "$f") if [ "$top_ok" != "1" ]; then + # TOP missing is WARN-only (v1.13.8+): mid-run races and incomplete + # /monitoring stubs used to self-red the next HTML. Hard ERROR still for + # missing page / code 21 / non-suite body. Override: MONPAGES_TOP_STRICT=1. _MON_CONTENT_MSG="TOP: $_MON_CONTENT_MSG" - return 1 + if [ "${MONPAGES_TOP_STRICT:-0}" = "1" ]; then + return 1 + fi + return 2 fi if [ "$body_ok" != "1" ]; then _MON_CONTENT_MSG="BODY: $_MON_CONTENT_MSG" @@ -495,9 +501,17 @@ check_one() { return 0 ;; 2) - # mid-run: bottom may be incomplete — not ERROR - warn "public mon page mid-run" "$url -> ${_MON_CONTENT_MSG}" - ok "public mon page" "$url -> HTTP 200 suite HTML (mid-run bottom relaxed)" + # soft: TOP incomplete / mid-run bottom — WARN, never hard fail + case "${_MON_CONTENT_MSG}" in + TOP:*) + warn "public mon page content" \ + "$url -> ${_MON_CONTENT_MSG} (WARN only; set MONPAGES_TOP_STRICT=1 to ERROR)" + ;; + *) + warn "public mon page mid-run" "$url -> ${_MON_CONTENT_MSG}" + ok "public mon page" "$url -> HTTP 200 suite HTML (mid-run bottom relaxed)" + ;; + esac rm -f "$body" return 0 ;; @@ -508,6 +522,17 @@ check_one() { sleep "$sleep_s" 2>/dev/null || sleep 1 continue fi + # TOP failures should already be soft (return 2); belt-and-braces: + case "${_MON_CONTENT_MSG}" in + TOP:*) + if [ "${MONPAGES_TOP_STRICT:-0}" != "1" ]; then + warn "public mon page content" \ + "$url -> ${_MON_CONTENT_MSG} (WARN only; set MONPAGES_TOP_STRICT=1 to ERROR)" + rm -f "$body" + return 0 + fi + ;; + esac # Pre-publish inventory in host-agent PHASES: WARN only (post-check is hard) if [ "$pre_pub" = "1" ] || [ "$soft" = "1" ]; then warn "public mon page content" \