Skip to content

docs: add health files and complete the crate metadata - #157

Open
JustinKovacich wants to merge 5 commits into
mainfrom
docs/open-source-health-files
Open

JustinKovacich wants to merge 5 commits into
mainfrom
docs/open-source-health-files

Conversation

@JustinKovacich

Copy link
Copy Markdown
Contributor

Why this repo first

At 11,444 downloads this is the most-used crate in the org, and it had the
thinnest packaging of the four: no keywords, categories, homepage,
documentation or readme. Worst discoverability-to-usage ratio of the set.

Crate metadata

Adds homepage, documentation, readme, plus:

keywords = ["someip", "automotive", "no-std", "embedded", "serialization"]
categories = ["network-programming", "embedded", "no-std", "encoding"]

rust-version is deliberately still absent. main.yml says: "the manifest
declares no rust-version … Picking one is a policy decision, not a CI one."

That's your call, not something to settle inside a docs PR — so this adds a
comment recording the reasoning instead, and CI's MSRV job stays off.

SECURITY.md

Written for SOME/IP rather than as boilerplate. The point most worth stating:

E2E protection is a safety mechanism, not a security one. Profile 4
(CRC-32) and Profile 5 (CRC-16) detect accidental corruption. A CRC is not a
MAC — it is unkeyed, so anyone who can alter a payload can recompute the
checksum over it.

Also covers that SOME/IP has no transport security and that SD offers are
unauthenticated and therefore spoofable. In scope: panics, OOB reads, unbounded
allocation, decodes accepting frames they should reject — with bounds handling
in the fixed-capacity heapless SD collections called out as the area of
interest.

CONTRIBUTING.md

Focuses on what's easy to get wrong here: the client/client-tokio and
server/server-tokio trait-surface-vs-tokio split, what bare_metal does and
doesn't give you, why tracing is gated, and that _alloc is private.

Flags that most integration tests declare required-features, so a bare
cargo test silently skips them — with the four configurations to actually run.
Also notes the two harness = false allocation witnesses, and that tripping one
is a design question rather than a test to adjust.

README

Adds docs.rs and the two license badges alongside the existing CI, Coverage and
Crates.io ones.

CODEOWNERS

* @luminartech/luv, routing only — the ruleset doesn't require code-owner
approval, so merge behaviour is unchanged.

Code of conduct

Contributor Covenant 2.1, enforcement contact envision-dev@microvision.com
flagging for review, since it publishes that alias.

Verification

  • cargo metadata parses.
  • cargo package --no-verify succeeds: 109 files, 1.9 MiB.

🤖 Generated with Claude Code

simple-someip is the most-downloaded crate in the org and had the thinnest
packaging: no keywords, no categories, no homepage, no documentation link, and
no readme field, so it surfaces poorly in crates.io search relative to how much
it is used. It also had no disclosure path, no conduct policy, and no
contributing guide.

SECURITY.md is written for SOME/IP specifically. The distinction worth stating
is that E2E Profile 4/5 are safety mechanisms: a CRC is unkeyed, so anyone who
can alter a payload can recompute it, and E2E protection does not make a
channel tamper-resistant. Service discovery is likewise unauthenticated by
design. Decode robustness - particularly bounds handling in the fixed-capacity
heapless SD collections - is the part that is in scope.

CONTRIBUTING.md documents the feature graph, which is the easiest thing to get
wrong here, and the fact that most integration tests declare required-features
so a bare `cargo test` silently skips them.

`rust-version` is deliberately still absent: main.yml says choosing an MSRV is
a policy decision, so this records that rather than settling it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #157   +/-   ##
=======================================
  Coverage   81.72%   81.72%           
=======================================
  Files          48       48           
  Lines       16178    16178           
=======================================
  Hits        13222    13222           
  Misses       2956     2956           

JustinKovacich and others added 4 commits September 11, 2026 12:44
The feature section spent a paragraph and six bullets describing which feature
pulls in which, which is exactly the part a reader can absorb faster as a
picture. A mermaid graph now carries the edges - GitHub renders it inline - and
the prose keeps only what a diagram cannot say: that client/server are the
executor-agnostic trait surface, that bare_metal alone is not bare-metal
complete, that _alloc is private, and why tracing is gated.

The 11 edges were checked against the [features] table programmatically rather
than transcribed by eye.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
default is the default feature set rather than a feature like the others, and
the line above the diagram already states default = ["std"], so the node was
both odd and redundant.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three corrections found by reading lib.rs rather than the manifest alone.

`#![no_std]` is unconditional - `std` is the feature that adds std back via
`extern crate std`, not a switch that turns no_std on. The section implied the
opposite by omission, and there is no no_std node to add: the axis is already
the `std` node.

`bare-metal-runtime` pulls `server` and not `client`, so there is no bare-metal
client edge to draw. The bare-metal client path is `client` + `bare_metal` with
a caller-supplied executor. Saying so avoids the diagram reading as though the
client case were missing.

`cargo test --all-features` was wrong and is removed: `--all-features` enables
`bare-metal-runtime` alongside `std` and trips the `compile_error!` in lib.rs.
Verified - it fails to compile. The graph now carries that exclusivity as a
dashed link, and the nightly requirement for `impl_trait_in_assoc_type` is
noted alongside it.

The four remaining test commands were each checked to compile, and the ten
enables edges re-checked against the [features] table.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants