From 1b6884520f65cdb055c37e373edb3d7cdd354f9f Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 10:52:28 -0700 Subject: [PATCH 1/7] Add subsystem code ownership Route pull requests to subsystem contributors, keeping related source, tests, examples, and documentation together. Repository maintainers cover unassigned integrations and new paths. Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 222 +++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 17 ++++ 2 files changed, 239 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..a79a9b3760 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,222 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +# Last matching rule wins. Keep subsystem rules after the broad defaults. + +# Repository maintainers cover new paths and integrations awaiting a specialist. +* @jiwenc-nv @aristarkhovNV + +# Build, packaging, dependencies, and releases. +/.github/ @jiwenc-nv @aristarkhovNV +/cmake/ @jiwenc-nv @aristarkhovNV +/scripts/ @jiwenc-nv @aristarkhovNV +/deps/ @jiwenc-nv @aristarkhovNV +/src/core/python/ @jiwenc-nv @aristarkhovNV +/src/compat/ @jiwenc-nv @aristarkhovNV +/tests/python/compat/ @jiwenc-nv @aristarkhovNV +/tests/python/packaging/ @jiwenc-nv @aristarkhovNV +/tests/python/ci/ @jiwenc-nv @aristarkhovNV +/CMakeLists.txt @jiwenc-nv @aristarkhovNV +/src/CMakeLists.txt @jiwenc-nv @aristarkhovNV +/src/python/CMakeLists.txt @jiwenc-nv @aristarkhovNV +/pyproject.toml @jiwenc-nv @aristarkhovNV +/.pre-commit-config.yaml @jiwenc-nv @aristarkhovNV +/.gitlab-ci.yml @jiwenc-nv @aristarkhovNV +/VERSION @jiwenc-nv @aristarkhovNV +/REUSE.toml @jiwenc-nv @aristarkhovNV +/LICENSE.md @jiwenc-nv @aristarkhovNV +/LICENSES/ @jiwenc-nv @aristarkhovNV + +# Documentation infrastructure; feature pages follow their subsystems below. +/docs/ @jiwenc-nv @ivany-nv +/docs/source/**/build_from_source/ @jiwenc-nv @aristarkhovNV +/docs/source/**/license.rst @jiwenc-nv @aristarkhovNV +/docs/source/**/migration.rst @jiwenc-nv @aristarkhovNV +/docs/source/references/build.rst @jiwenc-nv @aristarkhovNV +/docs/source/references/requirements.rst @jiwenc-nv @aristarkhovNV +/docs/source/references/sbom.rst @jiwenc-nv @aristarkhovNV + +# Device integration fallback; hardware-specific assignments appear below. +/src/plugins/ @jiwenc-nv @aristarkhovNV +/tests/cpp/plugins/ @jiwenc-nv @aristarkhovNV +/docs/source/device/ @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 +/examples/deviceio_live_view/ @rwiltz @aristarkhovNV +/examples/mcap_record_replay/ @rwiltz @aristarkhovNV +/examples/haptic_feedback/ @rwiltz @aristarkhovNV +/examples/lerobot/ @rwiltz @aristarkhovNV +/tests/python/examples/deviceio_live_view/ @rwiltz @aristarkhovNV +/docs/source/device/trackers/ @rwiltz @aristarkhovNV +/docs/source/device/trackers.rst @rwiltz @aristarkhovNV +/docs/source/**/haptic_feedback.rst @rwiltz @aristarkhovNV +/docs/source/references/mcap_record_replay.rst @rwiltz @aristarkhovNV +/docs/source/references/device_provider_monitoring.rst @rwiltz @aristarkhovNV +/docs/source/**/lerobot/ @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 +/examples/schemaio/ @lotusl-code @nv-mhaselton +/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton +/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton +/examples/tactile/ @lotusl-code @nv-mhaselton +/tests/python/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton +/tests/python/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton +/docs/source/references/generated_trackers.rst @lotusl-code @nv-mhaselton +/docs/source/device/**/soma.rst @lotusl-code @nv-mhaselton +/docs/source/device/tactile/index.rst @lotusl-code @nv-mhaselton + +# OpenXR, plugin infrastructure, and XR controller adapters. +/src/core/oxr/ @aristarkhovNV @nvddr +/src/core/oxr_utils/ @aristarkhovNV @nvddr +/src/core/pusherio/ @aristarkhovNV @nvddr +/src/core/plugin_manager/ @aristarkhovNV @nvddr +/src/python/isaaccapture/oxr/ @aristarkhovNV @nvddr +/src/python/isaaccapture/plugin_manager/ @aristarkhovNV @nvddr +/src/plugins/plugin_utils/ @aristarkhovNV @nvddr +/src/plugins/controller_se3_tracker/ @aristarkhovNV @nvddr +/src/plugins/controller_synthetic_hands/ @aristarkhovNV @nvddr +/deps/third_party/openxr_extensions/ @aristarkhovNV @nvddr +/tests/cpp/core/plugin_manager/ @aristarkhovNV @nvddr +/tests/cpp/plugins/plugin_utils/ @aristarkhovNV @nvddr +/examples/native_openxr/ @aristarkhovNV @nvddr +/examples/oxr/ @aristarkhovNV @nvddr +/docs/source/device/add_device.rst @aristarkhovNV @nvddr +/docs/source/device/xr/ @aristarkhovNV @nvddr + +# 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 +/examples/retargeting/ @sgrizan-nv @rwiltz +/docs/source/references/retargeting/ @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 +/examples/teleop/ @sgrizan-nv @ivany-nv +/examples/teleop_session_manager/ @sgrizan-nv @ivany-nv +/tests/python/examples/teleop/ @sgrizan-nv @ivany-nv +/tests/python/examples/teleop_keyboard/ @sgrizan-nv @ivany-nv +/docs/source/teleop/ @sgrizan-nv @ivany-nv +/docs/source/teleop/lerobot/ @rwiltz @aristarkhovNV +/docs/source/getting_started/teleop_session.rst @sgrizan-nv @ivany-nv +/docs/source/getting_started/teleop_control_state_machine.rst @sgrizan-nv @ivany-nv +/docs/source/integrations/isaac_lab_sim.rst @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 +/examples/cloudxr_mujoco_teleop/ @jiwenc-nv @aristarkhovNV +/docs/source/references/cloudxr.rst @jiwenc-nv @aristarkhovNV +/docs/source/references/oob_teleop_control.rst @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 +/docs/source/**/build_from_source/webxr.rst @yanziz-nvidia @gareth-morgan-nv + +# Visualization and camera streaming share graphics expertise. +/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 +/examples/robot_viz/ @farbod-nv @nv-mhaselton +/examples/camera_viz/ @farbod-nv @nv-mhaselton +/tests/python/examples/camera_viz/ @farbod-nv @nv-mhaselton +/docs/source/**/televiz.rst @farbod-nv @nv-mhaselton +/docs/source/references/camera_streaming.rst @farbod-nv @nv-mhaselton + +# EgoPost remains one component, including its nested tests and model tooling. +/src/python/isaaccapture_egopost/ @shaosu-nvidia @tifchen-nvda +/docs/source/ego_post_processing/ @shaosu-nvidia @tifchen-nvda +/docs/source/references/egocentric_hand_reconstruction.rst @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 + +# ROS 2 reference integration. +/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton +/tests/python/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton +/docs/source/integrations/isaac_ros.rst @sgrizan-nv @nv-mhaselton + +# Native input devices and joint-space leaders. +/src/plugins/gamepad/ @rwiltz @aristarkhovNV +/src/plugins/spacemouse/ @rwiltz @aristarkhovNV +/src/plugins/generic_3axis_pedal/ @rwiltz @aristarkhovNV +/src/plugins/so101_leader/ @rwiltz @aristarkhovNV +/tests/cpp/plugins/gamepad/ @rwiltz @aristarkhovNV +/tests/cpp/plugins/spacemouse/ @rwiltz @aristarkhovNV +/docs/source/device/gamepad.rst @rwiltz @aristarkhovNV +/docs/source/device/gamepads/ @rwiltz @aristarkhovNV +/docs/source/device/**/spacemouse.rst @rwiltz @aristarkhovNV +/docs/source/device/joint_space.rst @rwiltz @aristarkhovNV +/docs/source/device/joint_space/ @rwiltz @aristarkhovNV + +# Vendor integrations with eligible subsystem contributors. +/src/plugins/manus/ @sgrizan-nv @jiwenc-nv +/docs/source/device/**/manus.rst @sgrizan-nv @jiwenc-nv +/src/plugins/oak/ @shaosu-nvidia @jiwenc-nv +/docs/source/device/**/oak.rst @shaosu-nvidia @jiwenc-nv +/src/plugins/sensing/ @jiwenc-nv @aristarkhovNV +/docs/source/device/camera/sensing.rst @jiwenc-nv @aristarkhovNV +/src/plugins/sharpa_avatar/ @lotusl-code @jiwenc-nv +/examples/sharpa_avatar/ @lotusl-code @jiwenc-nv +/docs/source/device/**/sharpa_avatar.rst @lotusl-code @jiwenc-nv +/src/plugins/wuji_glove/ @sgrizan-nv @jiwenc-nv +/docs/source/device/**/wuji_glove.rst @sgrizan-nv @jiwenc-nv + +# Vendor integrations awaiting a specialist with repository write access. +/src/plugins/haptikos/ @jiwenc-nv @aristarkhovNV +/docs/source/device/**/haptikos.rst @jiwenc-nv @aristarkhovNV +/src/plugins/noitom_mocap/ @jiwenc-nv @aristarkhovNV +/examples/noitom/ @jiwenc-nv @aristarkhovNV +/src/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV +/tests/cpp/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV +/examples/oglo_tactile/ @jiwenc-nv @aristarkhovNV +/docs/source/device/**/oglo.rst @jiwenc-nv @aristarkhovNV +/src/plugins/rebot_devarm_leader/ @jiwenc-nv @aristarkhovNV +/examples/rebot/ @jiwenc-nv @aristarkhovNV +/docs/source/**/lerobot/rebot.rst @jiwenc-nv @aristarkhovNV +/src/plugins/steering_wheel/ @jiwenc-nv @aristarkhovNV +/examples/vehicle_teleop/ @jiwenc-nv @aristarkhovNV +/src/plugins/vive_se3_tracker/ @jiwenc-nv @aristarkhovNV +/docs/source/device/trackers/vive_ultimate_tracker.rst @jiwenc-nv @aristarkhovNV +/src/plugins/xsens_full_body/ @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..bf4a0c0f9c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,6 +68,23 @@ 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 each subsystem's source, +bindings, tests, examples, and documentation assigned together when adding or +moving files. Rules are ordered from broad defaults to specific overrides; +the last matching rule wins. + +Owners must have repository write access. Initial assignments come from Git +history; integrations without an eligible specialist use repository maintainers. +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. From ff55aaef60868e531a608309708037b797831b9f Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 11:02:10 -0700 Subject: [PATCH 2/7] Clarify CODEOWNERS precedence and fallback behavior Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a79a9b3760..e9e96a1954 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,7 +1,9 @@ # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -# Last matching rule wins. Keep subsystem rules after the broad defaults. +# 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 new paths and integrations awaiting a specialist. * @jiwenc-nv @aristarkhovNV From 4e46def513ca2150f8e496060c44f59675c53218 Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 11:05:10 -0700 Subject: [PATCH 3/7] Consolidate docs owners and refresh OpenXR ownership Keep documentation review consistent across all pages and route OpenXR reviews to current maintainers. Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 79 ++++++++++------------------------------------ CONTRIBUTING.md | 10 +++--- 2 files changed, 22 insertions(+), 67 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e9e96a1954..0b52e9b106 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,7 @@ # 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. # 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 @@ -29,19 +30,12 @@ /LICENSE.md @jiwenc-nv @aristarkhovNV /LICENSES/ @jiwenc-nv @aristarkhovNV -# Documentation infrastructure; feature pages follow their subsystems below. -/docs/ @jiwenc-nv @ivany-nv -/docs/source/**/build_from_source/ @jiwenc-nv @aristarkhovNV -/docs/source/**/license.rst @jiwenc-nv @aristarkhovNV -/docs/source/**/migration.rst @jiwenc-nv @aristarkhovNV -/docs/source/references/build.rst @jiwenc-nv @aristarkhovNV -/docs/source/references/requirements.rst @jiwenc-nv @aristarkhovNV -/docs/source/references/sbom.rst @jiwenc-nv @aristarkhovNV +# Keep documentation ownership centralized; do not add subsystem overrides. +/docs/ @jiwenc-nv @ivany-nv @aristarkhovNV # Device integration fallback; hardware-specific assignments appear below. /src/plugins/ @jiwenc-nv @aristarkhovNV /tests/cpp/plugins/ @jiwenc-nv @aristarkhovNV -/docs/source/device/ @jiwenc-nv @aristarkhovNV # Device I/O, recording, replay, and haptics. /src/core/deviceio_base/ @rwiltz @aristarkhovNV @@ -65,12 +59,6 @@ /examples/haptic_feedback/ @rwiltz @aristarkhovNV /examples/lerobot/ @rwiltz @aristarkhovNV /tests/python/examples/deviceio_live_view/ @rwiltz @aristarkhovNV -/docs/source/device/trackers/ @rwiltz @aristarkhovNV -/docs/source/device/trackers.rst @rwiltz @aristarkhovNV -/docs/source/**/haptic_feedback.rst @rwiltz @aristarkhovNV -/docs/source/references/mcap_record_replay.rst @rwiltz @aristarkhovNV -/docs/source/references/device_provider_monitoring.rst @rwiltz @aristarkhovNV -/docs/source/**/lerobot/ @rwiltz @aristarkhovNV # Schemas and generated contracts, including the tracker manifest override. /src/core/schema/ @lotusl-code @nv-mhaselton @@ -89,27 +77,22 @@ /examples/tactile/ @lotusl-code @nv-mhaselton /tests/python/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton /tests/python/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton -/docs/source/references/generated_trackers.rst @lotusl-code @nv-mhaselton -/docs/source/device/**/soma.rst @lotusl-code @nv-mhaselton -/docs/source/device/tactile/index.rst @lotusl-code @nv-mhaselton # OpenXR, plugin infrastructure, and XR controller adapters. -/src/core/oxr/ @aristarkhovNV @nvddr -/src/core/oxr_utils/ @aristarkhovNV @nvddr -/src/core/pusherio/ @aristarkhovNV @nvddr -/src/core/plugin_manager/ @aristarkhovNV @nvddr -/src/python/isaaccapture/oxr/ @aristarkhovNV @nvddr -/src/python/isaaccapture/plugin_manager/ @aristarkhovNV @nvddr -/src/plugins/plugin_utils/ @aristarkhovNV @nvddr -/src/plugins/controller_se3_tracker/ @aristarkhovNV @nvddr -/src/plugins/controller_synthetic_hands/ @aristarkhovNV @nvddr -/deps/third_party/openxr_extensions/ @aristarkhovNV @nvddr -/tests/cpp/core/plugin_manager/ @aristarkhovNV @nvddr -/tests/cpp/plugins/plugin_utils/ @aristarkhovNV @nvddr -/examples/native_openxr/ @aristarkhovNV @nvddr -/examples/oxr/ @aristarkhovNV @nvddr -/docs/source/device/add_device.rst @aristarkhovNV @nvddr -/docs/source/device/xr/ @aristarkhovNV @nvddr +/src/core/oxr/ @aristarkhovNV @ivany-nv +/src/core/oxr_utils/ @aristarkhovNV @ivany-nv +/src/core/pusherio/ @aristarkhovNV @ivany-nv +/src/core/plugin_manager/ @aristarkhovNV @ivany-nv +/src/python/isaaccapture/oxr/ @aristarkhovNV @ivany-nv +/src/python/isaaccapture/plugin_manager/ @aristarkhovNV @ivany-nv +/src/plugins/plugin_utils/ @aristarkhovNV @ivany-nv +/src/plugins/controller_se3_tracker/ @aristarkhovNV @ivany-nv +/src/plugins/controller_synthetic_hands/ @aristarkhovNV @ivany-nv +/deps/third_party/openxr_extensions/ @aristarkhovNV @ivany-nv +/tests/cpp/core/plugin_manager/ @aristarkhovNV @ivany-nv +/tests/cpp/plugins/plugin_utils/ @aristarkhovNV @ivany-nv +/examples/native_openxr/ @aristarkhovNV @ivany-nv +/examples/oxr/ @aristarkhovNV @ivany-nv # Retargeting graphs, source nodes, mappings, and tuning UI. /src/python/isaaccapture/retargeting_engine/ @sgrizan-nv @rwiltz @@ -117,7 +100,6 @@ /src/python/isaaccapture/retargeting_engine_ui/ @sgrizan-nv @rwiltz /tests/python/core/retargeting_engine/ @sgrizan-nv @rwiltz /examples/retargeting/ @sgrizan-nv @rwiltz -/docs/source/references/retargeting/ @sgrizan-nv @rwiltz # Teleoperation session orchestration and control transitions. /src/python/isaaccapture/teleop_session_manager/ @sgrizan-nv @ivany-nv @@ -126,11 +108,6 @@ /examples/teleop_session_manager/ @sgrizan-nv @ivany-nv /tests/python/examples/teleop/ @sgrizan-nv @ivany-nv /tests/python/examples/teleop_keyboard/ @sgrizan-nv @ivany-nv -/docs/source/teleop/ @sgrizan-nv @ivany-nv -/docs/source/teleop/lerobot/ @rwiltz @aristarkhovNV -/docs/source/getting_started/teleop_session.rst @sgrizan-nv @ivany-nv -/docs/source/getting_started/teleop_control_state_machine.rst @sgrizan-nv @ivany-nv -/docs/source/integrations/isaac_lab_sim.rst @sgrizan-nv @ivany-nv # CloudXR runtime, deployment, and remote control. /src/core/cloudxr/ @jiwenc-nv @aristarkhovNV @@ -140,14 +117,11 @@ /scripts/*cloudxr* @jiwenc-nv @aristarkhovNV /tests/python/core/cloudxr/ @jiwenc-nv @aristarkhovNV /examples/cloudxr_mujoco_teleop/ @jiwenc-nv @aristarkhovNV -/docs/source/references/cloudxr.rst @jiwenc-nv @aristarkhovNV -/docs/source/references/oob_teleop_control.rst @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 -/docs/source/**/build_from_source/webxr.rst @yanziz-nvidia @gareth-morgan-nv # Visualization and camera streaming share graphics expertise. /src/viz/ @farbod-nv @nv-mhaselton @@ -157,13 +131,9 @@ /examples/robot_viz/ @farbod-nv @nv-mhaselton /examples/camera_viz/ @farbod-nv @nv-mhaselton /tests/python/examples/camera_viz/ @farbod-nv @nv-mhaselton -/docs/source/**/televiz.rst @farbod-nv @nv-mhaselton -/docs/source/references/camera_streaming.rst @farbod-nv @nv-mhaselton # EgoPost remains one component, including its nested tests and model tooling. /src/python/isaaccapture_egopost/ @shaosu-nvidia @tifchen-nvda -/docs/source/ego_post_processing/ @shaosu-nvidia @tifchen-nvda -/docs/source/references/egocentric_hand_reconstruction.rst @shaosu-nvidia @tifchen-nvda # The native and Python logging halves share one contract. /src/core/log_bridge/ @lotusl-code @AndreusNvidius @@ -174,7 +144,6 @@ # ROS 2 reference integration. /examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton /tests/python/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton -/docs/source/integrations/isaac_ros.rst @sgrizan-nv @nv-mhaselton # Native input devices and joint-space leaders. /src/plugins/gamepad/ @rwiltz @aristarkhovNV @@ -183,41 +152,27 @@ /src/plugins/so101_leader/ @rwiltz @aristarkhovNV /tests/cpp/plugins/gamepad/ @rwiltz @aristarkhovNV /tests/cpp/plugins/spacemouse/ @rwiltz @aristarkhovNV -/docs/source/device/gamepad.rst @rwiltz @aristarkhovNV -/docs/source/device/gamepads/ @rwiltz @aristarkhovNV -/docs/source/device/**/spacemouse.rst @rwiltz @aristarkhovNV -/docs/source/device/joint_space.rst @rwiltz @aristarkhovNV -/docs/source/device/joint_space/ @rwiltz @aristarkhovNV # Vendor integrations with eligible subsystem contributors. /src/plugins/manus/ @sgrizan-nv @jiwenc-nv -/docs/source/device/**/manus.rst @sgrizan-nv @jiwenc-nv /src/plugins/oak/ @shaosu-nvidia @jiwenc-nv -/docs/source/device/**/oak.rst @shaosu-nvidia @jiwenc-nv /src/plugins/sensing/ @jiwenc-nv @aristarkhovNV -/docs/source/device/camera/sensing.rst @jiwenc-nv @aristarkhovNV /src/plugins/sharpa_avatar/ @lotusl-code @jiwenc-nv /examples/sharpa_avatar/ @lotusl-code @jiwenc-nv -/docs/source/device/**/sharpa_avatar.rst @lotusl-code @jiwenc-nv /src/plugins/wuji_glove/ @sgrizan-nv @jiwenc-nv -/docs/source/device/**/wuji_glove.rst @sgrizan-nv @jiwenc-nv # Vendor integrations awaiting a specialist with repository write access. /src/plugins/haptikos/ @jiwenc-nv @aristarkhovNV -/docs/source/device/**/haptikos.rst @jiwenc-nv @aristarkhovNV /src/plugins/noitom_mocap/ @jiwenc-nv @aristarkhovNV /examples/noitom/ @jiwenc-nv @aristarkhovNV /src/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV /tests/cpp/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV /examples/oglo_tactile/ @jiwenc-nv @aristarkhovNV -/docs/source/device/**/oglo.rst @jiwenc-nv @aristarkhovNV /src/plugins/rebot_devarm_leader/ @jiwenc-nv @aristarkhovNV /examples/rebot/ @jiwenc-nv @aristarkhovNV -/docs/source/**/lerobot/rebot.rst @jiwenc-nv @aristarkhovNV /src/plugins/steering_wheel/ @jiwenc-nv @aristarkhovNV /examples/vehicle_teleop/ @jiwenc-nv @aristarkhovNV /src/plugins/vive_se3_tracker/ @jiwenc-nv @aristarkhovNV -/docs/source/device/trackers/vive_ultimate_tracker.rst @jiwenc-nv @aristarkhovNV /src/plugins/xsens_full_body/ @jiwenc-nv @aristarkhovNV # Changes to ownership itself stay with repository maintainers. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf4a0c0f9c..76d899b8e7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -72,12 +72,12 @@ GitHub Actions builds the default targets and runs tests. [`.github/CODEOWNERS`](.github/CODEOWNERS) maps subsystems to reviewers, with repository maintainers covering unmatched paths. Keep each subsystem's source, -bindings, tests, examples, and documentation assigned together when adding or -moving files. Rules are ordered from broad defaults to specific overrides; -the last matching rule wins. +bindings, tests, and examples assigned together when adding or moving files. +All files under `docs/` share the documentation owners. Rules are ordered from +broad defaults to specific overrides; the last matching rule wins. -Owners must have repository write access. Initial assignments come from Git -history; integrations without an eligible specialist use repository maintainers. +Owners must have repository write access. Integrations without an eligible +specialist use repository maintainers. 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. From b2e871027e4e815eb4c499994737035aafa5e49d Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 11:06:56 -0700 Subject: [PATCH 4/7] Group documentation, plugin, and example ownership entries Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 113 ++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 59 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0b52e9b106..795b491c8b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,6 +2,7 @@ # 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 @@ -30,13 +31,6 @@ /LICENSE.md @jiwenc-nv @aristarkhovNV /LICENSES/ @jiwenc-nv @aristarkhovNV -# Keep documentation ownership centralized; do not add subsystem overrides. -/docs/ @jiwenc-nv @ivany-nv @aristarkhovNV - -# Device integration fallback; hardware-specific assignments appear below. -/src/plugins/ @jiwenc-nv @aristarkhovNV -/tests/cpp/plugins/ @jiwenc-nv @aristarkhovNV - # Device I/O, recording, replay, and haptics. /src/core/deviceio_base/ @rwiltz @aristarkhovNV /src/core/deviceio_session/ @rwiltz @aristarkhovNV @@ -54,11 +48,6 @@ /tests/cpp/core/replay_deviceio_session/ @rwiltz @aristarkhovNV /tests/cpp/core/mcap/ @rwiltz @aristarkhovNV /tests/python/core/deviceio_trackers/ @rwiltz @aristarkhovNV -/examples/deviceio_live_view/ @rwiltz @aristarkhovNV -/examples/mcap_record_replay/ @rwiltz @aristarkhovNV -/examples/haptic_feedback/ @rwiltz @aristarkhovNV -/examples/lerobot/ @rwiltz @aristarkhovNV -/tests/python/examples/deviceio_live_view/ @rwiltz @aristarkhovNV # Schemas and generated contracts, including the tracker manifest override. /src/core/schema/ @lotusl-code @nv-mhaselton @@ -71,43 +60,22 @@ /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 -/examples/schemaio/ @lotusl-code @nv-mhaselton -/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton -/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton -/examples/tactile/ @lotusl-code @nv-mhaselton -/tests/python/examples/soma_body_publisher/ @lotusl-code @nv-mhaselton -/tests/python/examples/soma_hand_publisher/ @lotusl-code @nv-mhaselton -# OpenXR, plugin infrastructure, and XR controller adapters. +# OpenXR runtime and utilities. /src/core/oxr/ @aristarkhovNV @ivany-nv /src/core/oxr_utils/ @aristarkhovNV @ivany-nv -/src/core/pusherio/ @aristarkhovNV @ivany-nv -/src/core/plugin_manager/ @aristarkhovNV @ivany-nv /src/python/isaaccapture/oxr/ @aristarkhovNV @ivany-nv -/src/python/isaaccapture/plugin_manager/ @aristarkhovNV @ivany-nv -/src/plugins/plugin_utils/ @aristarkhovNV @ivany-nv -/src/plugins/controller_se3_tracker/ @aristarkhovNV @ivany-nv -/src/plugins/controller_synthetic_hands/ @aristarkhovNV @ivany-nv /deps/third_party/openxr_extensions/ @aristarkhovNV @ivany-nv -/tests/cpp/core/plugin_manager/ @aristarkhovNV @ivany-nv -/tests/cpp/plugins/plugin_utils/ @aristarkhovNV @ivany-nv -/examples/native_openxr/ @aristarkhovNV @ivany-nv -/examples/oxr/ @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 -/examples/retargeting/ @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 -/examples/teleop/ @sgrizan-nv @ivany-nv -/examples/teleop_session_manager/ @sgrizan-nv @ivany-nv -/tests/python/examples/teleop/ @sgrizan-nv @ivany-nv -/tests/python/examples/teleop_keyboard/ @sgrizan-nv @ivany-nv # CloudXR runtime, deployment, and remote control. /src/core/cloudxr/ @jiwenc-nv @aristarkhovNV @@ -116,21 +84,17 @@ /deps/cloudxr/ @jiwenc-nv @aristarkhovNV /scripts/*cloudxr* @jiwenc-nv @aristarkhovNV /tests/python/core/cloudxr/ @jiwenc-nv @aristarkhovNV -/examples/cloudxr_mujoco_teleop/ @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 and camera streaming share graphics expertise. +# 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 -/examples/robot_viz/ @farbod-nv @nv-mhaselton -/examples/camera_viz/ @farbod-nv @nv-mhaselton -/tests/python/examples/camera_viz/ @farbod-nv @nv-mhaselton # EgoPost remains one component, including its nested tests and model tooling. /src/python/isaaccapture_egopost/ @shaosu-nvidia @tifchen-nvda @@ -141,39 +105,70 @@ /tests/cpp/core/log_bridge/ @lotusl-code @AndreusNvidius /tests/python/core/logging_config/ @lotusl-code @AndreusNvidius -# ROS 2 reference integration. -/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton -/tests/python/examples/teleop_ros2/ @sgrizan-nv @nv-mhaselton +# Keep documentation ownership centralized; do not add subsystem overrides. +/docs/ @jiwenc-nv @ivany-nv @aristarkhovNV -# Native input devices and joint-space leaders. +# Plugins: shared infrastructure, hardware integrations, and tests. +/src/plugins/ @jiwenc-nv @aristarkhovNV +/tests/cpp/plugins/ @jiwenc-nv @aristarkhovNV +/src/core/pusherio/ @aristarkhovNV @ivany-nv +/src/core/plugin_manager/ @aristarkhovNV @ivany-nv +/src/python/isaaccapture/plugin_manager/ @aristarkhovNV @ivany-nv +/tests/cpp/core/plugin_manager/ @aristarkhovNV @ivany-nv +/src/plugins/controller_se3_tracker/ @aristarkhovNV @ivany-nv +/src/plugins/controller_synthetic_hands/ @aristarkhovNV @ivany-nv /src/plugins/gamepad/ @rwiltz @aristarkhovNV -/src/plugins/spacemouse/ @rwiltz @aristarkhovNV -/src/plugins/generic_3axis_pedal/ @rwiltz @aristarkhovNV -/src/plugins/so101_leader/ @rwiltz @aristarkhovNV /tests/cpp/plugins/gamepad/ @rwiltz @aristarkhovNV -/tests/cpp/plugins/spacemouse/ @rwiltz @aristarkhovNV - -# Vendor integrations with eligible subsystem contributors. +/src/plugins/generic_3axis_pedal/ @rwiltz @aristarkhovNV +/src/plugins/haptikos/ @jiwenc-nv @aristarkhovNV /src/plugins/manus/ @sgrizan-nv @jiwenc-nv +/src/plugins/noitom_mocap/ @jiwenc-nv @aristarkhovNV /src/plugins/oak/ @shaosu-nvidia @jiwenc-nv +/src/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV +/tests/cpp/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV +/src/plugins/plugin_utils/ @aristarkhovNV @ivany-nv +/tests/cpp/plugins/plugin_utils/ @aristarkhovNV @ivany-nv +/src/plugins/rebot_devarm_leader/ @jiwenc-nv @aristarkhovNV /src/plugins/sensing/ @jiwenc-nv @aristarkhovNV /src/plugins/sharpa_avatar/ @lotusl-code @jiwenc-nv -/examples/sharpa_avatar/ @lotusl-code @jiwenc-nv +/src/plugins/so101_leader/ @rwiltz @aristarkhovNV +/src/plugins/spacemouse/ @rwiltz @aristarkhovNV +/tests/cpp/plugins/spacemouse/ @rwiltz @aristarkhovNV +/src/plugins/steering_wheel/ @jiwenc-nv @aristarkhovNV +/src/plugins/vive_se3_tracker/ @jiwenc-nv @aristarkhovNV /src/plugins/wuji_glove/ @sgrizan-nv @jiwenc-nv +/src/plugins/xsens_full_body/ @jiwenc-nv @aristarkhovNV -# Vendor integrations awaiting a specialist with repository write access. -/src/plugins/haptikos/ @jiwenc-nv @aristarkhovNV -/src/plugins/noitom_mocap/ @jiwenc-nv @aristarkhovNV +# 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 -/src/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV -/tests/cpp/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV /examples/oglo_tactile/ @jiwenc-nv @aristarkhovNV -/src/plugins/rebot_devarm_leader/ @jiwenc-nv @aristarkhovNV +/examples/oxr/ @aristarkhovNV @ivany-nv /examples/rebot/ @jiwenc-nv @aristarkhovNV -/src/plugins/steering_wheel/ @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 -/src/plugins/vive_se3_tracker/ @jiwenc-nv @aristarkhovNV -/src/plugins/xsens_full_body/ @jiwenc-nv @aristarkhovNV # Changes to ownership itself stay with repository maintainers. /.github/CODEOWNERS @jiwenc-nv @aristarkhovNV From 67dfd4b43bc3a62ac7f902d074ace9c307782e63 Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 12:08:36 -0700 Subject: [PATCH 5/7] Consolidate plugin ownership into a shared maintainer group Use the union of plugin maintainers for integrations, shared infrastructure, and tests so device-specific overrides do not fragment review coverage. Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 37 +++++++------------------------------ CONTRIBUTING.md | 16 ++++++++-------- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 795b491c8b..b97aec6164 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -108,36 +108,13 @@ # Keep documentation ownership centralized; do not add subsystem overrides. /docs/ @jiwenc-nv @ivany-nv @aristarkhovNV -# Plugins: shared infrastructure, hardware integrations, and tests. -/src/plugins/ @jiwenc-nv @aristarkhovNV -/tests/cpp/plugins/ @jiwenc-nv @aristarkhovNV -/src/core/pusherio/ @aristarkhovNV @ivany-nv -/src/core/plugin_manager/ @aristarkhovNV @ivany-nv -/src/python/isaaccapture/plugin_manager/ @aristarkhovNV @ivany-nv -/tests/cpp/core/plugin_manager/ @aristarkhovNV @ivany-nv -/src/plugins/controller_se3_tracker/ @aristarkhovNV @ivany-nv -/src/plugins/controller_synthetic_hands/ @aristarkhovNV @ivany-nv -/src/plugins/gamepad/ @rwiltz @aristarkhovNV -/tests/cpp/plugins/gamepad/ @rwiltz @aristarkhovNV -/src/plugins/generic_3axis_pedal/ @rwiltz @aristarkhovNV -/src/plugins/haptikos/ @jiwenc-nv @aristarkhovNV -/src/plugins/manus/ @sgrizan-nv @jiwenc-nv -/src/plugins/noitom_mocap/ @jiwenc-nv @aristarkhovNV -/src/plugins/oak/ @shaosu-nvidia @jiwenc-nv -/src/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV -/tests/cpp/plugins/oglo_tactile/ @jiwenc-nv @aristarkhovNV -/src/plugins/plugin_utils/ @aristarkhovNV @ivany-nv -/tests/cpp/plugins/plugin_utils/ @aristarkhovNV @ivany-nv -/src/plugins/rebot_devarm_leader/ @jiwenc-nv @aristarkhovNV -/src/plugins/sensing/ @jiwenc-nv @aristarkhovNV -/src/plugins/sharpa_avatar/ @lotusl-code @jiwenc-nv -/src/plugins/so101_leader/ @rwiltz @aristarkhovNV -/src/plugins/spacemouse/ @rwiltz @aristarkhovNV -/tests/cpp/plugins/spacemouse/ @rwiltz @aristarkhovNV -/src/plugins/steering_wheel/ @jiwenc-nv @aristarkhovNV -/src/plugins/vive_se3_tracker/ @jiwenc-nv @aristarkhovNV -/src/plugins/wuji_glove/ @sgrizan-nv @jiwenc-nv -/src/plugins/xsens_full_body/ @jiwenc-nv @aristarkhovNV +# 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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76d899b8e7..43cbb0b069 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,14 +71,14 @@ GitHub Actions builds the default targets and runs tests. ### Code ownership [`.github/CODEOWNERS`](.github/CODEOWNERS) maps subsystems to reviewers, with -repository maintainers covering unmatched paths. Keep each subsystem's source, -bindings, tests, and examples assigned together when adding or moving files. -All files under `docs/` share the documentation owners. Rules are ordered from -broad defaults to specific overrides; the last matching rule wins. - -Owners must have repository write access. Integrations without an eligible -specialist use repository maintainers. -Update the map as maintainers change, keeping a backup reviewer for each area. +repository maintainers covering unmatched paths. Keep related source, bindings, +and tests assigned together when adding or moving files. All files under `docs/` +share the documentation owners; 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 From 763438a07178ff2dca74a3c936ecd2d1e6fea5c3 Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 12:09:42 -0700 Subject: [PATCH 6/7] Assign EgoPost documentation to its component maintainers Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 3 ++- CONTRIBUTING.md | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b97aec6164..e273e8117d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -105,8 +105,9 @@ /tests/cpp/core/log_bridge/ @lotusl-code @AndreusNvidius /tests/python/core/logging_config/ @lotusl-code @AndreusNvidius -# Keep documentation ownership centralized; do not add subsystem overrides. +# 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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 43cbb0b069..bd90b40b97 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -72,10 +72,11 @@ GitHub Actions builds the default targets and runs tests. [`.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. All files under `docs/` -share the documentation owners; 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. +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. From 14b0b1d34dcfb7f697dffcc4e5a32ef06a0ef0f2 Mon Sep 17 00:00:00 2001 From: Jiwen Cai Date: Sun, 25 Oct 2026 12:12:38 -0700 Subject: [PATCH 7/7] Remove redundant build and packaging ownership rules Signed-off-by: Jiwen Cai --- .github/CODEOWNERS | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e273e8117d..0cf6b2c1b9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -7,30 +7,9 @@ # 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 new paths and integrations awaiting a specialist. +# Repository maintainers cover unmatched paths, including build and packaging. * @jiwenc-nv @aristarkhovNV -# Build, packaging, dependencies, and releases. -/.github/ @jiwenc-nv @aristarkhovNV -/cmake/ @jiwenc-nv @aristarkhovNV -/scripts/ @jiwenc-nv @aristarkhovNV -/deps/ @jiwenc-nv @aristarkhovNV -/src/core/python/ @jiwenc-nv @aristarkhovNV -/src/compat/ @jiwenc-nv @aristarkhovNV -/tests/python/compat/ @jiwenc-nv @aristarkhovNV -/tests/python/packaging/ @jiwenc-nv @aristarkhovNV -/tests/python/ci/ @jiwenc-nv @aristarkhovNV -/CMakeLists.txt @jiwenc-nv @aristarkhovNV -/src/CMakeLists.txt @jiwenc-nv @aristarkhovNV -/src/python/CMakeLists.txt @jiwenc-nv @aristarkhovNV -/pyproject.toml @jiwenc-nv @aristarkhovNV -/.pre-commit-config.yaml @jiwenc-nv @aristarkhovNV -/.gitlab-ci.yml @jiwenc-nv @aristarkhovNV -/VERSION @jiwenc-nv @aristarkhovNV -/REUSE.toml @jiwenc-nv @aristarkhovNV -/LICENSE.md @jiwenc-nv @aristarkhovNV -/LICENSES/ @jiwenc-nv @aristarkhovNV - # Device I/O, recording, replay, and haptics. /src/core/deviceio_base/ @rwiltz @aristarkhovNV /src/core/deviceio_session/ @rwiltz @aristarkhovNV