- version bump 0.4.1 -> 0.5.0 (minor per the dep-wave convention: 0.3.0 rode alkcall 0.6.0, 0.4.0 rode alkcall 0.7.0) - README usage snippet 0.4.1 -> 0.5.0 - changelog: cut [0.5.0] with the alkcall 0.8.0 consumption under Changed — the additive-only audit (reply fields, relay/hub-leg, flavor-form discovery) and the one ride-through discovery change (explicit channel_open_alpn for non-standard open-op names) Verification: cargo test/clippy/fmt/doc green in the preceding deps commit; no source change in this commit
8.5 KiB
Changelog
All notable changes to this crate are documented here. The format is based on Keep a Changelog, and this crate adheres to Semantic Versioning.
[Unreleased]
[0.5.0] — 2026-09-18
Changed
alkcalldependency bumped to 0.8.0 (review 008's remediation wave: the graduation upstream asks + the in-tree channel relay). No code change in this crate — alkcall 0.8.0 is additive on the call-plane JSON and the registry seams, and none of its new surfaces are constructed here: this crate builds noEstablishmentreply fields (the WS ferry passesOption<OpenEstablisher>through unchanged; reply-field projection is an establisher-supplier feature), imports no marked specs throughfrom_call(thefrom_wssoperation filter excludes the protocol-session ops; any domain op the remote serves imports as a forwarding bundle exactly as before), and consumes neitherChannelRelaynorHubLegImports/HubLegTemplate(hub-leg assembly remains the consumer's concern at the assembly layer). One ride-through visible on this crate's discovery surface: for a deployment'swith_ws_openable_alpnsopen-op specs whose names are not standardchannels/<seg>/(sub|pub)shapes, the servedservices/list/services/schemaoutput now carries an explicitchannel_open_alpnstring alongside the boolean marker (alkcall 0.8.0's U-1, ADR-047 amendment 3) — so hubs relaying through afrom_callimport of those ops reconstruct the marker instead of seeing plain forwarding stubs. Standard-shape open-op names stay byte-stable. Minor bump per the dep-wave convention (0.3.0 rode alkcall 0.6.0; 0.4.0 rode 0.7.0).
[0.4.1] — 2026-09-10
Changed
-
rust-versionfloor raised 1.85 → 1.88 (patch bump, no API change). The 1.85 claim was already false at the dependency level: the resolved lockfile pullsicu_*2.x (MSRV 1.86 viajsonschema→idna) and — since alkcall 0.7.1 — alkcall itself declares 1.88, so 1.85 toolchains cannot build the tree regardless of what Cargo.toml declared. Raising the floor to 1.88 aligns with the ecosystem MSRV decision (noq QUIC path; recorded for alktls in OQ-TLS-08) and breaks no downstream that could build the crate before. Verified: 1.88 toolchaincargo test --locked+ clippy--all-targets -D warningsclean; one 1.88 clippy lint fixed (uninlined_format_argsin aforward.rstest). -
alkcalldependency consumed at 0.7.1 (lockfile bump; theversion = "0.7"requirement already covered it). No code change forced — alkcall 0.7.1's changes are its own MSRV-floor raise plus the cf-006/cf-007 feature work already consumed in the 0.7.0 wave.
[0.4.0] — 2026-09-07
Changed
alkcalldependency bumped to 0.7.0 (CF-005/006/007 — the connect-side caller-identity seam + the downstream-findings sweep). No code change in this crate: it constructs noServingConfig(the one struct-literal break —from_wsskeeps the pure-consumerChannelClient::from_connection; opt-in serving remains the review-006 Part C deferred decision) and the per-call opener-identity overlay (CF-006) is behavior-only upstream — hub-forwarded opens on the WS ferry now resolve the end client's identity instead of the hub's, the intended effect. alkcall 0.7.0's ADR-016 amendment (the protocol-code list is eight codes) resolves the upstream half of review-006 Part C's doc-drift note.
Changed (wire-surface behavior)
- Gateway error table maps
CONNECTION_CLOSED→ 503 Service Unavailable (the alkcall 0.7.0 CF-007 amendment makes it the eighth protocol code; ADR-023 amended). Previously it fell to the catch-all 500, which misreported a retryable, provably-undelivered call as a permanent server failure. Reachable through the gateway when an imported op's forwarding handler calls into a dropped transport (from_wss's pending-call fail-all is retryableCONNECTION_CLOSED). The code isretryable: true, so the existingretry_afterdetails path applies on 503. Tests pin the mapping and theRetry-Afterpassthrough. Behavioral break for HTTP callers matching on the 500 previously emitted for this code — hence a minor bump, not a patch.
[0.3.0] — 2026-09-07
Changed
alkcalldependency bumped to 0.6.0 (review 007's establishment follow-ups sweep). One consumer-visible change: theOpenHandlersignature gained a plan parameter —Fn(Value, Option<ChannelPlan>, Connection, AuthContext) -> JoinHandle<()>— soOpenableAlpn::newcallers' handler closures gain a_planargument (mechanical). With an establisher attached (ADR-049), itsEstablishment.plan(a typed-opaqueArc<dyn Any + Send + Sync>) is threaded process-locally to the handler's plan parameter: ALPN crates dial/allocate in the establisher and deliver the live handle without a side-channel handoff. This crate's WS ferry passes theOption<OpenEstablisher>through unchanged and constructs noEstablishmentitself, so the ride is otherwise additive — alkcall 0.6.0'schannels::pump_bidihelper (ADR-050) is available to data-plane handlers this crate ferries. Docs updated (websocket.md,OpenableAlpnfield docs, adapter.rs).
[0.2.0] — 2026-09-06
Changed
alkcalldependency bumped to 0.2 with thegatewayfeature enabled. The transport-neutral dispatch spine now comes fromalkcall::gateway(promoted from this crate per alkcall ADR-048):GatewayDispatch,schema_disclosure_denial, andDEFAULT_DEADLINEare re-exported fromalkhttp::gateway; the local copy (gateway/dispatch.rs) was deleted. The spine is used with the 30 s default deadline (identical behavior to the local version). alkcall 0.2 also carries the consumer-findings fixes CF-001..004 documented inalkcall/docs/reviews/consumer-findings-ledger.md.alkcalldependency bumped to 0.4.1 (through 0.3, 0.4.0):- 0.3 — per-session fork, serving loop, and
op/register(the WS op/register ACL surface in this crate builds on it); 0.3.1 —PeerCompositeEnv::peer_operationssolist-peerssees peer-announced ops (UP-03). - 0.4.0 — the registry enforces
input_schemaat call time (ADR-016INVALID_INPUTleg); adapters no longer need to validate before dispatch. - 0.4.1 — early-arrival chunks are parked for un-adopted channels, closing the open/first-data race on the WS overlay.
- 0.5.0 — the channels establisher phase (ADR-049):
OpenableAlpngainsestablisher: Option<OpenEstablisher>andestablisher_timeout: Option<Duration>(both defaultNoneviaOpenableAlpn::new, so existing constructions compile unchanged) plus awith_establisher(establisher, timeout)builder; the WS ferry callsregister_openable_with_establisher, threading both fields through. With an establisher attached, the open op awaits the bounded establishment phase before the reply and resolveschannel:open_failedwithdetails.reasonon failure — the channel never exists consumer-side. Without one, behavior is the pre-0.5 shape. The alkcall 0.5.0open_channelerror-type change needs no alkhttp change (this crate never callsopen_channel;from_wssusesChannelClient::from_connectiononly).
- 0.3 — per-session fork, serving loop, and
/publishchunk validation uses the registry-owned validator (CF-003). The local compile-oncePublishSchemaCache(gateway/schema_cache.rs) is removed —publish_schemais compiled at registration time by alkcall and exposed asOperationRegistry::publish_validator; an un-compilable schema is now a registration error, so the fail-open window this cache closed GW-side cannot exist upstream either. The/publishchunk stream resolves against the registry's cached validator.- The from_wss drop monitor and the WS overlay tests use
CallError::connection_closed(CF-001), and the review-001-ws-eof-signal race tests now assert retryableCONNECTION_CLOSEDon both resolution paths (the drop monitor and the undelivered-request write failure) — the previously tolerated non-retryableINTERNAL: failed to write request frameoutcome on the race path is gone.
Notes
- CF-004 convergence: the alkhttp-local
services/schemadefense-in-depth guard remains, but its shared check (schema_disclosure_denial) is now alkcall's promoted implementation (ADR-048); the alkhttp-local copy is gone. See ADR-071 for the updated disposition.