feat: rename ALPN prefix from alknet/ to alk/ (v0.1.1)
- CHANNELS_ALPN: b"alknet/channels" → b"alk/channels" - CallAdapter::alpn(): b"alknet/call" → b"alk/call" - derive_alpn_from_op_name: alknet/ prefix → alk/ prefix - All ALPN string literals in src/ and docs/ updated - ADR-004 amended with prefix rename rationale - AGENTS.md, README.md updated - Version bumped to 0.1.1 Review: docs/reviews/003-alpn-prefix-rename.md Verification: - cargo test: 542 passed, 0 failed - cargo clippy --all-targets -- -D warnings: clean - cargo fmt --check: clean - cargo doc --no-deps: clean
This commit is contained in:
1 parent
3cce1410c4
commit
08e7df2aa0
60 files changed
+837
-328
No files matched your search
@@ -7,13 +7,13 @@ last_updated: 2026-08-12
|
||||
|
||||
The call + channels RPC crate. Structured JSON RPC (operations, streaming
|
||||
subscriptions, service discovery) and N-channel multiplexing over one
|
||||
transport stream (channel 0 pre-negotiated as `alknet/call`).
|
||||
transport stream (channel 0 pre-negotiated as `alk/call`).
|
||||
|
||||
This crate unifies `alknet-call` and `alknet-channels` from the alknet
|
||||
mono-repo, plus the vendored core types formerly in `alknet-core`. The
|
||||
source architecture docs were ported from
|
||||
`/workspace/@alkdev/alknet/docs/architecture/` and renumbered as alkcall
|
||||
ADRs (ADR-001..045). The ALPN strings (`alknet/call`, `alknet/channels`)
|
||||
ADRs (ADR-001..045). The ALPN strings (`alk/call`, `alk/channels`)
|
||||
are wire-stable and unchanged — see ADR-004.
|
||||
|
||||
## Documents
|
||||
@@ -41,7 +41,7 @@ are wire-stable and unchanged — see ADR-004.
|
||||
| [001](decisions/001-alpn-protocol-dispatch.md) | ALPN-Based Protocol Dispatch | HandlerRegistry, ALPN routing |
|
||||
| [002](decisions/002-protocol-handler-trait.md) | ProtocolHandler Trait | The trait every handler implements |
|
||||
| [003](decisions/003-auth-as-shared-core.md) | Auth as Shared Core | IdentityProvider, Identity, AuthToken |
|
||||
| [004](decisions/004-alpn-convention-and-connection-model.md) | ALPN String Convention | `alknet/` prefix, one ALPN per connection |
|
||||
| [004](decisions/004-alpn-convention-and-connection-model.md) | ALPN String Convention | `alk/` prefix, one ALPN per connection |
|
||||
| [005](decisions/005-bistream-type-definition.md) | BiStream Type Definition | BiStream, handlers receive Connection |
|
||||
| [006](decisions/006-authcontext-structure.md) | AuthContext Structure | AuthContext fields, hybrid resolution |
|
||||
| [007](decisions/007-connection-from-stream-generic-single-stream.md) | Connection::from_stream | Generic single-stream connections |
|
||||
@@ -88,7 +88,7 @@ are wire-stable and unchanged — see ADR-004.
|
||||
|-----|-------|-----------|
|
||||
| [034](decisions/034-channels-wire-format.md) | Channels Wire Format | 8-byte chunk header; one-way door |
|
||||
| [035](decisions/035-channels-pure-channel-multiplexing.md) | Pure Channel Multiplexing | No stream_type; BiStream-only; handler owns sub-mux |
|
||||
| [036](decisions/036-channel-0-pre-negotiated-call.md) | Channel 0 Pre-Negotiated | Channel 0 = alknet/call |
|
||||
| [036](decisions/036-channel-0-pre-negotiated-call.md) | Channel 0 Pre-Negotiated | Channel 0 = alk/call |
|
||||
| [037](decisions/037-channel-lifecycle-operations.md) | Channel Lifecycle Operations | channel/open, close, control, resources/subscribe |
|
||||
| [038](decisions/038-channelconnection-bidistreamsource.md) | ChannelConnection | Per-channel BidiStreamSource; yield-once accept_bi |
|
||||
| [039](decisions/039-channelsadapter-and-channelmanager.md) | ChannelsAdapter and ChannelManager | Demux/mux; ALPN-blind, auth-blind |
|
||||
@@ -119,7 +119,7 @@ questions affecting this crate:
|
||||
|
||||
## Key Design Principles
|
||||
|
||||
1. **One connection, full access**: An `alknet/call` connection gives
|
||||
1. **One connection, full access**: An `alk/call` connection gives
|
||||
access to the entire operation registry.
|
||||
2. **Protocol is symmetric**: Both sides can initiate calls. Producer/
|
||||
consumer, not server/client.
|
||||
@@ -135,7 +135,7 @@ questions affecting this crate:
|
||||
See ADR-024.
|
||||
8. **Streams are streams**: Every channel is a BiStream. The handler
|
||||
owns its sub-stream multiplexing. See ADR-035.
|
||||
9. **Channel 0 is alknet/call**: Channel lifecycle is call operations on
|
||||
9. **Channel 0 is alk/call**: Channel lifecycle is call operations on
|
||||
channel 0. See ADR-036, ADR-037.
|
||||
10. **Wire formats are stable**: EventEnvelope shape and the 8-byte chunk
|
||||
header are one-way doors. See ADR-014, ADR-034.
|
||||
@@ -157,7 +157,7 @@ Downstream crates compose on top of it in a layered dependency chain.
|
||||
|
||||
A single process can be a producer of some ops, a consumer of others, a
|
||||
channel opener for TTY, and a channel acceptor for tunnels — all on the
|
||||
same `alknet/channels` connection. The types don't encode the system
|
||||
same `alk/channels` connection. The types don't encode the system
|
||||
role; they just don't prevent any combination.
|
||||
|
||||
Within a single connection, direction is independent of role:
|
||||
@@ -225,7 +225,7 @@ alkcall. They provide two halves:
|
||||
(e.g. `trader_client.status().await` instead of
|
||||
`call_connection.call("trader/status", ...).await`).
|
||||
|
||||
**alknet/alknode** depends on alkcall + whichever protocol crates are
|
||||
**alk/alknode** depends on alkcall + whichever protocol crates are
|
||||
needed. It's the composition layer — the only place that knows about
|
||||
network topology, peer routing, and which protocol crates are wired in.
|
||||
Protocol crates never import a QUIC or TLS dependency.
|
||||
@@ -250,7 +250,7 @@ A protocol crate that uses channels (e.g. alktty) follows this pattern:
|
||||
│ │
|
||||
┌────────┴────────┐ ┌───────┴──────────────┐
|
||||
│ Direct ALPN │ │ Through channels │
|
||||
│ (alknet/tty) │ │ (alknet/channels) │
|
||||
│ (alk/tty) │ │ (alk/channels) │
|
||||
│ │ │ │
|
||||
│ TtyAdapter │ │ OpenHandler │
|
||||
│ impl Protocol │ │ (registered via │
|
||||
|
||||
Reference in new issue
Block a user