mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-14 23:22:51 +00:00
Extends the workspace clippy.toml — which already bans std:🧵:sleep, std:🧵:spawn, and std::process::Command::new on Tokio paths — with: - disallowed-types: std::io::{Read, Write, BufRead, BufReader, BufWriter} and std::net::{TcpStream, TcpListener, UdpSocket} - disallowed-methods: std::io::{stdin, stdout, stderr} Non-blocking std::io items (Error, ErrorKind, Result, IsTerminal, Cursor) remain allowed. std::fs is intentionally deferred. Annotates ~24 pre-existing sync call sites with #[expect(..., reason = "...")] matching the established pattern. All annotations describe why blocking I/O is intentional in that context (sync CLI command, test helper, pre-fork flush, etc.), so a future conversion to async will surface as an unfulfilled lint expectation instead of silently drifting. Fixes one real Tokio-path issue surfaced by the new lint: fabro-cli's server-start daemon-health poller (try_connect) was a sync fn called from async execute_daemon; std::net::TcpStream::connect_timeout blocked a Tokio worker for up to 100ms per poll iteration. Converted to tokio::net::{TcpStream, UnixStream} with tokio::time::timeout. One follow-up flagged in-code: fabro-agent/src/cli.rs's JSON event writer uses std::io::stdout() inside tokio::spawn. Annotated with a FOLLOW-UP reason pointing at tokio::io::stdout; left unchanged since volume is low and scope exceeded this pass. Verified: clippy clean, cargo +nightly fmt --check clean, full nextest workspace run (4131 passed, 182 skipped). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| compose.rs | ||
| dockerfile.rs | ||
| features.rs | ||
| jsonc.rs | ||
| lib.rs | ||
| types.rs | ||
| variables.rs | ||