2 Commits
Author SHA1 Message Date
glm-5.3-flash db051dd068 release: v0.3.1 — the dependency-patch (alkcall 0.10.1 / alktunnels 0.4.1)
- alkcall 0.10.0 -> 0.10.1: the adoption-window ordering fix (review
  013, routed from alkgit's wave-2 gate) — install+park-drain is one
  atomic section in the channels demux; the fix surface is private
  upstream, no change on this crate's paths (relevant in principle to
  the bind-first adopt flow)
- alktunnels 0.4.0 -> 0.4.1: the dependency-patch ride, no
  API/wire change
- fuzz/shared harness alkcall pin bumped in lockstep
- doc pins: AGENTS.md convention 11, README (rides paragraph),
  overview.md dependency tree + feature table; CHANGELOG 0.3.1 entry

Verification: cargo test (145 passed), cargo test --all-features
(638 passed), fuzz corpus replay green, clippy (all-targets +
wasm32-unknown-unknown) -D warnings clean, cargo fmt --check clean,
wasm check green, cargo doc clean, publish dry-run clean
2026-10-22 06:33:12 +00:00
glm-5.3-flash b548a47449 docs: AGENTS.md — the release steps pinned (annotated tags, the v0.3.0 flow) 2026-10-19 03:58:29 +00:00
6 changed files with 75 additions and 17 deletions

No files matched your search

+11 -1
View File
@@ -181,7 +181,7 @@ implementation agents.
`alkcall::core`. Do not vendor copies into this crate. alkcall is `alkcall::core`. Do not vendor copies into this crate. alkcall is
v0.10.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 this is an early consumer, so we find and fix issues upstream
rather than working around them. Pin `alkcall = "0.10.0"` and bump rather than working around them. Pin `alkcall = "0.10.1"` and bump
deliberately. The establishment surface (alkcall ADR-049 + deliberately. The establishment surface (alkcall ADR-049 +
amendments) is load-bearing for this crate: SOCKS5 session opens amendments) is load-bearing for this crate: SOCKS5 session opens
use `register_openable_with_establisher` so a refused/auth-failed use `register_openable_with_establisher` so a refused/auth-failed
@@ -279,6 +279,16 @@ cargo clippy --target wasm32-unknown-unknown -- -D warnings
cargo publish --dry-run --allow-dirty # before a release cargo publish --dry-run --allow-dirty # before a release
``` ```
### Release steps (after the version bump + verification)
1. Commit the release (bump + CHANGELOG/README/AGENTS pins).
2. Tag it: `git tag -a vX.Y.Z -m "release: vX.Y.Z — <the tag>"`
— **annotated**, always (v0.1.0/v0.2.0 are lightweight; annotated
since the v0.3.0 release, 2026-10-19).
3. `git push origin main && git push origin vX.Y.Z`.
4. `cargo publish` (no `--allow-dirty` once the tree is clean).
5. Confirm with `cargo search` / `cargo info`.
The corpus replay is the fuzz gate (the alkcall §7.9 posture): it The corpus replay is the fuzz gate (the alkcall §7.9 posture): it
replays every committed seed through the same invariant functions the replays every committed seed through the same invariant functions the
fuzz targets run, on stable, without nightly. Campaigns (nightly, fuzz targets run, on stable, without nightly. Campaigns (nightly,
+40 -1
View File
@@ -6,6 +6,43 @@ this crate adheres to [Semantic Versioning](https://semver.org/).
## [Unreleased] ## [Unreleased]
## [0.3.1] - 2026-10-22
The dependency-patch release: the alkcall substrate bumped 0.10.0 →
0.10.1 (the adoption-window ordering fix) and the alktunnels sibling
bumped 0.4.0 → 0.4.1 (its dependency-patch ride). No alksocks API
change, no wire change; the fix surface is private upstream, so there
is no change on this crate's paths. Patch rather than minor: both
dependency bumps are semver-compatible (0.10.x → 0.10.1, 0.4.x →
0.4.1), matching the alktunnels 0.4.0 → 0.4.1 ride.
### Changed
- **alkcall 0.10.0 → 0.10.1** (crates.io). The adoption-window
ordering fix (review 013, routed from alkgit's wave-2 gate): a
chunk routed by the channels demux inside the `adopt_channel`
install→drain window was delivered ahead of earlier-parked early
arrivals, inverting the channel's byte-stream order (observed
downstream as pkt-line desync in alkgit under multi-process load),
and a related loss variant (a chunk parked after the drain had
removed the queue, parked forever) is closed. The install and its
park-drain are one atomic section; no await runs inside it. Relevant
in principle to this crate's reverse-path adopt flow (the
bind-first establisher surfaces channels through the same adopt
path), though no change in this crate's own surfaces was needed —
the fix surface is private (`ChannelState`), the behavior only
strengthens. No API, wire-format, or documented-cap behavior change
upstream.
- **alktunnels 0.4.0 → 0.4.1** (the dependency-patch ride on alkcall
0.10.1). No alktunnels API/wire change; the composed providers see
none of it.
- **fuzz/shared harness pin** (the only file-level contacts are the
`Cargo.toml`s/`Cargo.lock` — plus the doc pins): the harness declares
its own `alkcall` pin (it constructs `ChannelOpenError` values for
the invariant functions), so the two pins must stay in lockstep —
bumped 0.10.0 → 0.10.1 with the substrate (a drifting pin produces a
duplicate-type compile failure, not silent drift).
## [0.3.0] - 2026-10-19 ## [0.3.0] - 2026-10-19
The dependency-major release: the alkcall substrate bumped 0.9.0 → The dependency-major release: the alkcall substrate bumped 0.9.0 →
@@ -181,6 +218,8 @@ campaigns clean, no crate bugs.
[`AssociateSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.AssociateSession.html [`AssociateSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.AssociateSession.html
[`BindSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.BindSession.html [`BindSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.BindSession.html
[Unreleased]: https://git.alk.dev/alkdev/alksocks/compare/v0.2.0...HEAD [Unreleased]: https://git.alk.dev/alkdev/alksocks/compare/v0.3.0...HEAD
[0.3.1]: https://git.alk.dev/alkdev/alksocks/compare/v0.3.0...v0.3.1
[0.3.0]: https://git.alk.dev/alkdev/alksocks/compare/v0.2.0...v0.3.0
[0.2.0]: https://git.alk.dev/alkdev/alksocks/compare/v0.1.0...v0.2.0 [0.2.0]: https://git.alk.dev/alkdev/alksocks/compare/v0.1.0...v0.2.0
[0.1.0]: https://git.alk.dev/alkdev/alksocks/releases/tag/v0.1.0 [0.1.0]: https://git.alk.dev/alkdev/alksocks/releases/tag/v0.1.0
+11 -11
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "alksocks" name = "alksocks"
version = "0.3.0" version = "0.3.1"
edition = "2021" edition = "2021"
rust-version = "1.88" rust-version = "1.88"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
@@ -28,12 +28,12 @@ composed = ["dep:alktunnels"]
[dependencies] [dependencies]
# The substrate (convention 11): pinned, bump deliberately, never # The substrate (convention 11): pinned, bump deliberately, never
# transitively. 0.10.0: the gateway ownership-seam release (review 012, # transitively. 0.10.1: the adoption-window ordering fix (review 013,
# `GatewayDispatch::with_ownership_provider` + the loud unwired-spine # routed from alkgit's wave-2 gate) — install+park-drain is one atomic
# default) — none of it on this crate's paths; the gateway module isn't # section in the channels demux; the fix surface is private upstream, so
# a feature this crate enables and registry dispatch on the native wire # no change on this crate's paths (relevant in principle to the
# is untouched. # bind-first adopt flow; the behavior only strengthens).
alkcall = "0.10.0" alkcall = "0.10.1"
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] } tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
# The fork's declared logging seam (rfc1928.md: upstream `log` calls # The fork's declared logging seam (rfc1928.md: upstream `log` calls
# were dropped or re-pointed here); no source file references it yet — # were dropped or re-pointed here); no source file references it yet —
@@ -48,9 +48,9 @@ futures = { version = "0.3", default-features = false, features = ["std"] }
# The sibling crate (the composed egress's direct-op vehicle — ADR-008/ # The sibling crate (the composed egress's direct-op vehicle — ADR-008/
# ADR-009): rides `composed` alone. Pinned; bump deliberately # ADR-009): rides `composed` alone. Pinned; bump deliberately
# (convention 11's deliberate-bump rule applies to siblings too). # (convention 11's deliberate-bump rule applies to siblings too).
# 0.4.0: the dependency-major (the alkcall 0.10.0 bump), bug-fix ride, # 0.4.1: the dependency-patch ride on alkcall 0.10.1, no alktunnels
# no alktunnels API/wire change. # API/wire change.
alktunnels = { version = "0.4.0", optional = true } alktunnels = { version = "0.4.1", optional = true }
[dev-dependencies] [dev-dependencies]
tokio = { version = "1", features = ["full", "test-util", "macros"] } tokio = { version = "1", features = ["full", "test-util", "macros"] }
@@ -58,4 +58,4 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# The composed suite's topology (the alktunnels direct-op producer) — # The composed suite's topology (the alktunnels direct-op producer) —
# dev-only: the test binary gates itself on the `composed` feature # dev-only: the test binary gates itself on the `composed` feature
# (`#![cfg(feature = "composed")]`), the dev-dep keeps it compiling. # (`#![cfg(feature = "composed")]`), the dev-dep keeps it compiling.
alktunnels = "0.4.0" alktunnels = "0.4.1"
+9
View File
@@ -246,6 +246,15 @@ fuzz/shared harness's own alkcall pin — a mechanical lockstep bump);
minor rather than patch for the same semver-visible-dependency reason minor rather than patch for the same semver-visible-dependency reason
as 0.2.0. as 0.2.0.
0.3.1 rides the alkcall bump 0.10.0 → 0.10.1 (the
adoption-window ordering fix — a chunk routed inside the demux's
install→drain window could be delivered ahead of earlier-parked
early arrivals, inverting byte-stream order; relevant in principle
to the bind-first adopt flow) and the alktunnels bump 0.4.0 → 0.4.1
(its dependency-patch ride). The fix surface is private upstream, so
there is no change on this crate's paths; patch rather than minor
because both dependency bumps are semver-compatible.
## Verification ## Verification
```bash ```bash
+3 -3
View File
@@ -120,7 +120,7 @@ protocol layer; crate-level vocabulary is producer/consumer.
``` ```
alksocks (default — wasm-clean) alksocks (default — wasm-clean)
├── alkcall 0.10.0 (core types: Connection, ProtocolHandler, BiStream, ├── alkcall 0.10.1 (core types: Connection, ProtocolHandler, BiStream,
│ AuthContext, Identity, AccessControl, OwnershipProvider; │ AuthContext, Identity, AccessControl, OwnershipProvider;
│ channels: ChannelCore/ChannelClient, │ channels: ChannelCore/ChannelClient,
│ register_openable_with_establisher, pump_bidi, │ register_openable_with_establisher, pump_bidi,
@@ -135,7 +135,7 @@ alksocks (local feature) — non-wasm by design
the first-party local backends + front doors the first-party local backends + front doors
alksocks (composed feature) alksocks (composed feature)
└── adds: alktunnels 0.4.0 (the direct op egress; the bind-first └── adds: alktunnels 0.4.1 (the direct op egress; the bind-first
listen accept; ADR-008's composed providers) — its default listen accept; ADR-008's composed providers) — its default
crate is wasm-clean; the composed providers use only the crate is wasm-clean; the composed providers use only the
ungated channels surface (verify with the wasm check) ungated channels surface (verify with the wasm check)
@@ -156,7 +156,7 @@ differential-testing behavioral reference.
|---------|----------|------| |---------|----------|------|
| *(default)* | the RFC 1928 core (`src/rfc1928/`, ADR-013 — codecs, typestate), wire codec, open-op spec, the three seams' traits/types, producer + consumer session types — protocol only; zero kernel-net code, wasm-clean by construction | yes | | *(default)* | the RFC 1928 core (`src/rfc1928/`, ADR-013 — codecs, typestate), wire codec, open-op spec, the three seams' traits/types, producer + consumer session types — protocol only; zero kernel-net code, wasm-clean by construction | yes |
| `local` | the crate's first-party local backends: TCP dial, UDP egress socket, BIND `TcpListener` accept, the front doors (consumer + producer local shapes); brings `tokio/net` + `socket2` into the graph | no (build error on wasm, the alktty posture) | | `local` | the crate's first-party local backends: TCP dial, UDP egress socket, BIND `TcpListener` accept, the front doors (consumer + producer local shapes); brings `tokio/net` + `socket2` into the graph | no (build error on wasm, the alktty posture) |
| `composed` | the composed providers over alktunnels 0.4.0: direct-op egress (lazy destination→tunnel table), bind-first listen accept — adds the alktunnels dep | yes (alktunnels' default crate is wasm-clean; the composed providers use only its ungated channels surface — verify with the wasm check at implementation) | | `composed` | the composed providers over alktunnels 0.4.1: direct-op egress (lazy destination→tunnel table), bind-first listen accept — adds the alktunnels dep | yes (alktunnels' default crate is wasm-clean; the composed providers use only its ungated channels surface — verify with the wasm check at implementation) |
## Module Map ## Module Map
+1 -1
View File
@@ -6,7 +6,7 @@ edition = "2021"
[dependencies] [dependencies]
alksocks = { path = "../.." } alksocks = { path = "../.." }
alkcall = "0.10.0" alkcall = "0.10.1"
serde_json = "1" serde_json = "1"
bytes = "1" bytes = "1"
tokio = { version = "1", features = ["rt", "io-util", "macros"], default-features = false } tokio = { version = "1", features = ["rt", "io-util", "macros"], default-features = false }