Repository navigation
docs(uds_services): writing pass for the reader - #90
Merged
JustinKovacich merged 2 commits intoOct 21, 2026
Merged
JustinKovacich merged 2 commits into
JustinKovacich merged 2 commits into
Conversation
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
2 times, most recently
from
October 21, 2026 13:32
1d91800 to
52cecea
Compare
JustinKovacich
changed the base branch from
docs/writing-standard
to
docs/uds_protocol-writing-pass
October 21, 2026 13:32
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 13:41
52cecea to
41a94d6
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 13:47
41a94d6 to
9574df6
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:00
9574df6 to
064f89e
Compare
JustinKovacich
added this pull request to stack #91
October 21, 2026 14:03
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:03
064f89e to
1b76972
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:09
1b76972 to
937921a
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:11
937921a to
fbc7c98
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:13
fbc7c98 to
73932ed
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:21
73932ed to
c6eb366
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:23
c6eb366 to
725e9a0
Compare
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 14:54
725e9a0 to
df6680e
Compare
Rewrite uds_services's rustdoc, comments and README to the standard in CONTRIBUTING.md: each item states its contract in the present tense with at most a sentence of rationale. Removed: milestone and tracking-issue notes, arguments for designs the needs already record, and history of replaced constants and features. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
JustinKovacich
force-pushed
the
docs/uds_services-writing-pass
branch
from
October 21, 2026 15:03
df6680e to
46b6f1b
Compare
JustinKovacich
marked this pull request as ready for review
October 21, 2026 15:10
zheylmun
approved these changes
Oct 21, 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.
Writing pass over
crates/uds_servicesto the "Writing for the reader" standard (CONTRIBUTING.md, #84, which this PR is stacked on). Prose only: rustdoc, comments, the Cargo.toml comments and the README. No code line changes and no test renamed;identifier.rsandencode.rshad nothing to change.Before / after (prose lint): hard-fail phrases 8 / 0 (one "load-bearing", five "deliberately", two ticket references); history 5 / 0; em-dash 448 / 255 (every one in a touched sentence); comment blocks of 12+ lines 103 / 70. The 70 that remain are the
uds_server!anduds_client!macro docs with their doctests andcompile_failblocks, the crate overview, theEncode/Sinkre-export example, theUdsTransportobligation list, the pipeline's Figure 5 stage list and Table I.2 bullets, and the per-method contracts (# Arguments,# Errors,# Cancel safety) of the thirtyClientcalls,Server::new/step/run, and every service-trait handler; the narration inside them was cut, the sections stay.Fixed while reading: the README said "the transport binding is an optional feature", which contradicted the crate doc and
Cargo.toml(no features; the application names the binding). The crate doc and README pointed readers at test files that do not ship in the crate's rendered docs; those references are gone.Removed, and the reasoning it held (this PR is its record; nothing is filed elsewhere):
tP2_Serverdeadline) and a client two (a repeat re-sends the encoded request while the caller holds the response). CandidateRationale:forUDSSVC_ARCH_0017/0041.EMPTYis an associated const (trait methods cannot beconst), theConstStaticCellversusStaticCell::initversus plainstaticchoices, and the 8,824-byte frame measurement cross-referenced fromuds_on_ip.Errandstep's cancel safety (uds_stack#19), and the "milestone-1 limit" framing on six items; the behaviour statements stay.peers = 1only (one slot for a selecting response awaiting confirmation), kept to one sentence. CandidateRationale:forUDSSVC_ARCH_0040.reply_addressis physically addressed by observation rather than by a clause of ISO 14229-2 9.6 (UDSS_LLR_0026); the driver as "the component no standard describes, which went a design cycle with no owner"; theDeferred::mergeordering argument in full.UDSSVC_ARCH_0006); why the pipeline takes no context struct (UDSSVC_ARCH_0035); why assembly is a macro and not a blanket impl, the$ty:tyfollow-set note, and the rustfmt 1.9.0 non-convergence detail (UDSSVC_ARCH_0013).DataTooLongvariant rather than a flag, whyDebugis the one error bound, why there is noinbound_max, whyClosedis an edge. The contracts stay.select2is private; the seal's "lock, not a wall" account and the derivation argument; why service traits have no defaults andMAY_RESPOND_PENDINGnone; the per-service motivations behind eachMAY_RESPOND_PENDING(a flash write, a routine, an erase).SecurityLevel's pairing arithmetic, Figure 30's three-methods argument, "open question 5", "decision 4").Recordscannot fail step by step, theOption-versus-boolreasoning, the quoted 15.2.3.2 sentence, and two driver references to architecture open questions.tests/composition.rs: theDTC_RECORD_LENit replaced and the retyping of the handler seam;Cargo.toml: thealloc/stdfeatures once forwarded touds_protocol.Issue URL
No issue; the pass follows the standard agreed in #84.
Testing
python3 tools/prose_lint.py crates/uds_services --fail --show 50exits 0 with every hard-fail row at 0; CI'sComment prosejob now runs--strict crates/uds_services.cargo fmt --all --check;cargo clippy -p uds_services --all-targets --all-features -- -D warnings;cargo nextest run -p uds_services --all-features(402 passed) and the doctests (13 + 3);cargo doc -p uds_services --all-features --no-depswith-D rustdoc::broken_intra_doc_links -D warnings.git diff -U0 ... | grep -vE '^[-+]\s*(//|#|\*|/\*|$)'prints nothing: no code line changed.🤖 Generated with Claude Code