From 6314ab1807ad3d4fffe55021241f5118dc193c9c Mon Sep 17 00:00:00 2001 From: alexeybe1kin <210597588+alexeybe1kin@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:01:14 +0200 Subject: [PATCH] Release SystemGate 0.5.0 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 8 ++++++++ systemgate/main.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4dcb69..5f4497f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ replacing a module has to be a decision with visible consequences. ## Unreleased +## 0.5.0 + +- **Unavailable data is reported, not hidden or failed.** `/vitals` answers `disk: null` when + `SYSTEMGATE_DISK_PATH` is invalid instead of a 500; `/services` answers + `status: "unavailable"` with `errors: ["service_enumeration_unavailable"]` when the host denies + the listing, instead of an empty inventory reported as success. An invalid or out-of-range + `SYSTEMGATE_PORT` stops startup with a clear configuration error. + - **Backup verification reads each archive once instead of twice.** `GET /backups` hashed every snapshot file and then read every archive member's payload to the end, doubling the disk reads of large model archives on each request. The hash already proves the bytes match the manifest, diff --git a/systemgate/main.py b/systemgate/main.py index f8c2be7..52b1a28 100644 --- a/systemgate/main.py +++ b/systemgate/main.py @@ -85,7 +85,7 @@ async def lifespan(app: FastAPI): # One place, so /health and the OpenAPI document cannot disagree about # which version is running. They had: /health said 0.1.0 at tag v0.2.1. -SERVICE_VERSION = "0.4.0" +SERVICE_VERSION = "0.5.0" app = FastAPI(title="SystemGate", version=SERVICE_VERSION, lifespan=lifespan)