# CODEOWNERS file for tpu-inference
# This file defines code ownership for different parts of the repository.
# Each line is a file pattern followed by one or more owners.
# Owners are notified when PRs modify code in their areas.
#
# Order matters - the last matching pattern takes precedence.
# Analysis includes full history from tpu_commons and tpu_inference paths.

# Default owners for everything in the repo (fallback)
* @vipannalla @kyuyeunk @QiliangCui

# CI/CD and Build Configuration
/.buildkite/ @jcyang43 @QiliangCui @yiw-wang @CienetStingLin
/.github/ @jcyang43 @QiliangCui @yiw-wang @CienetStingLin

# Documentation
/docs/ @bvrockwell @vipannalla
/README.md @bvrockwell @vipannalla
/CONTRIBUTING.md @jrplatin @bvrockwell

# Distributed Computing
/tpu_inference/distributed/ @mrjunwan-lang @sixiang-google

# Kernel Implementations (Performance-critical)
/tpu_inference/kernels/ @kyuyeunk @bythew3i @a1yssan13 @jrplatin
/tpu_inference/kernels/mla/ @m-liu @gxd3 @gpolovets1 @kyuyeunk

# Model layers
/tpu_inference/layers/ @kyuyeunk @lk-chen @jrplatin
/tpu_inference/layers/jax/ @jrplatin @gpolovets1
/tpu_inference/layers/vllm/ @kyuyeunk @vanbasten23 @gxd3

# Model Implementations and wrappers
/tpu_inference/models/ @kyuyeunk @lk-chen @jrplatin
/tpu_inference/models/jax/qwen2_5_vl.py @kwang3939 @JiriesKaileh
/tpu_inference/models/jax/deepseek_v3.py @gpolovets1 @jrplatin @gxd3
/tpu_inference/models/vllm/ @kyuyeunk @vanbasten23 @gxd3

# Runner and Execution
/tpu_inference/runner/ @kyuyeunk @jrplatin @wenxindongwork @sixiang-google  @mrjunwan-lang
/tpu_inference/runner/tpu_runner.py @jrplatin @kyuyeunk @wenxindongwork @sixiang-google
/tpu_inference/runner/persistent_batch_manager.py @jrplatin @wenxindongwork
/tpu_inference/executors/ @sixiang-google @mrjunwan-lang
/tpu_inference/core/ @sixiang-google @mrjunwan-lang @wenxindongwork
/tpu_inference/layers/common/sharding.py @kyuyeunk @jrplatin @wenxindongwork @sixiang-google  @mrjunwan-lang

# Worker Management
/tpu_inference/worker/ @sixiang-google @mrjunwan-lang @jrplatin @vanbasten23 @wenxindongwork

# Speculative Decoding
/tpu_inference/spec_decode/ @Lumosis @gxd3
/tpu_inference/layers/jax/sample/rejection_sampler.py @Lumosis @gxd3
/tpu_inference/runner/speculative_decoding_manager.py @Lumosis @gxd3

# Platform Support
/tpu_inference/platforms/ @sixiang-google @mrjunwan-lang

# LoRA and Adapters
/tpu_inference/lora/ @vanbasten23 @kyuyeunk
/tpu_inference/runner/lora_utils.py @vanbasten23 @kyuyeunk

# Docker Configuration
/docker/ @jrplatin @QiliangCui @yiw-wang

# Tools (kernel tuner, etc.)
/tools/ @vipannalla @kyuyeunk @patrickji2014

# Unowned: scripts, examples, and bot-updated support_matrices —
# anyone can approve, no required CODEOWNER review. Bot pushes to
# support_matrices bypass branch protection at the push level.
/scripts/
/examples/
/support_matrices/

# Tests mirror production-code ownership (CODEOWNERS rules per subtree)
/tests/core/ @sixiang-google @mrjunwan-lang @wenxindongwork
/tests/distributed/ @mrjunwan-lang @sixiang-google
/tests/executors/ @sixiang-google @mrjunwan-lang
/tests/kernels/ @kyuyeunk @bythew3i @a1yssan13
/tests/layers/ @kyuyeunk @lk-chen
/tests/lora/ @vanbasten23 @kyuyeunk
/tests/models/ @kyuyeunk @lk-chen
/tests/platforms/ @sixiang-google @mrjunwan-lang
/tests/runner/ @kyuyeunk @jrplatin @wenxindongwork @sixiang-google @mrjunwan-lang
/tests/spec_decode/ @Lumosis @gxd3
/tests/layers/jax/sample/test_rejection_sampler.py @Lumosis @gxd3
/tests/worker/ @sixiang-google @mrjunwan-lang @jrplatin @vanbasten23 @wenxindongwork
/tests/e2e/ @pv97 @wenxindongwork @jrplatin @Lumosis @gxd3
/tests/offload/ @juncgu-google @richardsliu
/tests/scripts/ @jrplatin @QiliangCui
