Skip to content

V0.2.0 mergeback: 05-19-2026#854

Merged
jerrysxie merged 8 commits into
OpenDevicePartnership:v0.2.0from
tullom:v0.2.0
May 19, 2026
Merged

V0.2.0 mergeback: 05-19-2026#854
jerrysxie merged 8 commits into
OpenDevicePartnership:v0.2.0from
tullom:v0.2.0

Conversation

@tullom
Copy link
Copy Markdown
Contributor

@tullom tullom commented May 19, 2026

No description provided.

jerrysxie and others added 7 commits April 20, 2026 15:48
…evicePartnership#803)

This pull request introduces several important improvements to the
cargo-vet audit process documentation and configuration, focusing on
stricter exemption policies, duplicate audit entry prevention, and the
addition of new audit records. The main themes are: enhanced
documentation for reviewers, stricter exemption and deduplication
workflows, and updates to the audit registry.

**Documentation and Workflow Improvements:**

* Added explicit instructions to always run `cargo vet` commands
non-interactively to prevent blocking on terminal input, and clarified
how to set the pager and use `--accept-all` for certification.
(.github/agents/cargo-vet-auditor.agent.md)
* Strengthened the policy that exemptions (`[[exemptions]]`) should only
be used as a last resort, requiring explicit user confirmation and
justification, and that every exemption must include a `notes` field
explaining its necessity and removal conditions.
(.github/agents/cargo-vet-auditor.agent.md,
.github/skills/cargo-vet-audit/SKILL.md)
[[1]](diffhunk://#diff-34643b14215fa0cbb482e40432146ebcf329c13cd61ef7b7fed20e112b8e19e6R89-R127)
[[2]](diffhunk://#diff-c18d588b43b8f757894f63618ccb4e6f2d9a5adb55452ac09267853410462f77R63-R85)
* Introduced a duplicate-audit guardrail: before certifying, the
workflow now checks for identical existing audit entries and instructs
reviewers to deduplicate them, preventing redundant audit records.
(.github/agents/cargo-vet-auditor.agent.md,
.github/skills/cargo-vet-audit/SKILL.md)
[[1]](diffhunk://#diff-34643b14215fa0cbb482e40432146ebcf329c13cd61ef7b7fed20e112b8e19e6R89-R127)
[[2]](diffhunk://#diff-c18d588b43b8f757894f63618ccb4e6f2d9a5adb55452ac09267853410462f77L107-R155)

**Audit Registry Updates:**

* Added new or updated audit entries for the following crates:
`autocfg`, `crunchy`, `serde_spanned`, `tap`, `thread_local`, and
`valuable`, all with detailed notes and criteria.
(supply-chain/audits.toml)
[[1]](diffhunk://#diff-eb494298b7630e575978d77f3bdd3178163bb7f5dbbf7e24316abe77210549f6R49-R54)
[[2]](diffhunk://#diff-eb494298b7630e575978d77f3bdd3178163bb7f5dbbf7e24316abe77210549f6R81-R86)
[[3]](diffhunk://#diff-eb494298b7630e575978d77f3bdd3178163bb7f5dbbf7e24316abe77210549f6R475-R480)
[[4]](diffhunk://#diff-eb494298b7630e575978d77f3bdd3178163bb7f5dbbf7e24316abe77210549f6R501-R512)
[[5]](diffhunk://#diff-eb494298b7630e575978d77f3bdd3178163bb7f5dbbf7e24316abe77210549f6R568-R573)
* Added a new trusted entry for `rustc-demangle` with `safe-to-deploy`
criteria. (supply-chain/audits.toml)

**Configuration Clean-up:**

* Removed unused or unnecessary import sources from
`supply-chain/config.toml` (specifically `embark-studios` and `zcash`).
(supply-chain/config.toml)
…ePartnership#813)

This lock was being held for the duration of the conditional branch,
causing a deadlock in `update_current_consumer`.
This pull request significantly reduces the number of explicit
exemptions listed in the `supply-chain/config.toml` file. Many crates
that were previously exempted from certain audit criteria have been
removed from the exemptions list, leaving only a single exemption for
the `generator` crate.

Dependency audit policy updates:

* Removed numerous crate exemptions from the `[exemptions]` section,
which previously allowed specific versions of various dependencies to
bypass the default audit criteria. Now, only the `generator` crate
remains explicitly exempted.
This bumps the workspace `heapless` dependency from `0.8.*` to a pinned
`0.9.2` (heapless 0.9.0/0.9.1 were yanked). Because every public type
that exposes heapless containers is now backed by a different major
version, this is a breaking change for every downstream consumer of any
`embedded-services` workspace crate (`embedded-service`, `cfu-service`,
`thermal-service`, `type-c-service`, `power-policy-service`,
`battery-service`, etc.).

Downstream consumers MUST also bump their own `heapless` dependency to
`0.9` or accept multi-major heapless in their lockfile. Direct users of
the affected APIs will need to update calls/types per the heapless 0.9
migration notes (see below).

Heapless 0.9 source migration applied here:
- `heapless::FnvIndexSet` moved to `heapless::index_set::FnvIndexSet`.
Fixed in `power-policy-service/src/lib.rs` (`connected_providers`) and
`type-c-service/src/service/ucsi.rs`
(`valid_battery_charging_capability`).
- No use of `heapless::HistoryBuffer` / `MpMcQueue` / `Q*` aliases /
`histbuf` module / `defmt-03` feature in this workspace, so no further
source/feature edits were required.
- `Vec::extend_from_slice`/`from_slice`/`resize` and
`String::push`/`push_str` now return `CapacityError` instead of `()`;
the workspace doesn't pattern-match these as `Err(())`, so no callsite
updates were needed.

Opportunistic version bumps applied alongside (kept embassy-time stack
in sync so heapless 0.9 actually reaches the active workspace):
- `embassy-time`: `0.5.0` -> `0.5.1`
- `embassy-time-driver`: `0.2.1` -> `0.2.2`
- `embassy-time-queue-utils` lockfile pin: `0.3.0` -> `0.3.2` (0.3.0
still pinned heapless 0.8 transitively)

Also bumps `embassy-time` patch in the three example workspaces
(`examples/rt633`, `examples/rt685s-evk`, `examples/std`).

Final per-workspace heapless lockfile states (tracked for the org-wide
audit):
- root, examples/{rt633, rt685s-evk, std}: `0.8.0` + `0.9.2`
- `embedded-service/Cargo.lock`, `power-policy-service/Cargo.lock`:
unchanged (these subdir lockfiles are not part of any workspace --
`cargo locate-project --workspace` from those directories returns the
root manifest, so cargo never touches them. They are stale orphans and
retain `0.7.17` + `0.8.0`. Not deleted in this commit because they are
still being touched by unrelated PRs; flag for separate cleanup.)

Remaining heapless 0.8.0 in active lockfiles is held there by upstream
deps that haven't bumped yet:
- `tps6699x` (git, pins `heapless = "0.8.0"`)
- `keyberon` (git master, pins heapless 0.8 -- via `keyboard-service`)
- `usb-device 0.3.2` (latest crates.io -- via `keyberon`)

cargo-deny: also adds `RUSTSEC-2026-0110` (bare-metal, unmaintained) to
`deny.toml`'s `advisories.ignore` list, matching the precedent set for
`RUSTSEC-2024-0370`. Local `cargo deny --all-features --locked check
bans licenses sources` is green; the `advisories` sub-check is skipped
locally only because cargo-deny 0.18.2 trips on the CVSS 4.0 advisory
`RUSTSEC-2026-0066` (astral-tokio-tar) -- CI's `cargo-deny-action`
wrapper uses a newer cargo-deny that handles it.

cargo-vet: certifies `embassy-time-queue-utils 0.3.0 -> 0.3.2` as
`safe-to-deploy` (only audit needed; other delta versions were already
covered or matched existing audits).

Local CI replicated and green:
- `cargo fmt --all --check`
- `cargo machete`
- `cargo doc --no-deps -F log --locked` and `-F defmt --locked`
- `cargo hack --feature-powerset
--mutually-exclusive-features=log,defmt,defmt-timestamp-uptime clippy
--locked --target x86_64-pc-windows-msvc`
- `cargo +1.90 check -F log --locked` and `-F defmt --locked`
- `cargo clippy --target thumbv8m.main-none-eabihf --locked` for both
ARM examples; `cargo clippy --locked` for the std example
- `cargo deny --all-features --locked check bans licenses sources`
- `cargo vet`

(`cargo test` skipped locally: the workspace's test build pulls
defmt/cortex-m via `debug-service` and links unconditionally, which does
not work on the Windows MSVC host even on `main`. CI runs it on Ubuntu
where it does work.)

Assisted-by: Claude:claude-opus-4.7

Co-authored-by: Felipe Balbi <febalbi@microsoft.com>
…rtnership#822)

Every commit with AI-assisted work must include an Assisted-by trailer.
AI agents must verify their own identity before composing the trailer
and must not add Signed-off-by tags.

Assisted-by: GitHub Copilot:claude-opus-4.6
…icePartnership#834)

This PR applies two org-wide standardisation changes
(ref: OpenDevicePartnership/embedded-rust-template#20):

1. **LICENSE** – normalise the copyright line to:
   `Copyright (c) Open Device Partnership and Contributors`
@tullom tullom self-assigned this May 19, 2026
Copilot AI review requested due to automatic review settings May 19, 2026 21:00
@tullom tullom requested review from a team as code owners May 19, 2026 21:00
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 19, 2026

Cargo Vet Audit Passed

cargo vet has passed in this PR. No new unvetted dependencies were found.

@github-actions github-actions Bot added the cargo vet PRs pending auditor review label May 19, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Merge-back from the v0.2.0 line that primarily updates dependency versions (notably heapless and embassy-time), adjusts code to match updated APIs, and refreshes cargo-vet supply-chain metadata and contributor guidance.

Changes:

  • Bump workspace dependencies (e.g., heapless to 0.9.2, embassy-time to 0.5.1, embassy-time-driver to 0.2.2) and propagate updates to example workspaces/locks.
  • Update code to the heapless 0.9.x module path for FnvIndexSet.
  • Add/refresh cargo-vet audits/imports metadata and extend internal docs/agent guidance (AI attribution, exemptions, dedup).

Reviewed changes

Copilot reviewed 10 out of 15 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
type-c-service/src/service/ucsi.rs Updates FnvIndexSet path for heapless 0.9.x compatibility.
power-policy-service/src/service/mod.rs Updates FnvIndexSet path and constructor for heapless 0.9.x.
supply-chain/imports.lock Updates imported publisher/audit metadata and normalizes TOML quoting.
supply-chain/audits.toml Adds many new cargo-vet audit entries and trusted publisher info.
LICENSE Updates copyright notice to include contributors.
examples/std/Cargo.toml Updates example dependency versions/ranges for Embassy crates.
examples/std/Cargo.lock Refreshes example lockfile to newer dependency graph (incl. heapless).
examples/rt685s-evk/Cargo.toml Updates embassy-time version in embedded example.
examples/rt685s-evk/Cargo.lock Refreshes embedded example lockfile (incl. heapless).
examples/pico-de-gallo/Cargo.lock Refreshes lockfile entries for embassy-time / embassy-time-driver.
Cargo.toml Updates workspace dependency versions (heapless + embassy-time*).
Cargo.lock Refreshes lockfile for updated dependency versions (incl. heapless).
.github/skills/cargo-vet-audit/SKILL.md Adds guidance on exemptions and duplicate-audit cleanup.
.github/copilot-instructions.md Adds commit-message AI attribution requirements.
.github/agents/cargo-vet-auditor.agent.md Adds non-interactive/duplicate-audit guardrails and updates pager guidance.
Comments suppressed due to low confidence (2)

.github/agents/cargo-vet-auditor.agent.md:132

  • This command example still recommends $env:PAGER='more.com', which is a pager that can pause and block. Please switch the PowerShell example to a truly non-interactive passthrough pager to match the “Non-Interactive Execution” requirement.
### For Delta Audits

Use `PAGER=cat cargo vet diff CRATE FROM TO` (POSIX) or
`$env:PAGER='more.com'; cargo vet diff CRATE FROM TO` (PowerShell) to view the diff.

.github/agents/cargo-vet-auditor.agent.md:144

  • Same issue here: $env:PAGER='more.com' may block waiting for input. To keep cargo vet inspect non-interactive in PowerShell, use a pager that never pauses (or omit the pager entirely if possible).
### For Full Version Audits

Use `PAGER=cat cargo vet inspect CRATE VERSION` (POSIX) or
`$env:PAGER='more.com'; cargo vet inspect CRATE VERSION` (PowerShell) to view source.

Comment thread .github/agents/cargo-vet-auditor.agent.md
Comment thread .github/copilot-instructions.md
Comment thread supply-chain/audits.toml
Copy link
Copy Markdown
Contributor

@felipebalbi felipebalbi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mostly straightforward merge.

@jerrysxie jerrysxie merged commit cedb8db into OpenDevicePartnership:v0.2.0 May 19, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cargo vet PRs pending auditor review mergeback

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants