Files

38 lines
1.2 KiB
Markdown

# Contributing
Keep changes focused and preserve Colibri's dependency-free default CPU path.
## Branches
- **`main`** is the stable branch. It's what users clone, and it stays known-good
(engine always passes the token-exact oracle: `SNAP=./glm_tiny TF=1 ./glm 64 16 16`).
- **`dev`** is the integration branch. **Open your PR against `dev`.** Reviewed PRs
land there first; once a batch is tested and stable, the maintainer fast-forwards
it into `main`. This keeps `main` clean instead of taking every PR one at a time.
Every PR — on either branch — is reviewed for a clean build (0 warnings), the oracle
(32/32 TF + 20/20 greedy), and its own targeted validation before merge.
## Local checks
Run the lightweight checks locally:
```sh
make check
```
`make -C c check` remains available for scripts that already run from the
engine directory.
This performs one portable CPU build, C unit tests, and Python standard-library
tests. It does not download a model or require CUDA.
CUDA changes should additionally be checked on a CUDA-capable Linux host:
```sh
make -C c cuda-test CUDA_ARCH=native
```
Benchmark reports should include the commit, exact commands, hardware and
storage details, warm-up policy, run count, and median throughput.