release: v0.1.0 — the initial release

- 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)
This commit is contained in:
glm-5.3-flash committed 2026-09-28 11:31:27 +00:00
1 parent 08a3694464
commit 3127e0231a
3 files changed
+32 -13

No files matched your search

+19 -4
View File
@@ -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
+10 -6
View File
@@ -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
+3 -3
View File
@@ -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