Contributing
Persia DB is a database, so correctness comes first and speed comes after, with measurements.
- Read
SPEC.mdandCLAUDE.md. The rules apply to human and AI-assisted changes. - Pick a leaf from
ROADMAP.md.PROGRESS.mdlists what is ready next. One leaf, one pull request. - 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).