# Contributing

Contributions should preserve MoonRule's small, deterministic language boundary.

Before submitting a change:

1. add behavior-focused tests;
2. run `moon fmt`;
3. run `moon check --deny-warn`;
4. run `moon test --package YeeHh2004/moonrule --deny-warn`;
5. update the language reference for syntax or semantic changes;
6. update the changelog for user-visible changes.

New operators must document precedence, accepted types, error behavior and trace behavior. New functions should be deterministic and free of filesystem, network or process side effects.

Bug reports should include the expression, a minimal JSON input, expected behavior, actual diagnostic and MoonBit toolchain version.
