Thanks for your interest in Race Condition! We welcome contributions of all sizes — bug fixes, documentation improvements, new features, and ideas.
Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project.
Visit https://cla.developers.google.com/ to see your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one (even for a different Google open-source project), you probably don't need to do it again.
This project follows Google's Open Source Community Guidelines and the Contributor Code of Conduct.
- 🐛 Report a bug — something is broken or behaves unexpectedly.
- 💡 Request a feature — propose a new capability before building it.
- 📝 Improve the documentation — typos, missing pieces, unclear sections.
- 🔧 Fix an issue — pick something from the open issues and submit a pull request.
For larger changes, please open an issue first to discuss the approach. This avoids wasted effort if a maintainer would have steered you a different direction.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/<your-username>/race-condition.git cd race-condition
- Create a topic branch from
main:git checkout -b feat/my-change
- Set up your environment (see
README.md→ Quickstart). - Make your change, following the code style guidelines below.
- Add or update tests for any behavior change.
- Run the full test suite locally:
make test make lint - Commit using Conventional Commits format (see below).
- Push to your fork and open a pull request against
main. - Address review feedback. CI must be green and CODEOWNERS must approve before a maintainer merges your PR (squash-merged).
- Go: format with
gofmt. All Go code must passgo vet ./...andgolangci-lint run ./.... - Python: lint and format with ruff. Run
uv run ruff check agents/anduv run ruff format --check agents/. - TypeScript / JavaScript: format with Prettier;
follow the existing style in each
web/*workspace. - License headers: every source file needs an Apache-2.0 license header.
CI enforces this with
addlicense.
We use Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Common types: feat, fix, docs, refactor, test, chore, perf,
build, ci. Examples:
feat(gateway): add health-check endpointfix(agents/planner): handle timeout when calling traffic enrichmentdocs(readme): clarify quickstart prerequisites
Pull requests must be signed (SSH or GPG). See GitHub's guide on signing commits.
Do not file public issues for security problems. See SECURITY.md
for the private disclosure process.
Forks are encouraged — fork freely to study, learn, build derivatives, or
maintain your own variant. The Apache-2.0 license permits commercial and
private use. Just keep the license headers and LICENSE file intact.
All submissions, including those from project members, require review. Maintainers aim to respond to PRs within a few business days. If your PR has been quiet for a week, it's fair to ping the thread.
Thanks again for contributing!