From ba94c70eb20f607ca8cf268ac569ded1dc776ec7 Mon Sep 17 00:00:00 2001 From: "glm-5.3-flash" Date: Fri, 4 Sep 2026 16:01:56 +0000 Subject: [PATCH] chore: bump to 0.3.1, changelog for the UP-03 list-peers fix Verification: 590 default / 607 all-features tests, clippy (all-targets, all-features, wasm32) clean, fmt clean, publish dry-run OK. --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f6d586..b167454 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,37 @@ All notable changes to this crate are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this crate adheres to [Semantic Versioning](https://semver.org/). +## [0.3.1] - 2026-09-04 + +Bug-fix release: `services/list-peers` can now list peer-announced +ops. No API breaks — `OperationEnv` gains one defaulted trait method +(non-breaking for all implementors; `cargo semver-checks` 196 checks +pass against the 0.3.0 baseline). + +### Fixed + +- **`services/list-peers` shows each peer's operations** + (UP-03, surfaced by alkhttp's review 006). `PeerCompositeEnv` + overrode `peer_ids` only, so `peer_operations` fell to the trait + default (`Vec::new()`) and every peer listed with an empty + operations array — the ADR-022 amendment's "announced op is + discoverable via `services/list-peers`" promise never resolved on + the wire. ADR-030 prescribed the fix but it had never been ported + into alkcall; the existing `list-peers` unit tests passed because + they mock `peer_operations` with hand-rolled envs. Implemented per + ADR-030: `OperationEnv::list_operation_names` (default `Vec::new()`) + + overrides on `OverlayOperationEnv` (overlay map keys), + `PeerCompositeEnv` (`peer_operations` delegates to the peer's + overlay; its own aggregate mirrors `contains()`: session + + connections + base), `LocalOperationEnv` (registry names), and + `ChannelsSessionEnv` (delegates to base). Gate: + `announced_op_is_discoverable_via_services_list_peers` exercises the + exact `compose_root_env` shape (announce via `op/register`, then + assert both the `peer_operations` probe and the `services/list-peers` + wire shape attribute the op to the peer) — verified load-bearing + (reverting the override fails the gate). ADR-030 status is now + Accepted with the UP-03 provenance note. + ## [0.3.0] - 2026-09-04 The connect side can serve (two-way ops over one channels connection), @@ -233,6 +264,7 @@ Vendored core types (`Connection`, `ProtocolHandler`, `BiStream`, (ADR-046), the channels protocol with openable-ALPNs-as-operations (ADR-047), and the `ChannelClient` transport-agnostic client. +[0.3.1]: https://git.alk.dev/alkdev/alkcall/releases/tag/v0.3.1 [0.3.0]: https://git.alk.dev/alkdev/alkcall/releases/tag/v0.3.0 [0.2.0]: https://git.alk.dev/alkdev/alkcall/releases/tag/v0.2.0 [0.1.1]: https://git.alk.dev/alkdev/alkcall/releases/tag/v0.1.1 diff --git a/Cargo.lock b/Cargo.lock index 2da4446..4f6b385 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,7 +27,7 @@ dependencies = [ [[package]] name = "alkcall" -version = "0.3.0" +version = "0.3.1" dependencies = [ "async-trait", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 25ff382..d53b79d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "alkcall" -version = "0.3.0" +version = "0.3.1" edition = "2021" rust-version = "1.85" license = "MIT OR Apache-2.0"