# Contributing

## Development loop

1. Install the current MoonBit stable toolchain.
2. Run `moon check --target all --deny-warn`.
3. Add a focused test before changing behavior.
4. Run the focused test, then `moon test --target all --deny-warn`.
5. Run `moon fmt`, `moon info`, and inspect generated interface changes.

Keep changes package-local and split new behavior into cohesive `.mbt` files.
Public APIs should have a small example or a black-box test. Invalid user input
must return a diagnostic or checked error rather than panic.

## Data and privacy

Do not commit patient records, identifiable health information, proprietary
tables, or data with unclear redistribution rights. New fixtures must identify
their jurisdiction/version context and license; representative examples should
remain clearly labeled as fixtures.

## Pull requests and issues

Include the target backend, `moon version --all` output, exact commands run, and
a minimal reproducer for bug reports. Describe compatibility impact for public
API changes and update `CHANGELOG.md` when user-facing behavior changes.

## License

By contributing, you agree that your contribution is provided under the
repository's Apache-2.0 license.


