Repository guidance for coding and review, written to be useful for both humans and machines.
For humans: these documents use plain language and examples rather than rigid rules. Where something is a strong convention, it's described as such. Where something is a matter of judgment, it's described that way too.
For machines: load only files relevant to the current scope — the "Load when" column below is the signal.
| File | Load when |
|---|---|
| build.md | Always — build requirements and common tasks |
| general-patterns.md | Always — style, nullability, visibility, AutoValue, locking, logging |
| api-stability.md | Public API additions, removals, renames, or deprecations; stable vs alpha compatibility |
| gradle-conventions.md | build.gradle.kts or settings.gradle.kts changes; new modules |
| testing-patterns.md | Test files in scope — assertions, test utilities, test suites |
| other-tasks.md | Dev environment setup, benchmarks, composite builds, native image tests, OTLP protobuf updates |
- File names are kebab-cased and topic-oriented. Most follow a
<domain>-<focus>.mdpattern (e.g.api-stability.md,testing-patterns.md). - Sections within each document are ordered alphabetically, with the exception of any introductory content placed directly under the document title.