Review of the three new crates (alknet-tls, alknet-endpoint, alknet-client) + revised core found compile-blocking inconsistencies, stale claims, and dep-graph contradictions. All resolved: Critical: - C1: CallClient::connect / ChannelClient::connect_quic REMOVED (not delegated) — keeping them as thin wrappers over AlknetClient::dial_quic would make protocol crates depend on alknet-client, contradicting the dep graph. Callers compose dial + take-over (2 lines). - C2: alknet-client feature gates now pull alknet-core/quinn + alknet-core/iroh (for Connection::from_quinn_with_alpn / from_iroh). - C3: rustls-native-certs + webpki-roots added to alknet-tls deps (always-present, not feature-gated — CA-verify path is transport-agnostic). Warning: - W1: CallCredentials/RemoteIdentity moved to alknet-core (from alknet-call) — the dial must not depend on the call protocol; not a two-way-door, it determines the dep graph. - W2: webpki-roots fallback implemented in spec (ADR-088 §5 added) — the code claimed a fallback that never existed; now the store is never empty, NoRootAnchors unreachable, containerized deployments work. - W3: EndpointError removed entirely (BindFailed + HandlerNotFound both vestigial after ADR-083); shutdown() is now infallible. - W4: FingerprintPinVerifier moved to alknet-tls (from alknet-call) — alknet-call sheds quinn/rustls/rustls-pemfile/rustls-native-certs entirely; CallClient becomes a pure protocol crate. Plus: ClientError removed (only produced by removed connect); S1 (CallCredentials → ClientVerifierContext mapping + auth_token stripped at TLS boundary documented); amendment notes on ADR-017, ADR-069, ADR-080, ADR-082, ADR-087, ADR-090; overview crate graph + README index updated. 29 files, consistency-reviewed.
1.9 KiB
status, last_updated
| status | last_updated |
|---|---|
| deprecated | 2026-07-15 |
Endpoint (moved to alknet-endpoint)
This document is deprecated. The
AlknetEndpointandHandlerRegistrytypes have been extracted fromalknet-coreinto a new cratealknet-endpoint(ADR-083 Amendment 2026-07-15).EndpointErroris removed (both variants were vestigial). The canonical spec is nowcrates/endpoint/README.md.The shared types the endpoint imports (
ProtocolHandler,Connection,AuthContext,IdentityProvider,DynamicConfig) stay inalknet-core— seecore-types.md,auth.md,config.md.
Historical summary
The endpoint was originally in alknet-core/endpoint.rs as the central
runtime type — a multi-transport accept-loop runner that dispatches
incoming connections by ALPN (ADR-010, ADR-083). ADR-082 extracted the
TLS setup code to alknet-tls; ADR-083 restructured the endpoint to
take pre-built transports via with_quinn / with_iroh /
with_tcp_tls (no TLS config); ADR-083 Amendment 2026-07-15 extracted
the endpoint itself into alknet-endpoint so that handler crates no
longer transitively link quinn/iroh/rcgen via core.
The endpoint's semantics — ALPN dispatch, HandlerRegistry, accept
loops, public dispatch for SSH/WT, graceful shutdown — are unchanged
by the extraction. See
crates/endpoint/README.md for the current
spec and ADR-083
for the full decision.
What stayed in alknet-core
Connection::from_quinn / from_iroh stay in core's types.rs — they
are shared-type constructors used by both the endpoint's accept loop
(server) and alknet-client's dial (client, ADR-089), gated on core's
quinn / iroh features. See
ADR-083 §"The
quinn feature split".