Vault manager sourceorrery ui (Ratatui, ui feature, on by default)
Groundwork: the command, the value-free MetadataSource seam, a secret list with keyboard navigation
Read-only browser: vault picker, search over names/tags/status, secret detail with versions, deleted secrets, audit log, audit-only mode for a vault blocked by a truncation
Metadata changes behind confirmations (enable/disable, tags, content type, time window, delete/recover; new versions through the hidden prompt), through a separate write-capable interface
Conformance + security suites; CI on Ubuntu/Windows/macOS; release workflow
Manual validation of the OS-keyring path on macOS and a Linux desktop
Metadata and audit-log integrity (MAC over mutable metadata)
Reads load only the value they return (metadata projection for every version query; one ciphertext row per get)
Listing cost: list and list-deleted still verify every version row and every checkpoint row of every secret, one query per secret, because which version is newest can only be judged against the complete set. A bulk checkpoint read and pagination on list_* are open; pagination is an API change and goes through core with a conformance test
backup / restore (encrypted export of a vault or a secret)
Pre-built CLI archives for six targets on the GitHub release, with SHA256SUMS
cargo install sourceorrery-cli
Package managers: Homebrew, WinGet, Scoop; signed releases
Docs site at sourceorrery.ai (Astro Starlight) from docs/, deployed by Azure Static Web Apps
Milestone 2 — first-class language bindings (shipped in 0.1.3)
sourceorrery-ffi: stable C ABI (cbindgen), versioned CONTRACT_VERSION
Read-only so_reader_* / so_project_* ABI and the sourceorrery client crate (unlock order, manifest loading, error hints)
Read-only SDKs: Python (PyPI, maturin), JavaScript/TypeScript (npm, napi-rs), Rust (crates.io), Java (Maven Central, FFM), .NET (NuGet, LibraryImport), Go (cgo), C, C++ (header-only), PHP (Packagist, FFI); each tested and its example run in CI on Ubuntu/Windows/macOS against a vault the CLI creates
Manual release workflow: GitHub Release with checksums, registry publish jobs skipped until their secrets exist, dry-run mode
Scoped value accessors (with / using / try-with-resources / defer / RAII / Use(span)) in every SDK
Cross-language conformance harness: tests/conformance/sdk/scenarios.json + harness.py drive a runner per SDK through the same scenarios in every SDK CI job