CONTRIBUTING.md
# Contributing
Thanks for contributing to Squid Mesh.
## Development Setup
Requirements:
- Elixir `~> 1.17`
- Erlang/OTP compatible with the current CI matrix
- Postgres
Clone the repository and install dependencies:
```sh
mix deps.get
```
Prepare the example host app:
```sh
cd examples/minimal_host_app
mix deps.get
mix ecto.create
mix ecto.migrate
```
## Local Verification
Run the root test suite:
```sh
mix test
mix format --check-formatted
```
Run the example host app test suite:
```sh
cd examples/minimal_host_app
mix test
MIX_ENV=test mix example.smoke
```
The example host app is part of the development harness. Changes that affect
runtime behavior should keep that smoke path green.
## Workflow For Changes
1. Start from `main`.
2. Create a short-lived branch for one focused slice.
3. Keep commits small and intentional.
4. Add or update tests with the change.
5. Run the verification steps before opening a pull request.
## Pull Requests
Pull requests should:
- describe the net change
- explain why the change is needed
- stay focused on one reviewable slice
- reference the issues they close when applicable
## Documentation
Documentation changes are welcome and should keep these sources aligned:
- `README.md`
- `docs/`
- example host app guides
- module docs for public or operationally important modules
## Questions And Discussion
If you are unsure about a change, open an issue or draft pull request first so
the direction can be aligned before implementation gets large.