From 7f0b7436026ebdcf03ec367313bdb858b31abf95 Mon Sep 17 00:00:00 2001 From: brainx <12695242+brainx@users.noreply.github.com> Date: Sun, 26 Jul 2026 19:31:34 +0200 Subject: [PATCH 1/2] release: prepare Zeus v0.5.0 --- CHANGELOG.md | 5 +++++ docs/ROADMAP.md | 7 +++---- docs/openapi.json | 2 +- zeus/__init__.py | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index caa3c2d..44fafd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +## 0.5.0 + +- Decomposed oversized lifecycle, gateway-runtime, private-I/O, and audit + modules behind their existing compatibility facades, enforced by a + 1,200-line production-module size ratchet. - Replaced the vulnerable cryptography and Pillow pins in the hash-locked Hermes Agent 0.19.0 CI environment with their first patched releases while retaining an exact, verified compatibility override for upstream metadata. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index c767dbc..76673a9 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -2,10 +2,9 @@ ## Current status -The latest stable release is Zeus v0.4.0. The `main` branch is the -v0.5.0.dev0 development line. Zeus remains alpha software with a local-first, -host-local scope. It owns profiles, processes, lifecycle safety, and -reconciliation evidence on one host. +The latest stable release is Zeus v0.5.0. It remains alpha software with a +local-first, host-local scope. It owns profiles, processes, lifecycle safety, +and reconciliation evidence on one host. ## Shipped diff --git a/docs/openapi.json b/docs/openapi.json index b38dc0d..c9241cd 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.1.0", "info": { "title": "Zeus Local API", - "version": "0.5.0.dev0", + "version": "0.5.0", "description": "Local JSON API for managing Hermes bot profiles and gateway lifecycle." }, "servers": [ diff --git a/zeus/__init__.py b/zeus/__init__.py index d10309f..e9ce495 100644 --- a/zeus/__init__.py +++ b/zeus/__init__.py @@ -2,4 +2,4 @@ __all__ = ["__version__"] -__version__ = "0.5.0.dev0" +__version__ = "0.5.0" From f0d71bd0399e07077c46a764345e6366047e49a7 Mon Sep 17 00:00:00 2001 From: brainx <12695242+brainx@users.noreply.github.com> Date: Fri, 31 Jul 2026 22:20:12 +0200 Subject: [PATCH 2/2] test: correlate rate-limit audit rows by request ID --- tests/test_api.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index 4784920..f34d734 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -2665,8 +2665,9 @@ def test_valid_key_bypasses_exhausted_global_invalid_auth_bucket(self) -> None: rows = wait_for_access_rows(state_dir, 4) - limited_row = rows[2] - self.assertEqual(response_headers["x-request-id"], limited_row["request_id"]) + limited_row = next( + row for row in rows if row["request_id"] == response_headers["x-request-id"] + ) self.assertEqual(429, limited_row["status"]) self.assertEqual("auth_rate_limited", limited_row["error_code"]) self.assertEqual("/bots", limited_row["route"]) @@ -2855,8 +2856,9 @@ def test_rate_limited_mutation_creates_no_idempotency_claim_and_is_correlated(se self.assertEqual(0, claim_count) rows = wait_for_access_rows(state_dir, 2) - limited_row = rows[1] - self.assertEqual(response_headers["x-request-id"], limited_row["request_id"]) + limited_row = next( + row for row in rows if row["request_id"] == response_headers["x-request-id"] + ) self.assertEqual(429, limited_row["status"]) self.assertEqual("mutation_rate_limited", limited_row["error_code"]) self.assertEqual("/bots/{bot_id}/start", limited_row["route"])