# Contributing to RHA Wrapper

Thanks for your interest in improving RHA Wrapper.

## Licensing of contributions (please read before opening a PR)

RHA Wrapper is **dual-licensed**: it is offered to the public under the
[PolyForm Shield License 1.0.0](LICENSE), and the copyright holder separately
offers [commercial licenses](COMMERCIAL-LICENSE.md) for uses the public license
does not permit. For that model to keep working, the project must be able to
license *all* of the code — including your contribution — under **both** sets of
terms.

So, by submitting a contribution (a pull request, patch, or any code, docs, or
other material) you agree that:

1. **You wrote it / you have the right to submit it.** The contribution is your
   original work, or you are otherwise entitled to submit it, and to your
   knowledge it does not violate anyone else's rights. This is the
   [Developer Certificate of Origin (DCO) 1.1](https://developercertificate.org/) —
   sign off your commits with `git commit -s`.

2. **You grant a broad license to the project.** You grant Andy Funke (the
   licensor) a perpetual, worldwide, non-exclusive, royalty-free, irrevocable
   copyright and patent license to use, reproduce, modify, distribute, and
   **sublicense** your contribution, **including the right to license it under
   the PolyForm Shield License, under future versions of that license, and under
   separate commercial terms.** You retain copyright in your contribution and
   remain free to use it yourself however you like.

If you cannot agree to the above, please don't submit a contribution — open an
issue to discuss instead.

## Practical notes

- Run `npm test` and `npm run typecheck` before opening a PR.
- Keep changes scoped; match the surrounding code's style and comment density.
- The frozen-IR / bounded-repair invariants are load-bearing — if a change
  touches `src/core/`, explain in the PR how the boundary and freeze guarantees
  are preserved.
