# Contributing to MoonKV

MoonKV welcomes focused bug fixes, tests, documentation improvements, and
MoonBit ecosystem work. Please keep changes small enough to review and explain
the observable behavior in the pull request.

## Development setup

1. Fork the repository and branch from `master`.
2. Install MoonBit 0.10.3 or a newer compatible toolchain and a native C
   compiler when running native tests.
3. Update dependencies with `moon update`.

## Required checks

Run the checks that match CI before opening a pull request:

```bash
moon fmt --check
moon check --target all --deny-warn
moon build --target all
moon test --target all --deny-warn
bash scripts/cross-process-recovery.sh
moon info
git diff --exit-code
```

For storage changes, add a regression test for the failure or boundary first.
For public API changes, update both README files and the changelog. If a
benchmark changes, include the command, record count, toolchain, operating
system, and storage conditions; do not present one machine's result as a
portable throughput guarantee.

## Pull requests and licensing

Use a descriptive commit message, describe compatibility and recovery impact,
and disclose any third-party code or generated material. New contributions
must be compatible with the repository's Apache-2.0 license. Do not commit
credentials, private data, build directories, or generated dependency caches.
