microvms-protocol 1.3.0

Wire types shared by the microvms-agentd daemon and its clients
Documentation
[package]
# `protocol` is taken on crates.io (an unrelated crate, at 3.x), so the package
# carries the prefix and every dependent renames it back with
# `package = "microvms-protocol"`. That keeps `use protocol::` compiling in all 17
# source files that name it: the rename is a manifest concern and does not reach
# the code.
name = "microvms-protocol"
version = "1.3.0"
edition.workspace = true
license.workspace = true
repository.workspace = true
publish = true
description = "Wire types shared by the microvms-agentd daemon and its clients"
readme = "README.md"
keywords = ["microvms", "lambda", "aws", "protocol", "serde"]
categories = ["encoding", "virtualization"]

[dependencies]
serde = { version = "1", features = ["derive"] }
# Same pin and the same two features as the daemon carries, and for the same
# reason: `preserve_order` must stay off or the committed `docs/schema.json` stops
# being a function of the types. One version of schemars in the tree is what makes
# the generated artifact reproducible across the two crates that feed it.
schemars = { version = "1.2.2", default-features = false, features = ["derive", "std"] }

# Not a new edge in the tree — schemars already pulls `serde_json` in — but it is now
# a *runtime* one rather than only a dev one, and the reason is `RunHook::parse`.
# That function walks the payload as a `Value` instead of deriving the read, because
# the payload carries the agent token and serde's own error messages quote the value
# they rejected. Quoting a value there would put secret material into a log line and
# a response body, which is the one thing docs/TRUST.md promises never happens, so
# every refusal names a key or a shape and the walk is what makes that possible.
serde_json = "1"

[lints.rust]
# No hand-written `unsafe` in this crate; a future one is a build error, not a scan finding.
unsafe_code = "forbid"

# `mise run semver:check` and CI's `semver` job hold this crate's API to its last release on
# crates.io (#298). A break the crate means to ship is allowed here, in
# `[package.metadata.cargo-semver-checks.lints]`, by lint and with the reason; none is allowed,
# so any break fails.