runner-manager-platform 0.4.21

Process, filesystem, machine-scoped secret store, service, and OS adapters for runner-manager.
Documentation
# Owned by task a1. Dependencies are added in the root [workspace.dependencies]
# table, never here. See the header of the root Cargo.toml.
#
# The OS-specific crates are target-gated so that a leg of the CI matrix never
# compiles an adapter it cannot use: `windows`/`windows-service` for DPAPI
# machine scope and the Windows service control handler (`d2`, `d3`), and
# `security-framework` for the macOS System Keychain (`d2`). Linux needs no
# extra crate — a `0600` file plus systemd credentials is `std` plus an
# environment variable (`05-infrastructure.md`).

[package]
name = "runner-manager-platform"
description = "Process, filesystem, machine-scoped secret store, service, and OS adapters for runner-manager."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true

[dependencies]
async-trait = { workspace = true }
chrono = { workspace = true }
directories = { workspace = true }
# `a1`'s WSL artifact primitives verify a published release archive's SHA-256
# before any byte of it reaches a distribution, and derive the stable per
# distribution lifecycle-task suffix from the same digest function. Both are
# already in `[workspace.dependencies]` and already in the resolved graph, so
# naming them here adds nothing to `Cargo.lock`.
hex = { workspace = true }
remove_dir_all = { workspace = true }
runner-manager-domain = { workspace = true }
secrecy = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
sha2 = { workspace = true }
tempfile = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
tracing = { workspace = true }
tracing-appender = { workspace = true }
tracing-subscriber = { workspace = true }
uuid = { workspace = true }

[target.'cfg(windows)'.dependencies]
windows = { workspace = true }
windows-service = { workspace = true }

[target.'cfg(target_os = "macos")'.dependencies]
core-foundation = { workspace = true }
security-framework = { workspace = true }

# `d1` pairs a PID with the process start time so that a recycled PID cannot
# impersonate a runner that is gone. `std` exposes no start time, so the Unix
# legs read `sysctl(KERN_PROC)` on macOS and `/proc/<pid>/stat` field 22 on
# Linux; the Windows leg uses `GetProcessTimes` from the `windows` crate above.
[target.'cfg(unix)'.dependencies]
libc = { workspace = true }

[dev-dependencies]
insta = { workspace = true }
runner-manager-testkit = { workspace = true }
serial_test = { workspace = true }
# `d1`'s lock-contention tests drive `tokio::time::pause()`.
tokio = { workspace = true, features = ["test-util"] }