Every new PR that introduces new functionality must link to an approved issue. PRs without one may be closed at maintainer's discretion.
good-first-issue label or comment)For new contributors we require to keep PRs under 500 lines of code, unless explicitly approved by a maintainer under linked issue.
These require design discussion in the issue before coding:
If you can‘t run it, you can’t submit it.
Authors of PRs must run the code locally. “Relying on CI” is not acceptable.
One PR = one thing. Bug fix, refactor, feature - separate PRs. Mixed PRs will be closed.
For Rust code:
cargo fmt --all cargo clippy --all-targets --all-features -- -D warnings cargo build cargo test cargo machete cargo sort --workspace
For other languages, check the README in foreign/{language}/ (e.g., foreign/go/, foreign/java/).
We use prek:
cargo install prek
prek install
// Bad: Increment counter counter += 1; // Good: Offset by 1 because segment IDs are 1-indexed in the wire protocol counter += 1;
Don't comment obvious code. Do explain non-obvious decisions, invariants, and constraints.
Format: type(scope): subject
Good examples from this repo:
fix(server): prevent panic when segment rotates during async persistence fix(server): chunk vectored writes to avoid exceeding IOV_MAX limit feat(server): add SegmentedSlab collection refactor(server): consolidate permissions into metadata crate chore(integration): remove streaming tests superseded by API-level coverage
Keep subject under 72 chars. Use body for details if needed.
PRs may be closed if: