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¶
just build # debug 构建
just test # 通过 cargo nextest 运行 Rust 测试,再运行 Python 测试
just test pvisor-core # 只运行一个包的 Rust 测试
just fmt-check # 格式检查
just lint # clippy 与 ruff
just 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 tests/semantics/ 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
just fmt-check,just lintand relevantjust 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.