release 1.10.1: ignore converter wrote-errors lines in sticky count

This commit is contained in:
Hernâni Marques 2026-07-19 01:28:01 +02:00
parent 321df897ef
commit ecb0cf8b4a
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
3 changed files with 11 additions and 1 deletions

View file

@ -1 +1 @@
1.10.0
1.10.1

View file

@ -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.10.1** | 2026-07-19 | **Bugfix:** HTML converter must not treat teed `wrote … (errors=N)` lines as ERROR (false sticky red after clean host-agent runs). |
| **v1.10.0** | 2026-07-19 | **Feature:** aptdeploy **container overview board** — inventory + per-pod matrix (state, merchant, httpd, ldd, OK/ERROR) in log and HTML sticky/top (`#container-overview`). |
| **v1.9.4** | 2026-07-19 | **Fix:** restore **taler-monitoring-aptdeploy(+_err)** as first-class GOA mon page (catalog + monpages path allow + surface docs). Mail/mattermost stay folded into surface. |
| **v1.9.3** | 2026-07-19 | **Bugfix (suite):** monpages merchant **code 21** always ERROR (bare no longer soft-WARN); apply hints use absolute `/home/hernani/koopa-caddy/…`; ship `host-agent/apply-monitoring-live.sh` (smoke array, bare check); fix ROOT-ON-KOOPA wrong `redir /path/ 302` examples. |

View file

@ -196,6 +196,9 @@ def classify(line: str) -> str:
return "meta"
if "numbered checks" in line.lower() or "totals:" in line.lower():
return "meta"
# host-agent tees converter "wrote … (errors=N …)" into the same log
if line.lstrip().lower().startswith("wrote ") and "errors=" in line.lower():
return "meta"
if "BLOCKER" in u or "┌ BLOCKER" in u:
return "blocker"
if "ERROR" in u or "┌ ERROR" in u:
@ -313,6 +316,12 @@ def is_summary_error_line(ln: str) -> bool:
return True
if "totals:" in low:
return True
# console_to_html "wrote … (errors=N warnings=M level=…)" is teed into the
# host-agent log; "errors=" uppercases to "ERRORS=" and must not count as ERROR.
if low.lstrip().startswith("wrote ") and "errors=" in low:
return True
if "level=red" in low and "wrote " in low:
return True
# header-ish RUN_TIMEOUT= without error badge
if is_run_timeout_text(ln) and "ERROR" not in ln.upper() and "run.timeout" not in low:
return True