diff --git a/AUDIT.md b/AUDIT.md index 33cf0ab..e6b67df 100644 --- a/AUDIT.md +++ b/AUDIT.md @@ -1,6 +1,7 @@ # Cycles Protocol v0.1.25 — Client (Python) Audit -**Date:** 2026-05-22 (v0.4.3 — `expires_from`/`expires_to` and `finalized_from`/`finalized_to` ISO-8601 window-filter passthrough on `list_reservations` per `cycles-protocol-v0.yaml` revision 2026-05-22; closes the Python-client side of runcycles/cycles-server#162. No code change — `**query_params` already forwards arbitrary kwargs. Added sync + async regression tests; unlike `from`/`to` the new param names are plain kwargs (no Python-reserved-word workaround needed). 393 tests pass at 100% coverage.), +**Date:** 2026-07-03 (integration-test-only, no version bump — `test_health_check` now probes the public `/actuator/health/readiness` endpoint instead of aggregate `/actuator/health`, which requires `X-Admin-API-Key` since cycles-server v0.1.25.45 and fails closed with 500 when the server has no admin key configured. The old assertion had failed the org nightly Full-Stack Integration every night since 2026-06-28. No library code change.), +2026-05-22 (v0.4.3 — `expires_from`/`expires_to` and `finalized_from`/`finalized_to` ISO-8601 window-filter passthrough on `list_reservations` per `cycles-protocol-v0.yaml` revision 2026-05-22; closes the Python-client side of runcycles/cycles-server#162. No code change — `**query_params` already forwards arbitrary kwargs. Added sync + async regression tests; unlike `from`/`to` the new param names are plain kwargs (no Python-reserved-word workaround needed). 393 tests pass at 100% coverage.), 2026-05-21 (v0.4.2 — `from` / `to` ISO-8601 window-filter passthrough on `list_reservations` per `cycles-protocol-v0.yaml` revision 2026-05-21; closes the client side of runcycles/cycles-server#159. No code change — the existing `**query_params` signature already forwards arbitrary kwargs to the URL query string. Added sync + async regression tests that lock the passthrough in (using the `**{"from": ..., "to": ...}` dict-unpack form because `from` is a Python reserved keyword). 391 tests pass at 100% coverage.), 2026-03-14 **Spec:** `cycles-protocol-v0.yaml` (OpenAPI 3.1.0, v0.1.25) diff --git a/tests/integration/test_live_server.py b/tests/integration/test_live_server.py index 8ac3777..1b2c737 100644 --- a/tests/integration/test_live_server.py +++ b/tests/integration/test_live_server.py @@ -26,8 +26,14 @@ def test_health_check(): - """Server responds to health endpoint.""" - res = requests.get(f"{BASE}/actuator/health", timeout=5) + """Server responds to its public readiness probe. + + Aggregate /actuator/health requires X-Admin-API-Key since cycles-server + v0.1.25.45 (500 when the server has no admin key configured); the + liveness/readiness probes are the public, Redis-aware health contract + a credential-less client can rely on. + """ + res = requests.get(f"{BASE}/actuator/health/readiness", timeout=5) assert res.status_code == 200