docs(features): document feature contracts per playbook §988 (Phase 8b, refs #195)#293
Merged
Merged
Conversation
…b, refs #195) Adds a `# Features` rustdoc section to each of the 3 feature-using crates (uffs-cli, uffs-client, uffs-mcp) and rewrites the inline `[features]` block comments in each Cargo.toml to carry the playbook §988 contract: * What it enables (which code path / module / subcommand). * What deps it adds (`dep:` gating). * API shape impact (additive vs subtractive). * Semver claim (default-on means breaking-on-disable). Per-crate summary: * uffs-client::async (default-on, additive) Gates `connect::UffsClient` (tokio reactor) used by uffs-daemon + uffs-mcp. Adds `dep:tokio` with the `net` feature. Sync surfaces (`UffsClientSync`, `protocol`, `schema`) compile identically with the feature off. uffs-cli overrides with `default-features = false` to drop tokio + ws2_32.dll from the sync-CLI binary. * uffs-mcp::streamable-http (default-on, additive) Gates `pub mod http` + the `uffs-mcp-http` binary (`required-features = ["streamable-http"]`). Adds `rmcp/transport-streamable-http-server`, `dep:axum`, `dep:tower-service`. All stdio surfaces compile identically with the feature off. * uffs-cli::mcp-http-probe (default-off, additive) Gates the `uffs status` probe of the MCP HTTP gateway's `/status` endpoint. Adds no crate-graph deps (uses libstd `std::net::TcpStream`) but on Windows that drags in ws2_32.dll, adding ~50 ms to cold-start. Default-off because the CLI is the thin / fast-path binary. Verifications: * `cargo check --workspace --all-features` — clean. * `cargo clippy --workspace --all-targets --all-features` — clean (one initial `doc_lazy_continuation` warning resolved by rephrasing `+ tower-service` to `and tower-service`). * `cargo doc --no-deps --all-features` for the three crates — generates an `id="features"` anchor on each root page. * `scripts/dev/feature_dep_audit.sh` (Phase 8a baseline tool) — `Has \`# Features\` rustdoc?` column now reads **3 / 3** (was 0 / 3 at SHA 4c6ffcf). Refs #195.
This was referenced May 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 8b — feature documentation pass. Adds a
# Featuresrustdoc section to each of the 3 feature-using crates and rewrites the inline[features]block comments in each Cargo.toml to carry the playbook §988 contract (what it enables / what deps it adds / API shape impact / semver claim).No behavior change. Pure documentation.
Per-crate summary
uffs-clientasyncconnect::UffsClient(tokio reactor) used by daemon + MCPdep:tokiow/netuffs-mcpstreamable-httppub mod http+uffs-mcp-httpbinaryrmcp/transport-streamable-http-server,dep:axum,dep:tower-serviceuffs-climcp-http-probe/statusinsideuffs statusstd::net::TcpStream; default-off to keepws2_32.dllout of the thin CLI)Verifications
cargo check --workspace --all-featuresclean.cargo clippy --workspace --all-targets --all-featuresclean (one initialdoc_lazy_continuationwarning fixed by rephrasing+ tower-service→and tower-serviceso it no longer reads as a Markdown list marker).cargo doc --no-deps --all-featuresfor the three crates — each generates anid=\"features\"anchor on its root page.scripts/dev/feature_dep_audit.sh(Phase 8a baseline tool) — theHas \# Features` rustdoc?column now reads **3 / 3** (was 0 / 3 at SHA4c6ffcf`).Phase-8 rules adherence
#[allow]/#[expect]added; the one clippy warning was fixed by rephrasing the doc, not silenced.[features]block contents are byte-identical, only comments changed).dependency_policy.md(8c, upcoming).Refs #195.