diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..0cf6b2c1b9 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,131 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +# Assign active maintainers; use contribution history only to suggest candidates. +# Keep documentation, plugin, and example entries in their own sections. +# The last matching rule replaces earlier owners, including the "*" fallback. +# Repeat maintainers on specific rules if they should also count as code owners. +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-syntax + +# Repository maintainers cover unmatched paths, including build and packaging. +* @jiwenc-nv @aristarkhovNV + +# Device I/O, recording, replay, and haptics. +/src/core/deviceio_base/ @rwiltz @aristarkhovNV +/src/core/deviceio_session/ @rwiltz @aristarkhovNV +/src/core/deviceio_trackers/ @rwiltz @aristarkhovNV +/src/core/live_trackers/ @rwiltz @aristarkhovNV +/src/core/replay_trackers/ @rwiltz @aristarkhovNV +/src/core/mcap/ @rwiltz @aristarkhovNV +/src/python/isaaccapture/deviceio/ @rwiltz @aristarkhovNV +/src/python/isaaccapture/deviceio_session/ @rwiltz @aristarkhovNV +/src/python/isaaccapture/deviceio_trackers/ @rwiltz @aristarkhovNV +/src/python/isaaccapture/mcap/ @rwiltz @aristarkhovNV +/src/python/isaaccapture/haptic_devices/ @rwiltz @aristarkhovNV +/tests/cpp/core/deviceio_trackers/ @rwiltz @aristarkhovNV +/tests/cpp/core/live_trackers/ @rwiltz @aristarkhovNV +/tests/cpp/core/replay_deviceio_session/ @rwiltz @aristarkhovNV +/tests/cpp/core/mcap/ @rwiltz @aristarkhovNV +/tests/python/core/deviceio_trackers/ @rwiltz @aristarkhovNV + +# Schemas and generated contracts, including the tracker manifest override. +/src/core/schema/ @lotusl-code @nv-mhaselton +/src/core/schema_compat/ @lotusl-code @nv-mhaselton +/src/core/codegen/ @lotusl-code @nv-mhaselton +/src/core/deviceio_trackers/trackers.toml @lotusl-code @nv-mhaselton +/src/python/isaaccapture/schema/ @lotusl-code @nv-mhaselton +/cmake/GenerateFlatBuffers.cmake @lotusl-code @nv-mhaselton +/cmake/GenerateTrackers.cmake @lotusl-code @nv-mhaselton +/tests/cpp/core/schema/ @lotusl-code @nv-mhaselton +/tests/cpp/core/tracker_metadata/ @lotusl-code @nv-mhaselton +/tests/python/core/schema/ @lotusl-code @nv-mhaselton + +# OpenXR runtime and utilities. +/src/core/oxr/ @aristarkhovNV @ivany-nv +/src/core/oxr_utils/ @aristarkhovNV @ivany-nv +/src/python/isaaccapture/oxr/ @aristarkhovNV @ivany-nv +/deps/third_party/openxr_extensions/ @aristarkhovNV @ivany-nv + +# Retargeting graphs, source nodes, mappings, and tuning UI. +/src/python/isaaccapture/retargeting_engine/ @sgrizan-nv @rwiltz +/src/python/isaaccapture/retargeters/ @sgrizan-nv @rwiltz +/src/python/isaaccapture/retargeting_engine_ui/ @sgrizan-nv @rwiltz +/tests/python/core/retargeting_engine/ @sgrizan-nv @rwiltz + +# Teleoperation session orchestration and control transitions. +/src/python/isaaccapture/teleop_session_manager/ @sgrizan-nv @ivany-nv +/tests/python/core/teleop_session_manager/ @sgrizan-nv @ivany-nv + +# CloudXR runtime, deployment, and remote control. +/src/core/cloudxr/ @jiwenc-nv @aristarkhovNV +/src/python/isaaccapture/cloudxr/ @jiwenc-nv @aristarkhovNV +/src/python/isaaccapture/cloudxr_exp/ @jiwenc-nv @aristarkhovNV +/deps/cloudxr/ @jiwenc-nv @aristarkhovNV +/scripts/*cloudxr* @jiwenc-nv @aristarkhovNV +/tests/python/core/cloudxr/ @jiwenc-nv @aristarkhovNV + +# CloudXR web client and its build/publication integration. +/deps/cloudxr/webxr_client/ @yanziz-nvidia @gareth-morgan-nv +/.github/actions/build-cloudxr-web-client/ @yanziz-nvidia @gareth-morgan-nv +/.github/workflows/promote-stable-client.yaml @yanziz-nvidia @gareth-morgan-nv + +# Visualization. +/src/viz/ @farbod-nv @nv-mhaselton +/src/python/isaaccapture/viz/ @farbod-nv @nv-mhaselton +/tests/cpp/viz/ @farbod-nv @nv-mhaselton +/tests/python/viz/ @farbod-nv @nv-mhaselton + +# EgoPost remains one component, including its nested tests and model tooling. +/src/python/isaaccapture_egopost/ @shaosu-nvidia @tifchen-nvda + +# The native and Python logging halves share one contract. +/src/core/log_bridge/ @lotusl-code @AndreusNvidius +/src/python/isaaccapture/logging_config/ @lotusl-code @AndreusNvidius +/tests/cpp/core/log_bridge/ @lotusl-code @AndreusNvidius +/tests/python/core/logging_config/ @lotusl-code @AndreusNvidius + +# Shared documentation owners, with EgoPost guides owned by its maintainers. +/docs/ @jiwenc-nv @ivany-nv @aristarkhovNV +/docs/source/ego_post_processing/ @shaosu-nvidia @tifchen-nvda + +# Plugin infrastructure, integrations, and tests share owners; avoid device overrides. +/src/plugins/ @jiwenc-nv @aristarkhovNV @ivany-nv @rwiltz @sgrizan-nv @shaosu-nvidia @lotusl-code +/tests/cpp/plugins/ @jiwenc-nv @aristarkhovNV @ivany-nv @rwiltz @sgrizan-nv @shaosu-nvidia @lotusl-code +/src/core/pusherio/ @jiwenc-nv @aristarkhovNV @ivany-nv @rwiltz @sgrizan-nv @shaosu-nvidia @lotusl-code +/src/core/plugin_manager/ @jiwenc-nv @aristarkhovNV @ivany-nv @rwiltz @sgrizan-nv @shaosu-nvidia @lotusl-code +/src/python/isaaccapture/plugin_manager/ @jiwenc-nv @aristarkhovNV @ivany-nv @rwiltz @sgrizan-nv @shaosu-nvidia @lotusl-code +/tests/cpp/core/plugin_manager/ @jiwenc-nv @aristarkhovNV @ivany-nv @rwiltz @sgrizan-nv @shaosu-nvidia @lotusl-code + +# Examples and their tests. +/examples/camera_viz/ @farbod-nv @nv-mhaselton +/tests/python/examples/camera_viz/ @farbod-nv @nv-mhaselton +/examples/cloudxr_mujoco_teleop/ @jiwenc-nv @aristarkhovNV +/examples/deviceio_live_view/ @rwiltz @aristarkhovNV +/tests/python/examples/deviceio_live_view/ @rwiltz @aristarkhovNV +/examples/haptic_feedback/ @rwiltz @aristarkhovNV +/examples/lerobot/ @rwiltz @aristarkhovNV +/examples/mcap_record_replay/ @rwiltz @aristarkhovNV +/examples/native_openxr/ @aristarkhovNV @ivany-nv +/examples/noitom/ @jiwenc-nv @aristarkhovNV +/examples/oglo_tactile/ @jiwenc-nv @aristarkhovNV +/examples/oxr/ @aristarkhovNV @ivany-nv +/examples/rebot/ @jiwenc-nv @aristarkhovNV +/examples/retargeting/ @sgrizan-nv @rwiltz +/examples/robot_viz/ @farbod-nv @nv-mhaselton +/examples/schemaio/ @lotusl-code @nv-mhaselton +/examples/sharpa_avatar/ @lotusl-code @jiwenc-nv +/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton +/tests/python/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton +/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton +/tests/python/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton +/examples/tactile/ @lotusl-code @nv-mhaselton +/examples/teleop/ @sgrizan-nv @ivany-nv +/tests/python/examples/teleop/ @sgrizan-nv @ivany-nv +/tests/python/examples/teleop_keyboard/ @sgrizan-nv @ivany-nv +/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton +/tests/python/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton +/examples/teleop_session_manager/ @sgrizan-nv @ivany-nv +/examples/vehicle_teleop/ @jiwenc-nv @aristarkhovNV + +# Changes to ownership itself stay with repository maintainers. +/.github/CODEOWNERS @jiwenc-nv @aristarkhovNV diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ae507e62ef..bd90b40b97 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,6 +68,24 @@ GitHub Actions builds the default targets and runs tests. 3. Describe motivation, changes, and testing in the PR 4. Link related issues +### Code ownership + +[`.github/CODEOWNERS`](.github/CODEOWNERS) maps subsystems to reviewers, with +repository maintainers covering unmatched paths. Keep related source, bindings, +and tests assigned together when adding or moving files. Files under `docs/` +share the documentation owners, except `docs/source/ego_post_processing/`, which +follows the EgoPost maintainers. Plugin infrastructure, integrations, and tests +share the plugin owners. Examples have their own entries. Rules are ordered from +broad defaults to specific overrides; the last matching rule wins. + +Owners must have repository write access. Update the map as maintainers change, +keeping a backup reviewer for each area. +Multiple owners on a line are alternatives, not a requirement for both to approve. + +GitHub requests owner reviews for ready pull requests once the file is on their +base branch. Requiring owner approval before merge is a separate repository +ruleset or branch-protection setting; adding this file does not enable it. + ## Signing Your Work * We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.