Files
alkhttp/CHANGELOG.md
glm-5.3-flash 911f186629 chore: release alkhttp 0.5.0
- 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
2026-09-18 13:48:26 +00:00

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

  • alkcall dependency 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 no Establishment reply fields (the WS ferry passes Option<OpenEstablisher> through unchanged; reply-field projection is an establisher-supplier feature), imports no marked specs through from_call (the from_wss operation filter excludes the protocol-session ops; any domain op the remote serves imports as a forwarding bundle exactly as before), and consumes neither ChannelRelay nor HubLegImports/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's with_ws_openable_alpns open-op specs whose names are not standard channels/<seg>/(sub|pub) shapes, the served services/list / services/schema output now carries an explicit channel_open_alpn string alongside the boolean marker (alkcall 0.8.0's U-1, ADR-047 amendment 3) — so hubs relaying through a from_call import 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-version floor raised 1.85 → 1.88 (patch bump, no API change). The 1.85 claim was already false at the dependency level: the resolved lockfile pulls icu_* 2.x (MSRV 1.86 via jsonschemaidna) 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 toolchain cargo test --locked + clippy --all-targets -D warnings clean; one 1.88 clippy lint fixed (uninlined_format_args in a forward.rs test).

  • alkcall dependency consumed at 0.7.1 (lockfile bump; the version = "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

  • alkcall dependency 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 no ServingConfig (the one struct-literal break — from_wss keeps the pure-consumer ChannelClient::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 retryable CONNECTION_CLOSED). The code is retryable: true, so the existing retry_after details path applies on 503. Tests pin the mapping and the Retry-After passthrough. 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

  • alkcall dependency bumped to 0.6.0 (review 007's establishment follow-ups sweep). One consumer-visible change: the OpenHandler signature gained a plan parameter — Fn(Value, Option<ChannelPlan>, Connection, AuthContext) -> JoinHandle<()> — so OpenableAlpn::new callers' handler closures gain a _plan argument (mechanical). With an establisher attached (ADR-049), its Establishment.plan (a typed-opaque Arc<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 the Option<OpenEstablisher> through unchanged and constructs no Establishment itself, so the ride is otherwise additive — alkcall 0.6.0's channels::pump_bidi helper (ADR-050) is available to data-plane handlers this crate ferries. Docs updated (websocket.md, OpenableAlpn field docs, adapter.rs).

[0.2.0] — 2026-09-06

Changed

  • alkcall dependency bumped to 0.2 with the gateway feature enabled. The transport-neutral dispatch spine now comes from alkcall::gateway (promoted from this crate per alkcall ADR-048): GatewayDispatch, schema_disclosure_denial, and DEFAULT_DEADLINE are re-exported from alkhttp::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 in alkcall/docs/reviews/consumer-findings-ledger.md.
  • alkcall dependency 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_operations so list-peers sees peer-announced ops (UP-03).
    • 0.4.0 — the registry enforces input_schema at call time (ADR-016 INVALID_INPUT leg); 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): OpenableAlpn gains establisher: Option<OpenEstablisher> and establisher_timeout: Option<Duration> (both default None via OpenableAlpn::new, so existing constructions compile unchanged) plus a with_establisher(establisher, timeout) builder; the WS ferry calls register_openable_with_establisher, threading both fields through. With an establisher attached, the open op awaits the bounded establishment phase before the reply and resolves channel:open_failed with details.reason on failure — the channel never exists consumer-side. Without one, behavior is the pre-0.5 shape. The alkcall 0.5.0 open_channel error-type change needs no alkhttp change (this crate never calls open_channel; from_wss uses ChannelClient::from_connection only).
  • /publish chunk validation uses the registry-owned validator (CF-003). The local compile-once PublishSchemaCache (gateway/schema_cache.rs) is removed — publish_schema is compiled at registration time by alkcall and exposed as OperationRegistry::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 /publish chunk 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 retryable CONNECTION_CLOSED on both resolution paths (the drop monitor and the undelivered-request write failure) — the previously tolerated non-retryable INTERNAL: failed to write request frame outcome on the race path is gone.

Notes

  • CF-004 convergence: the alkhttp-local services/schema defense-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.