• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Alan-Jowett / sonde / 26242190064
82%

Build:
DEFAULT BRANCH: main
Ran 21 May 2026 05:38PM UTC
Jobs 1
Files 129
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 May 2026 05:28PM UTC coverage: 82.621% (-0.04%) from 82.657%
26242190064

push

github

web-flow
feat: add GetGatewayState and SubmitRotation gRPC RPCs (GW-2012) (#1051)

* feat: add GetGatewayState and SubmitRotation gRPC RPCs (GW-2012)

Add two new RPCs to the gateway admin gRPC service for key management:

- \GetGatewayState\: returns gateway identity, master key ID/epoch,
  X25519 public key, BIP-39 fingerprint, salt, KDF params, rotation
  status, and version info. Used by admin CLI \key fingerprint\,
  \key status\, and \key rotate\ commands.

- \SubmitRotation\: accepts a \RotationPayloadV1\ binary and forwards
  it to the gateway engine via an async channel with oneshot response.
  Returns \{accepted, error}\. Both this gRPC path and the
  DESIRED_STATE connector path converge on the same rotation handler.

Proto changes:
- Added \GatewayState\, \KdfParameters\, \SubmitRotationRequest\,
  \SubmitRotationResponse\ messages to admin.proto

Implementation:
- \AdminService\ gains \otation_tx\ channel (typed via
  \RotationSubmitChannel\ alias) for forwarding payloads to the engine
- \with_rotation_tx()\ builder method for wiring at startup
- \get_gateway_state()\ reads from storage + gateway identity
- \submit_rotation()\ validates and forwards via channel

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* fix: address PR #1051 review — validation, error handling, correctness

- Use \identity.gateway_id()\ instead of nonexistent \gateway_id_hex\ config
- Validate \master_key_id\ length (16 bytes) after hex decode
- Return error on malformed channel/salt/kdf_params (not silent fallback)
- Validate salt length (16 bytes) when present
- Check \pending_rotation_phase\ config for rotation status (not
  nonexistent \otation_in_progress\ key)
- Use \SONDE_GIT_COMMIT\ env var (matches build.rs), not \SONDE_BUILD_COMMIT\
- Enforce 1024-byte max on rotation payload in \submit_rotation()\
- Fix \KdfParamsJson\ doc comment (deserializable, not serializable)

Co-authored-by: Co... (continued)

1 of 21 new or added lines in 1 file covered. (4.76%)

37086 of 44887 relevant lines covered (82.62%)

252.12 hits per line

Uncovered Changes

Lines Coverage ∆ File
20
73.95
-2.42% crates/sonde-gateway/src/admin.rs
Jobs
ID Job ID Ran Files Coverage
1 26242190064.1 21 May 2026 05:38PM UTC 129
82.62
GitHub Action Run
Source Files on build 26242190064
  • Tree
  • List 129
  • Changed 2
  • Source Changed 2
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26242190064
  • 018a812a on github
  • Prev Build on main (#26238389067)
  • Next Build on main (#26251168668)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc