Skip to content

Contributing

Persia DB is a database, so correctness comes first and speed comes after, with measurements.

  1. Read SPEC.md and CLAUDE.md. The rules apply to human and AI-assisted changes.
  2. Pick a leaf from ROADMAP.md. PROGRESS.md lists what is ready next. One leaf, one pull request.
  3. If the SPEC is unclear, or you want to change a decision, open an issue before writing the code. The code and the SPEC are not allowed to diverge silently.

Setup is the pinned toolchain (rustup reads rust-toolchain.toml) and cargo test --workspace. Before a pull request: format, clippy with warnings denied, tests, cargo xtask check-deps, and cargo xtask progress --check. The long form is CONTRIBUTING.md.

On-disk format changes need all four of: a SPEC update, a version or flag bump, an ADR under docs/adr/, and a golden test. Bytes from disk, the network, or a user are never unwrapped; corruption is Err. unsafe is confined to the memory-map module in persia-format, and any other use needs an ADR.

Commit messages follow Conventional Commits: feat(engine): ..., fix(format): ..., docs: ....

By participating you agree to the Code of Conduct. Report security issues privately, as described in SECURITY.md. The project is pre-alpha: only the latest commit on main receives fixes. Treat a panic or unbounded memory use on a crafted database file as a security issue (SPEC §17).