All packages

pm-rust

Independent Rust-native pm CLI and SDK implementation

Install

This package has not been released, so it cannot be installed yet.

README

pm-rust is an independent, Rust-native implementation of the public pm workspace contracts for agents and native applications.

The project is pre-release. Its current delivery slice reads workspaces and creates, updates, comments on, and closes canonical items against the published pm 2026.9.26 on-disk contract. Production code, tests, benchmarks, and build tooling are Rust; the distributed binary does not require Node.js, Bun, JavaScript, or TypeScript.

Current native slice

cargo run -- --workspace /path/to/project list --status open
cargo run -- --workspace /path/to/project list --type Feature
cargo run -- --workspace /path/to/project get pm-example
cargo run -- --workspace /path/to/project create --id pm-example --title "Native item" --type Task --author agent
cargo run -- --workspace /path/to/project update pm-example --title "Renamed" --priority 1 --author agent
cargo run -- --workspace /path/to/project comment pm-example "Status note" --author agent
cargo run -- --workspace /path/to/project close pm-example --reason "Done: shipped" --author agent

The library discovers .agents/pm from a workspace, nested directory, file, or tracker root; strictly decodes TOON item documents; retains unknown package fields; rejects merge markers and duplicate IDs; and returns deterministic JSON projections. Create uses explicit IDs, per-item ownership locks, synced same-directory atomic writes, a durable recovery journal, canonical history, and exact post-document hashes. See the compatibility contract.

Rust formatting, strict Clippy (deny warnings, pedantic), complete private-item rustdoc coverage, a native Rust identity-audit gate, and tests run on Linux, macOS, and Windows. Ubuntu additionally gates the dependency audit, generated changelog, strict pm health, the release:check aggregate gate, and 100 percent line, region, function, and branch coverage.

Publication and automated releases remain disabled until a maintainer explicitly approves publishing. The daily release workflow is present and correct but cannot fire without the PM_RELEASE_APPROVED repository variable being set to true.

Identity audit gate

A native Rust identity-audit gate (tests/identity_audit.rs) scans every object in the local object store — via git cat-file --batch-all-objects, so both objects reachable from refs and any unreachable (dangling or orphaned) ones that store holds — for author and committer identities, and fails closed on any identity not listed in .github/approved-git-identities.txt.

What CI can and cannot prove. Workflow jobs check out with fetch-depth: 0 and fetch-tags: true, which fetches the complete reachable history — so in CI the gate covers every commit on every ref and tag. It does not cover objects that are unreachable on the server: a clone never transfers dangling objects, so they cannot be in the runner's object store to scan. The unreachable-object capability therefore protects a run against a repository that actually holds such objects — a maintainer's local clone, or a forensic mirror — and CI's guarantee is the narrower reachable one. Treat a green CI run as evidence about refs, not about the whole upstream object database.

Changelog and release tooling

Since pm-rust has no package.json, changelog and release-note targets are exposed via a justfile:

just changelog          # prepend new release section to CHANGELOG.md
just changelog-full     # rebuild full changelog from all release tags
just changelog-check    # verify committed changelog matches generated (CI gate)
just release-notes      # print release notes for the current release window
just release-check      # aggregate release gate (fmt, clippy, docs, tests, coverage, audit, changelog)

The changelog heading date is fixed (not clock-derived) so the gate produces identical output across all timezones.

Work is managed in this repository with the latest pm CLI under .agents/pm/. The ecosystem-level lineage is the private companion item pm-cli-website-204t.

Development

# Run the aggregate release gate (fmt, clippy, docs, tests, coverage, audit, changelog)
just release-check

# Individual gates
cargo fmt --all -- --check
cargo clippy --locked --all-targets --all-features -- -D warnings
RUSTDOCFLAGS='--document-private-items -D missing-docs' cargo doc --locked --all-features --no-deps
cargo test --locked --all-targets --all-features
cargo +nightly-2026-08-06 llvm-cov --locked --branch --all-targets --all-features --json --output-path coverage-branch.json
jq -e '.data[0].totals.lines.percent == 100 and .data[0].totals.functions.percent == 100 and .data[0].totals.regions.percent == 100 and .data[0].totals.branches.percent == 100' coverage-branch.json
cargo audit
npm exec --yes --package=@unbrained/[email protected] -- pm health --check-only --require-merge-drivers --strict-exit

License

MIT. See LICENSE.

From the package's README on GitHub. View on GitHub