Contributions must preserve the crate's ownership and cleanup contracts.
Use the bug, feature, or question issue form when discussion would help define the expected behavior. Report suspected vulnerabilities through GitHub private vulnerability reporting, not a public issue.
Keep pull requests focused. Changes to ownership, handle inheritance, Job lifetime, ConPTY, mitigation, quoting, or suspended-process behavior should explain the safety invariant they preserve.
Development and integration tests require Windows 10 version 1809 or later. The crate supports Rust 1.75 and later. Install the tool versions used by CI, then run:
just ci
just coverageBefore submitting, also run:
actionlint
git diff --check
gitleaks git . --redact --no-banner
gitleaks dir . --redact --no-bannerjust release-candidate validates packaging and reproducibility locally; it
does not publish anything.
- Preserve the documented ownership and cleanup behavior, including on errors.
- Give every
unsafeblock a specific safety justification. - Add deterministic tests for behavior changes and avoid timing-only assertions.
- Keep the public API snapshot unchanged unless the pull request changes the public API and explains the compatibility impact.
- Update the crate documentation, ADRs, or security boundary when contracts change.
- Keep dependencies minimal and compatible with the MSRV.
Required checks and review conversations must be complete before merge. Pull
requests are squash-merged into main.