release: v0.4.0 — the dependency-major (alkcall 0.10.0)

- Cargo.toml: alkcall 0.9.0 -> 0.10.0 (crates.io, the gateway
  ownership-seam release) and 0.3.0 -> 0.4.0 (breaking dep bump +
  public alkcall re-exports -> minor, matching the 0.3.0 ride on
  alkcall 0.9.0)
- Zero source changes: the 0.10.0 breaking surface (the loud
  ownership-wiring default on the GatewayDispatch spine, behind the
  opt-in gateway feature) is off this crate's paths — tunnel opens
  serve via ChannelCore::register_openable* registry dispatch, which
  0.10.0 leaves untouched
- fuzz/shared/Cargo.toml: alkcall 0.10.0 (path-linked alktunnels must
  see one alkcall version)
- CHANGELOG: 0.4.0 section + compare links
- README + docs/architecture/overview.md + AGENTS.md: the 0.10.0
  notes / dep tree / alkcall refs

Verification: cargo test (136 default / 163 with local, all green),
fuzz/shared corpus replay (5/5), clippy --all-targets -D warnings
(native + wasm32-unknown-unknown), fmt --check, wasm32 check, and
cargo publish --dry-run --allow-dirty all green
This commit is contained in:
glm-5.3-flash committed 2026-10-19 03:43:15 +00:00
1 parent 3c6fc29271
commit 200d7d3835
8 files changed
+53 -14

No files matched your search

+3 -3
View File
@@ -165,9 +165,9 @@ just spawned implementation agents.
`Identity`, `IdentityProvider`, `AccessControl`,
`OwnershipProvider`, `HandlerError`, `StreamError` come from
`alkcall::core`. Do not vendor copies into this crate. alkcall is
v0.9.x — breaking changes are expected at this major-zero stage;
v0.10.x — breaking changes are expected at this major-zero stage;
this is an early consumer, so we find and fix issues upstream
rather than working around them. Pin `alkcall = "0.9.0"` and bump
rather than working around them. Pin `alkcall = "0.10.0"` and bump
deliberately. The 0.6.0 establishment surface (ADR-049 + amendment
2) is load-bearing for this crate: tunnel opens use
`register_openable_with_establisher` so a refused target dial is
@@ -264,7 +264,7 @@ non-backend module changes.
(§POC Target 3: tunnel handler). Validates the demux→Connection→
handler→mux path and the two-pump tunnel shape over a stand-in
transport. POC code at `/workspace/alknet-channels-poc/`.
- **alkcall** — `/workspace/@alkdev/alkcall` (v0.9.x, crates.io).
- **alkcall** — `/workspace/@alkdev/alkcall` (v0.10.x, crates.io).
The substrate: call protocol + channels multiplexing. The tunnel
crate consumes `alkcall::core` types and the channels
`ChannelCore`/`ChannelClient`/`register_openable` surface.
+33 -1
View File
@@ -6,6 +6,37 @@ this crate adheres to [Semantic Versioning](https://semver.org/).
## [Unreleased]
## [0.4.0] - 2026-10-19
The dependency-major release: the alkcall substrate bumped 0.9.0 →
0.10.0 (the gateway ownership-seam release). No alktunnels API
change, no wire change; zero source changes — the only file-level
contacts with the bump are `Cargo.toml`/`Cargo.lock`. Minor rather
than patch for the 0.3.0 reason: the semver-incompatible dependency
bump plus this crate's public re-exports of alkcall types
(`ChannelOpenError`; `Establishment`/`EstablishmentError` shapes in
the producer API) make it semver-visible to downstream consumers.
### Changed
- **alkcall 0.9.0 → 0.10.0** (crates.io). The gateway
ownership-seam release (review 012): `GatewayDispatch` gains
`with_ownership_provider` / `with_static_ownership_fallback`, and
the previously-silent static fallback becomes loud — an unwired
spine refuses (an error envelope, `FORBIDDEN`, pre-dispatch) an op
whose spec carries `access_control.resource_type`. None of it is on
this crate's paths: alktunnels does not use the `gateway` feature
or `GatewayDispatch` — tunnel opens serve via
`ChannelCore::register_openable`/`register_openable_with_establisher`
registry dispatch on the native wire, which 0.10.0 leaves
untouched. All of this crate's alkcall contact points
(`register_openable`/`register_openable_with_establisher`,
`Establishment::new`, `OpenHandler`,
`ChannelClient::open_channel_with_reply`,
`ManagerError::ChannelExists`, `ChannelOpenError`) are unchanged
between 0.9.0 and 0.10.0. 136 tests pass; wasm-clean verified
(check + clippy on `wasm32-unknown-unknown`).
## [0.3.0] - 2026-10-14
The dependency-major release: the alkcall substrate bumped 0.8.1 →
@@ -301,7 +332,8 @@ complete (Phase 2, review 001 findings remediated).
matrix). Wasm-clean default crate verified (`wasm32-unknown-unknown`
check + clippy).
[Unreleased]: https://git.alk.dev/alkdev/alktunnels/compare/v0.3.0...HEAD
[Unreleased]: https://git.alk.dev/alkdev/alktunnels/compare/v0.4.0...HEAD
[0.4.0]: https://git.alk.dev/alkdev/alktunnels/compare/v0.3.0...v0.4.0
[0.3.0]: https://git.alk.dev/alkdev/alktunnels/compare/v0.2.1...v0.3.0
[0.2.1]: https://git.alk.dev/alkdev/alktunnels/compare/v0.2.0...v0.2.1
[0.2.0]: https://git.alk.dev/alkdev/alktunnels/compare/v0.1.0...v0.2.0
Generated
+3 -3
View File
@@ -27,9 +27,9 @@ dependencies = [
[[package]]
name = "alkcall"
version = "0.9.0"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3562f1f7b348cdeb3d9181eaf57b0a2fb3f988d4280e8e225dadfd7f763cb84"
checksum = "6b8ef0591beff0e3fe64b7277a67d8e7caeccf71c27538b4b7aced028d22ca44"
dependencies = [
"async-trait",
"bytes",
@@ -48,7 +48,7 @@ dependencies = [
[[package]]
name = "alktunnels"
version = "0.3.0"
version = "0.4.0"
dependencies = [
"alkcall",
"bytes",
+2 -2
View File
@@ -1,6 +1,6 @@
[package]
name = "alktunnels"
version = "0.3.0"
version = "0.4.0"
edition = "2021"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
@@ -23,7 +23,7 @@ default = []
local = ["tokio/net"]
[dependencies]
alkcall = "0.9.0"
alkcall = "0.10.0"
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
bytes = "1"
futures = "0.3"
+7
View File
@@ -316,6 +316,13 @@ change, no wire change; minor rather than patch because the
semver-incompatible dependency bump + this crate's alkcall type
re-exports make it semver-visible downstream.
0.4.0 rides the alkcall bump 0.9.0 → 0.10.0 (the gateway
ownership-seam release — the loud ownership-wiring default on the
`GatewayDispatch` spine, behind the opt-in `gateway` feature; none of
it is on this crate's paths, which serve via
`ChannelCore::register_openable*` dispatch). No alktunnels API
change, no wire change; same minor-not-patch reasoning as 0.3.0.
## Features
| Feature | Contents | wasm |
+1 -1
View File
@@ -109,7 +109,7 @@ establisher + the forwarded op (ADR-008).
```
alktunnels (default — wasm-clean)
├── alkcall 0.9.0 (core types, channels: ChannelCore/ChannelClient/manager,
├── alkcall 0.10.0 (core types, channels: ChannelCore/ChannelClient/manager,
│ pump_bidi, ServingConfig identity seam — CF-005/006,
│ establisher reply projection + flavor-form discovery
│ derivation + ChannelRelay/HubLegTemplate — review 008/ADR-051)
+3 -3
View File
@@ -27,9 +27,9 @@ dependencies = [
[[package]]
name = "alkcall"
version = "0.9.0"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3562f1f7b348cdeb3d9181eaf57b0a2fb3f988d4280e8e225dadfd7f763cb84"
checksum = "6b8ef0591beff0e3fe64b7277a67d8e7caeccf71c27538b4b7aced028d22ca44"
dependencies = [
"async-trait",
"bytes",
@@ -48,7 +48,7 @@ dependencies = [
[[package]]
name = "alktunnels"
version = "0.3.0"
version = "0.4.0"
dependencies = [
"alkcall",
"bytes",
+1 -1
View File
@@ -6,7 +6,7 @@ edition = "2021"
[dependencies]
alktunnels = { path = "../.." }
alkcall = "0.9.0"
alkcall = "0.10.0"
serde_json = "1"
bytes = "1"
tokio = { version = "1", features = ["rt", "sync", "io-util", "macros", "time"], default-features = false }