docs: implement release-readiness audit findings #127

Merged
Lochnair merged 8 commits from docs/release-readiness-audit-fixes into main 2026-08-20 08:33:08 +00:00
3 changed files with 14 additions and 6 deletions
Showing only changes of commit 13a907bc28 - Show all commits

No files matched your search

+2
View File
@@ -185,6 +185,8 @@ Useful measurement fields include:
Adjusted RTT can be negative when server processing exceeds the measured raw RTT. One-way delay estimates can be negative because of clock skew between the client and server.
On Linux, `sd_us` and `rd_us` (and the underlying one-way delay samples) prefer kernel-captured send/receive timestamps over userspace timing where the platform and socket support them, reducing the effect of scheduling and queuing delay on these measurements. This is a best-effort fallback: unsupported or implausible kernel timestamps fall back to userspace timing. RTT always uses userspace timing and is unaffected.
Default table output prints a final summary after completed finite runs and interrupted continuous runs when the run policy permits it. CSV, TSV, and JSON Lines output do not print this summary.
A peer closing a finite CLI or TUI run is accepted as a terminal outcome. In
+7 -1
View File
@@ -351,7 +351,13 @@ pub struct OneWayDelaySample {
/// Client-to-server delay.
chatgpt-codex-connector[bot] commented 2026-08-20 08:09:07 +00:00 (Migrated from github.com)
Review

P2 Badge Limit the unaffected claim to raw RTT

When the peer is the Linux irtt-server and negotiates wall-clock receive-and-send timestamps, the preferred kernel receive timestamp also becomes recv_wall; compute_server_processing subtracts it from send_wall, and that processing interval changes RttSample::adjusted and therefore effective. Only raw RTT remains an unaffected userspace-monotonic measurement, so qualify this sentence—and the matching README claim—to avoid misleading users interpreting adjusted/effective RTT results.

Useful? React with 👍 / 👎.

**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub> Limit the unaffected claim to raw RTT** When the peer is the Linux `irtt-server` and negotiates wall-clock receive-and-send timestamps, the preferred kernel receive timestamp also becomes `recv_wall`; `compute_server_processing` subtracts it from `send_wall`, and that processing interval changes `RttSample::adjusted` and therefore `effective`. Only `raw` RTT remains an unaffected userspace-monotonic measurement, so qualify this sentence—and the matching README claim—to avoid misleading users interpreting adjusted/effective RTT results. Useful? React with 👍 / 👎.
Lochnair commented 2026-08-20 08:12:09 +00:00 (Migrated from github.com)
Review

Fixed: qualified this to raw RTT only. adjusted_rtt_us/effective_rtt_us are derived from server-reported processing time, which shares the same server receive endpoint this field documents as kernel-preferred, so I updated both the client_to_server rustdoc and the matching README sentence (commit c9269ca) to say raw RTT is unaffected while adjusted/effective can still shift.

🤖 Addressed by Claude Code

Fixed: qualified this to raw RTT only. `adjusted_rtt_us`/`effective_rtt_us` are derived from server-reported processing time, which shares the same server receive endpoint this field documents as kernel-preferred, so I updated both the `client_to_server` rustdoc and the matching README sentence (commit c9269ca) to say raw RTT is unaffected while adjusted/effective can still shift. _🤖 Addressed by [Claude Code](https://claude.com/claude-code)_
chatgpt-codex-connector[bot] commented 2026-08-20 08:17:39 +00:00 (Migrated from github.com)
Review

P2 Badge Scope the server kernel timestamp claim to this server

When irtt-client is used with an arbitrary IRTT-compatible peer, it only receives a wall-clock value from the wire and cannot know whether that peer obtained it from the kernel, userspace, or another clock source. This rustdoc therefore overpromises that the server endpoint prefers a plausible kernel timestamp; that behavior is specific to the Linux Tokio runtime in this repository. Qualify this claim—and the matching broad README statement—so consumers do not misinterpret measurements from other servers.

Useful? React with 👍 / 👎.

**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub> Scope the server kernel timestamp claim to this server** When `irtt-client` is used with an arbitrary IRTT-compatible peer, it only receives a wall-clock value from the wire and cannot know whether that peer obtained it from the kernel, userspace, or another clock source. This rustdoc therefore overpromises that the server endpoint prefers a plausible kernel timestamp; that behavior is specific to the Linux Tokio runtime in this repository. Qualify this claim—and the matching broad README statement—so consumers do not misinterpret measurements from other servers. Useful? React with 👍 / 👎.
Lochnair commented 2026-08-20 08:18:57 +00:00 (Migrated from github.com)
Review

Fixed: scoped the kernel-preference claim to this crate's own irtt-server on Linux. Against any other IRTT-compatible peer, the client has no way to know what clock source produced the reported wall-clock endpoint, so it's now stated as used as-is in that case, in both this rustdoc and the matching README sentence (commit cab1fd1).

🤖 Addressed by Claude Code

Fixed: scoped the kernel-preference claim to this crate's own `irtt-server` on Linux. Against any other IRTT-compatible peer, the client has no way to know what clock source produced the reported wall-clock endpoint, so it's now stated as used as-is in that case, in both this rustdoc and the matching README sentence (commit cab1fd1). _🤖 Addressed by [Claude Code](https://claude.com/claude-code)_
chatgpt-codex-connector[bot] commented 2026-08-20 08:23:06 +00:00 (Migrated from github.com)
Review

P2 Badge Limit the kernel timestamp claim to the Tokio server

When an application pairs this client with the public irtt_server::ServerCore::handle_datagram API on Linux, the peer is still this crate's irtt-server, but no kernel receive timestamp is used: crates/irtt-server/src/core.rs:161-165 states that this path samples every instant itself, while only the crate-private Tokio runtime entry point supplies transport metadata. Qualify this claim, and the matching README sentence, to the Tokio Server/server applet rather than the whole server crate. Fresh evidence is the inspected public ServerCore path, which always calls process(..., None) at core.rs:173-178.

Useful? React with 👍 / 👎.

**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub> Limit the kernel timestamp claim to the Tokio server** When an application pairs this client with the public `irtt_server::ServerCore::handle_datagram` API on Linux, the peer is still this crate's `irtt-server`, but no kernel receive timestamp is used: `crates/irtt-server/src/core.rs:161-165` states that this path samples every instant itself, while only the crate-private Tokio runtime entry point supplies transport metadata. Qualify this claim, and the matching README sentence, to the Tokio `Server`/server applet rather than the whole server crate. Fresh evidence is the inspected public `ServerCore` path, which always calls `process(..., None)` at `core.rs:173-178`. Useful? React with 👍 / 👎.
Lochnair commented 2026-08-20 08:24:52 +00:00 (Migrated from github.com)
Review

Fixed: scoped this to the Tokio server runtime specifically. ServerCore::handle_datagram is a public API that always passes kernel_rx_timestamp = None; only the crate-private entry point the Tokio runtime (the irtt-server applet) uses actually supplies one. Both the rustdoc and README now say so explicitly (commit 1754b77).

🤖 Addressed by Claude Code

Fixed: scoped this to the Tokio server runtime specifically. `ServerCore::handle_datagram` is a public API that always passes `kernel_rx_timestamp = None`; only the crate-private entry point the Tokio runtime (the `irtt-server` applet) uses actually supplies one. Both the rustdoc and README now say so explicitly (commit 1754b77). _🤖 Addressed by [Claude Code](https://claude.com/claude-code)_
///
/// This is computed from the client send wall time and the server receive
/// wall time when both are available.
/// wall time when both are available. The client send endpoint is the
/// correlated Linux kernel TX timestamp for this send when one is
/// available and plausible for this send, and the userspace post-send wall
/// time otherwise. The server receive endpoint is the server's kernel
/// receive timestamp when one is available and plausible, and its
/// userspace receive wall time otherwise. RTT is unaffected and remains a
/// userspace monotonic measurement.
pub client_to_server: Option<SignedDuration>,
/// Server-to-client delay.
///
+5 -5
View File
@@ -32,11 +32,11 @@
//! instant, is served normally with no timestamp. Nothing about which datagrams
//! reach [`ServerCore`](crate::ServerCore) depends on it.
//!
//! **Nothing consumes it yet.** It is captured here so a follow-up change can
//! decide how a kernel-observed arrival time enters the protocol core; today
//! the core still samples its own receive instant and no protocol timing is
//! affected. It is a software wall-clock reading only — not a NIC hardware
//! timestamp, not monotonic, and not a transmit timestamp.
//! [`ServerCore`](crate::ServerCore) prefers it over its own receive sample
//! when reporting a request's receive instant, falling back to that sample
//! when no plausible kernel reading is available; see
//! `preferred_receive_wall_ns`. It is a software wall-clock reading only —
//! not a NIC hardware timestamp, not monotonic, and not a transmit timestamp.
use std::{io, net::SocketAddr, time::SystemTime};