# See https://help.github.com/articles/about-codeowners/
# for more info about CODEOWNERS file

# It uses the same pattern rule for gitignore file,
# see https://git-scm.com/docs/gitignore#_pattern_format.


# ==== Documentation ====

# Authors responsible for documentation infrastructure and layout.
# ray-ci co-owns doc CI/build config; ray-docs-reviewers is a silent fallback
# (notifications disabled) so docs leads can unblock docs-required reviews.
/doc/ @ray-project/ray-docs @ray-project/ray-ci @ray-project/ray-docs-reviewers

# ==== Ray core ====

# All C++ code.
/src/ @ray-project/ray-core

# Python worker.
/python/ray/ @ray-project/ray-core

# Java worker.
/java/ @kfstorm @raulchen @WangTaoTheTonic @SongGuyang @ray-project/ray-core

# C++ worker
/cpp/ @SongGuyang @raulchen @kfstorm @ray-project/ray-core

/doc/source/cluster/ @ray-project/ray-core @ray-project/ray-docs
/doc/source/ray-core/ @ray-project/ray-core @ray-project/ray-docs

/doc/source/cluster/kubernetes/ @andrewsykim @ray-project/ray-core @ray-project/ray-docs

# Public protobuf files.
/src/ray/protobuf/public/ @edoakes @dayshah @MengjinYan

# Azure autoscaler
/python/ray/autoscaler/azure/ @ray-project/ray-core @marosset @jackfrancis @alimaazamat
/python/ray/autoscaler/_private/_azure/ @ray-project/ray-core @marosset @jackfrancis @alimaazamat

# ==== Libraries and frameworks ====

# Dependencies
/python/setup.py @richardliaw @edoakes @ray-project/ray-ci

# Common directory shared by core and the libraries.
# Stricter enforcement because this defines the public boundary supported by core.
/python/ray/_common/ @edoakes @dayshah @MengjinYan

# Ray data.
/python/ray/data/ @ray-project/ray-data
/doc/source/data/ @ray-project/ray-data @ray-project/ray-docs
/python/ray/dashboard/modules/data/ @ray-project/ray-data
/python/ray/dashboard/modules/metrics/dashboards/data_dashboard_panels.py @ray-project/ray-data

# RLlib.
/rllib/ @ray-project/ray-rllib
/doc/source/rllib/ @ray-project/ray-rllib @ray-project/ray-docs

# Ray Tune
/python/ray/tune/ @ray-project/ray-tune
/doc/source/tune/ @ray-project/ray-tune @ray-project/ray-docs

# Ray Train
/python/ray/train/ @ray-project/ray-train
/doc/source/train/ @ray-project/ray-train @ray-project/ray-docs

# Ray AIR
/python/ray/air/ @ray-project/ray-train

# Ray Serve
/python/ray/serve/ @ray-project/ray-serve
/java/serve/ @ray-project/ray-serve
/src/ray/protobuf/serve.proto @ray-project/ray-serve
/python/ray/dashboard/modules/serve/ @ray-project/ray-serve
/doc/source/serve/ @ray-project/ray-serve @ray-project/ray-docs

# LLM
/python/ray/llm/ @ray-project/ray-llm
/python/ray/data/llm.py @ray-project/ray-llm
/python/ray/dashboard/modules/metrics/dashboards/serve_llm_dashboard_panels.py @ray-project/ray-llm
/python/ray/dashboard/modules/metrics/dashboards/serve_llm_grafana_dashboard_base.json @ray-project/ray-llm
/python/ray/serve/llm/ @ray-project/ray-llm
/doc/source/serve/llm/ @ray-project/ray-llm @ray-project/ray-docs
/doc/source/data/working-with-llms.rst @ray-project/ray-llm @ray-project/ray-docs
/doc/source/data/doc_code/working-with-llms/ @ray-project/ray-llm @ray-project/ray-docs

# LLM dependencies
/python/requirements/llm/llm-requirements.txt @ray-project/ray-llm
/python/deplocks/llm/ @ray-project/ray-llm

# ML Docker Dependencies
/python/requirements/ml/dl-cpu-requirements.txt @richardliaw @matthewdeng
/python/requirements/ml/dl-gpu-requirements.txt @richardliaw @matthewdeng

# Ray symbol export
/src/ray/ray_version_script.lds @ray-project/ray-core
/src/ray/ray_exported_symbols.lds @ray-project/ray-core

# Ray usage stats
/python/ray/_private/usage/ @edoakes @richardliaw
/python/ray/dashboard/modules/usage_stats/ @edoakes @richardliaw
/src/ray/protobuf/usage.proto @pcmoritz @thomasdesr


# ==== Build and CI ====

# Bazel.
/BUILD.bazel @ray-project/ray-core @ray-project/ray-ci
/WORKSPACE @ray-project/ray-core @ray-project/ray-ci
/bazel/ @ray-project/ray-core @ray-project/ray-ci

# CI scripts. More specific /ci/ rules below override this catch-all.
/ci/ @ray-project/ray-core @ray-project/ray-ci

# CI
/ci/docker @ray-project/ray-ci
/ci/ray_ci @ray-project/ray-ci
/ci/ray_ci/serve_di_test_names.txt @ray-project/ray-serve
/ci/ray_ci/serve_hap_test_names.txt @ray-project/ray-serve

/.rayciversion @ray-project/ray-ci

# Buildkite pipeline management
.buildkite/hooks @ray-project/ray-ci

# Buildkite pipeline definitions and the change-detection rules that decide
# what CI runs for every PR. Editing these changes what runs for everyone.
/.buildkite/*.rayci.yml @ray-project/ray-ci
/.buildkite/test.rules.txt @ray-project/ray-ci
/.buildkite/always.rules.txt @ray-project/ray-ci

# Compiled dependency lockfile. Gates the build and test environment.
/python/requirements_compiled.txt @ray-project/ray-ci

# Read the Docs build configuration. ray-docs owns the docs build; ray-ci
# co-owns, and ray-docs-reviewers is a silent fallback for backup approval.
/.readthedocs.yaml @ray-project/ray-docs @ray-project/ray-ci @ray-project/ray-docs-reviewers

/release/ray_release @ray-project/ray-ci
/release/release_tests.yaml @ray-project/ray-ci

# Allow people to add BYOD post-installation shell scripts
# on their own.
/release/ray_release/byod/*.sh
/release/ray_release/byod/*.lock
/release/ray_release/byod/requirements_*.in
/release/ray_release/byod/requirements_*.txt

/.github/ISSUE_TEMPLATE/ @ray-project/ray-ci

/.github/workflows/ @ray-project/ray-ci

/.gemini/ @edoakes @ray-project/ray-ci

# TPU
/python/ray/util/tpu.py @andrewsykim @edoakes @ryanaoleary
/python/ray/tests/test_tpu.py @andrewsykim @edoakes @ryanaoleary
/python/ray/tests/accelerators/test_tpu.py @andrewsykim @edoakes @ryanaoleary
/python/ray/_private/accelerators/tpu.py @andrewsykim @edoakes @ryanaoleary
