From 3127e0231a4de0c8bd4c94e2b2a9ffb20c742f1f Mon Sep 17 00:00:00 2001 From: "glm-5.3-flash" Date: Mon, 28 Sep 2026 11:31:27 +0000 Subject: [PATCH] =?UTF-8?q?release:=20v0.1.0=20=E2=80=94=20the=20initial?= =?UTF-8?q?=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CHANGELOG: the 0.1.0 entry finalized for publish — the alkcall 0.8.1 / alktunnels 0.2.1 bumps and the fuzzing adoption folded in (the crate is unpublished, so no separate hardening cut — the alktunnels 0.2.1 precedent only applies post-publish); the fuzz/ workspace bullet added (three targets, 129 seeds, corpus-replay gate, campaigns clean) - README: the Version 0.1 note aligned (alkcall 0.8.1 — the duplicate-adopt fix is directly relevant to the consumer open/adopt paths; alktunnels 0.2.1; the fuzz posture noted) - docs/architecture/overview.md: dep tree 0.8.1 / 0.2.1 Verification: cargo test (376 default / 638 all-features), fuzz/shared corpus replay (3 pass), clippy --all-targets -D warnings (default, all-features, wasm32-unknown-unknown), fmt --check, doc, wasm32 check, and cargo publish --dry-run --allow-dirty all green (64 packaged files — fuzz/, docs/research|reviews|plans/, tasks/, .opencode/, AGENTS.md all excluded) --- CHANGELOG.md | 23 +++++++++++++++++++---- README.md | 16 ++++++++++------ docs/architecture/overview.md | 6 +++--- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5d8140..adeb3aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,11 +10,14 @@ this crate adheres to [Semantic Versioning](https://semver.org/). The initial release: SOCKS5 (RFC 1928) as a produced resource on alkcall channels — the `-D` flavor as a first-class protocol crate, -over alkcall 0.8.0. The defining posture: the protocol never binds a +over alkcall 0.8.1. The defining posture: the protocol never binds a port; kernel binds exist only as explicit, feature-gated assembly -shapes. Composed against by the alktunnels 0.2.0 graduation (the +shapes. Composed against by the alktunnels 0.2.1 graduation (the direct op + the bind-first/forwarded flow power the composed -providers). +providers). Fuzzing adopted (the `fuzz/` workspace — excluded from +the published package) over the crate's two attacker-reachable +parsers: the ASSOCIATE datagram codec and the RFC 1928 handshake; +campaigns clean, no crate bugs. ### Added @@ -77,7 +80,7 @@ providers). listener (`ProducerDoor` — vanilla clients dial it, each accepted connection is served via `serve_socks5_over`; the ADR-014 idle-first-byte window + max-sessions cap knobs). -- **The `composed` feature (ADR-008/009)** — the alktunnels 0.2.0 +- **The `composed` feature (ADR-008/009)** — the alktunnels 0.2.1 composed providers: `direct_egress` (the direct-op egress — a lazy destination→tunnel table, `DEFAULT_MAX_TUNNELS` bounded), and `bindfirst_accept` + `register_forwarded_serving` (the BIND accept @@ -91,6 +94,18 @@ providers). reference checkout (`tests/rfc1928-differential.rs`), the protocol-core integration suite (`tests/core-integration.rs`), and the assembly-layer integration suite (`tests/assembly-integration.rs`). +- **Fuzzing (`fuzz/` workspace, `docs/research/fuzzing.md`)** — the + alkcall §5 pattern adopted for this crate's two attacker-reachable + parser classes: `datagram_codec` (the `wire` codec — no-panic, + infallible decode, size bound, re-frame round-trip, the + `retained_bytes` bound) and `rfc1928_codec` (the RFC 1928 handshake + state machine, fed attacker bytes from both protocol directions), + plus `params_parse`. Invariant logic lives in `fuzz/shared/` — a + stable-toolchain crate replayed as plain `cargo test` (the corpus + replay is the fuzz gate). 129 committed seeds; detached campaigns + clean (`oom/timeout/crash: 0/0/0`, coverage saturated). The one + diagnostic added: `DatagramReader::retained_bytes()`. `fuzz/` is + excluded from the workspace and from the published package. [`Socks5ChannelSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.Socks5ChannelSession.html [`AssociateSession`]: https://docs.rs/alksocks/latest/alksocks/consumer/struct.AssociateSession.html diff --git a/README.md b/README.md index cf9d565..1177463 100644 --- a/README.md +++ b/README.md @@ -215,12 +215,16 @@ default build is wasm-clean by construction. ## Version 0.1 -The first release rides alkcall 0.8.0 (the establisher reply -projection is not consumed yet — the open op's params are trivial) and -alktunnels 0.2.0 (the direct op + the bind-first/forwarded flow power -the composed providers). Wire-stable surface: the `alk/socks5` ALPN, -the `channels/socks5/sub` open op with `{}` params, and the two scope -constants — all pinned by ADRs 001–014. +The first release rides alkcall 0.8.1 (the establisher reply +projection is not consumed yet — the open op's params are trivial; +the 0.8.1 duplicate-adopt fix is directly relevant to the consumer +open/adopt paths) and alktunnels 0.2.1 (the direct op + the +bind-first/forwarded flow power the composed providers). The +`fuzz/` workspace (excluded from the published package) fuzzes the +two attacker-reachable parser classes — the ASSOCIATE datagram codec +and the RFC 1928 handshake state machine. Wire-stable surface: the +`alk/socks5` ALPN, the `channels/socks5/sub` open op with `{}` params, +and the two scope constants — all pinned by ADRs 001–014. ## Verification diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md index 5a72032..b0b95ea 100644 --- a/docs/architecture/overview.md +++ b/docs/architecture/overview.md @@ -120,7 +120,7 @@ protocol layer; crate-level vocabulary is producer/consumer. ``` alksocks (default — wasm-clean) -├── alkcall 0.8.0 (core types: Connection, ProtocolHandler, BiStream, +├── alkcall 0.8.1 (core types: Connection, ProtocolHandler, BiStream, │ AuthContext, Identity, AccessControl, OwnershipProvider; │ channels: ChannelCore/ChannelClient, │ register_openable_with_establisher, pump_bidi, @@ -135,7 +135,7 @@ alksocks (local feature) — non-wasm by design the first-party local backends + front doors alksocks (composed feature) -└── adds: alktunnels 0.2.0 (the direct op egress; the bind-first +└── adds: alktunnels 0.2.1 (the direct op egress; the bind-first listen accept; ADR-008's composed providers) — its default crate is wasm-clean; the composed providers use only the 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 | | `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.2.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.2.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