From 94da86f573b7b23c3514d8b0cd2be34ac0094903 Mon Sep 17 00:00:00 2001 From: OliverGiertz Date: Mon, 6 Apr 2026 17:50:43 +0000 Subject: [PATCH] fix(checker): 4xx/5xx responses count as down not degraded Co-Authored-By: Claude Sonnet 4.6 --- public/status.json | 30 +++++++++++++++--------------- scripts/check_status.py | 4 +++- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/public/status.json b/public/status.json index 4fd8f83..cd757f1 100644 --- a/public/status.json +++ b/public/status.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-04-06T17:49:58Z", + "generated_at": "2026-04-06T17:50:59Z", "overall": "degraded", "services": [ { @@ -11,9 +11,9 @@ 301, 302 ], - "status": "degraded", + "status": "down", "status_code": 403, - "response_time_ms": 641, + "response_time_ms": 72, "error": null }, { @@ -27,7 +27,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 1589, + "response_time_ms": 210, "error": null }, { @@ -41,7 +41,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 1133, + "response_time_ms": 521, "error": null }, { @@ -55,7 +55,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 518, + "response_time_ms": 85, "error": null }, { @@ -69,7 +69,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 564, + "response_time_ms": 90, "error": null }, { @@ -83,7 +83,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 684, + "response_time_ms": 36, "error": null }, { @@ -97,7 +97,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 595, + "response_time_ms": 33, "error": null }, { @@ -111,7 +111,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 1184, + "response_time_ms": 106, "error": null }, { @@ -125,7 +125,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 1201, + "response_time_ms": 163, "error": null }, { @@ -139,7 +139,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 504, + "response_time_ms": 91, "error": null }, { @@ -153,7 +153,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 709, + "response_time_ms": 85, "error": null }, { @@ -165,7 +165,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 481, + "response_time_ms": 98, "error": null }, { @@ -177,7 +177,7 @@ ], "status": "up", "status_code": 200, - "response_time_ms": 486, + "response_time_ms": 91, "error": null } ], diff --git a/scripts/check_status.py b/scripts/check_status.py index bb495f2..af4a5e6 100644 --- a/scripts/check_status.py +++ b/scripts/check_status.py @@ -64,7 +64,9 @@ def check_http(url: str, expected: list[int]) -> dict: return {"status": "down", "status_code": None, "response_time_ms": None, "error": str(e)[:80]} ms = round((time.time() - start) * 1000) up = code in expected - return {"status": "up" if up else "degraded", "status_code": code, "response_time_ms": ms, "error": None} + # 4xx/5xx server errors count as down, not just degraded + status = "up" if up else ("down" if code >= 400 else "degraded") + return {"status": status, "status_code": code, "response_time_ms": ms, "error": None} def check_ssl(domain: str) -> dict: