Rust SDK docs, examples and rubric refresh

Merged
JE
1mo ago
+548-63

Docs and devex for the Rust SDK. Card: W5 docs + devex. Stacked on the releng PR (#159).

  • rust/fizzy-sdk/README.md — the crates.io landing page: install and features, bearer / cookie / magic-link auth, services, pages and streams, errors, retries, hooks and tracing, caching, a custom HttpClient, resilience, webhooks, the develop loop, versioning and MSRV policy. Every Rust fence runs as a doctest (no_run where it talks to Fizzy) through a #[cfg(doctest)] include at the end of lib.rs, so the landing page cannot drift from the API without failing cargo test; 13/13 today.
  • examples/ — list_boards (typed list + item stream), magic_link_login (the two-step flow), verify_webhook, request_log (custom hooks and client knobs). Built by make rs-test-features / CI. The three that talk to Fizzy declare required-features = ["reqwest"], since cargo test --no-default-features builds examples too.
  • Root README — Rust quickstart at the same depth as the other five, with the install line, MSRV and crates.io/docs.rs links; matrix column.
  • SECURITY.md — Rust retry and concurrency notes. The webhook header it named was X-Fizzy-Signature; Fizzy sends X-Webhook-Signature (upstream app/models/webhook/delivery.rb), which is what the Rust crate verifies against, so the line is corrected.
  • AGENTS.md / CONTRIBUTING.md / rust/CHANGELOG.md — language list, make rs-generate-services in the regenerate-every-language list, MSRV prerequisite, first Rust changelog entry.
  • Copyright holder — authors = ["37signals LLC"] on the workspace and runner manifests, the LICENSE line (it said Basecamp), and the Smithy plugin's Java headers (Basecamp, LLC); the legal name is written 37signals LLC.
  • rubric-audit.json — refreshed last, after the crate and runner were verified (see the final commit).

Review round 1 (Copilot): retry knobs documented as they behave (max_attempts ceiling, max_delay, max_jitter, base_delay raw-only), span fields as recorded, list_boards streams every page, example docs match behavior — all fixed.

Codex CLI pass 2 (gpt-6-astra, xhigh): accepted — the hooks section no longer promises everything a hook sees is redacted (headers are withheld; URLs are the application's to scrub) and the example logs the path; README fences wired into cargo test; futures-util named before the stream snippet; max_delay documented as floored at base_delay and the example sets both; the inherited 4B.5 note corrected (the fixtures name 69 of 112 operations; the criterion is the AGENTS.md test-per-operation rule). Declined: none.