# Contributing

## Local setup

```bash
uv sync --extra dev
```

## Validation commands

```bash
uv run ruff check .
uv run mypy src
uv run pytest
```

## Regeneration workflow

```bash
uv run python scripts/update_upstream.py
```

Then run lint/type/tests and open a PR with:

- generated diff summary
- upstream lock changes
- command/API drift notes

## Release model

- Version aligns to upstream Omni tag (`X.Y.Z`)
- SDK-only fixes use `.postN`
- Releases are manual tagged publishes
