From be1f44949f66466228e2cd4754126e49f896501d Mon Sep 17 00:00:00 2001 From: Albert Mavashev Date: Mon, 27 Jul 2026 13:37:11 -0400 Subject: [PATCH] chore: raise runcycles dependency floor to >=0.5.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit runcycles 0.5.0 ships durable commit retries: an on-disk journal with replay, a POST /v1/events fallback for commits that land after reservation expiry, and 429/auth commit handling that never releases spent budget (runcycles/cycles-client-python#89). Floor bump only — no guard code changes. The guard calls commit_reservation directly, so the documented commit-uncertainty exception contract (AP2GuardCommitUncertain / AP2GuardCommitFailed) is unchanged. Adopting the SDK's commit retry engine is a candidate follow-up; it would shift transient commit failures from "uncertain, caller reconciles" to "journaled, will settle" and needs its own reviewed change to the exception mapping and docs. Verified against runcycles==0.5.0: 148 tests passed (5 integration tests skipped without a live server), 99.21% coverage (gate 95%). --- AUDIT.md | 6 ++++++ CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/AUDIT.md b/AUDIT.md index a257077..ebd9197 100644 --- a/AUDIT.md +++ b/AUDIT.md @@ -2,6 +2,12 @@ Per `CLAUDE.md`: this file records material changes to the repo (server, admin, client). For a client package, that means public API, on-the-wire request shape, and protocol-conformance posture. +## 2026-07-27 — runcycles floor raised to 0.5.0 + +**Scope:** dependency floor only; no wire-shape, public API, or exception-contract change + +`pyproject.toml` raises the `runcycles` floor from `>=0.4.1` to `>=0.5.0` (durable commit retries: on-disk journal with replay, `POST /v1/events` fallback for expired commits, 429/auth handling that never releases spent budget). The guard's direct `commit_reservation` calls do not engage the SDK's new retry engine, so the documented `AP2GuardCommitUncertain` / `AP2GuardCommitFailed` semantics are unchanged; engine adoption is a candidate follow-up that would shift transient commit failures from "uncertain, caller reconciles" to "journaled, will settle". Full suite against `runcycles==0.5.0`: 148 tests passed, 99.21% coverage (gate 95%). + ## 2026-05-13 — v0.3.0 — wire-shape change: AP2 routing moves to Subject.dimensions **Author:** v0.3.0 release, prompted by a live integration smoke test against `cycles-server:0.1.25.18` diff --git a/CHANGELOG.md b/CHANGELOG.md index 921fa69..36135c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed +- `runcycles` dependency floor raised from `>=0.4.1` to `>=0.5.0`. runcycles 0.5.0 ships durable commit retries (on-disk journal with replay, `POST /v1/events` fallback for expired commits, 429/auth handling that never releases spent budget). No guard code changes: the guard calls `commit_reservation` directly, so the documented commit-uncertainty exception contract (`AP2GuardCommitUncertain` / `AP2GuardCommitFailed`) is unchanged. + +### Unchanged +- Public Python API, wire shape, idempotency-key derivation, exception contract. + ## [0.3.0] — 2026-05-13 ### Changed (wire shape) diff --git a/pyproject.toml b/pyproject.toml index 6523575..f7e4993 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,7 +60,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "runcycles>=0.4.1", + "runcycles>=0.5.0", "pydantic>=2.0", ]