Contributing¶
This is the full guide. The repository-root CONTRIBUTING.md is its English summary; keep changes synchronized.
Where to start¶
- Report a bug or request a feature through GitHub Issues. Do not report security issues publicly; follow the Disclosure policy.
- Discuss substantial changes in an issue before implementation.
- Improve documentation: correct examples, add common questions, or clarify behavior. Engineering follow-ups live in
docs/README.md; update both languages together.
Development loop¶
mise run build # debug 构建
mise run test # 通过 cargo nextest 运行 Rust 测试,再运行 Python 测试
mise run test -- pvisor-core # 只运行一个包的 Rust 测试
mise run ci -- "fmt-rust --check" "fmt-py --check" # 格式检查
mise run lint # clippy 与 ruff
mise run docs-build # 构建并检查文档站点
See Development environment and engineering for FUSE/macFUSE, KVM/HVF and OCI runtime preparation, and Testing and semspec for test responsibilities.
Semantic specification rules¶
Product promises are semantic specifications under docs/src/zh/cases/ and reference/cases.md. Passing tests is separate from human approval:
- You may draft new cases and repair implementations;
- Never weaken existing claims, checks or
xfailannotations to obtain a pass; - Maintainers must manually approve cases with
semspec approveand editREVIEWED.toml/.approved/snapshots.
Submit a PR¶
- Focus each PR on one change; explain behavior and validation;
- Run
mise run ci -- "fmt-rust --check" "fmt-py --check",mise run lintand relevantmise run testchecks; - Update the authoritative page for the behavior, following
docs/README.md: one authoritative article per subject, with concise links elsewhere.
Contributions are licensed under Apache License 2.0.