Rust SDK docs, examples and rubric refresh
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 customHttpClient, resilience, webhooks, the develop loop, versioning and MSRV policy. Every Rust fence runs as a doctest (no_runwhere it talks to Fizzy) through a#[cfg(doctest)]include at the end oflib.rs, so the landing page cannot drift from the API without failingcargo 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 bymake rs-test-features/ CI. The three that talk to Fizzy declarerequired-features = ["reqwest"], sincecargo test --no-default-featuresbuilds 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 sendsX-Webhook-Signature(upstreamapp/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-servicesin 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 saidBasecamp), and the Smithy plugin's Java headers (Basecamp, LLC); the legal name is written37signals 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.