Skip to content

chore: route PR reviews to owning teams via CODEOWNERS - #2439

Merged
anwithk merged 4 commits into
mainfrom
codeowners-team-routing
Aug 11, 2026
Merged

anwithk merged 4 commits into
mainfrom
codeowners-team-routing

Conversation

@anwithk

@anwithk anwithk commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Encodes the NeMo Gym Code Component Ownership map in .github/CODEOWNERS so GitHub auto-requests the owning team on every PR, instead of leaving review assignment to whoever happens to notice. Today the file only covers CI paths, so everything else lands with no owner.

The split follows the doc's principle: Core owns the contracts and the substrate, Frontier Eval owns the implementations and the evaluation outputs built on top of them. base_responses_api_agent.py (the interface) is Core while every harness under responses_api_agents/ is Frontier Eval; rollout_collection.py (the engine) is Core while reward_profile.py (what consumes rollouts to make decisions) is Frontier Eval.

Teams used, all confirmed to exist with write access to this repo (a team without write access is silently ignored by CODEOWNERS):

Team Lane
@NVIDIA-NeMo/gym_env_benchmarks Frontier Eval
@NVIDIA-NeMo/gym_core Core-Arch + RL
@NVIDIA-NeMo/gym_architects Advisors, backstop and escalation
@NVIDIA-NeMo/automation CI, build, release (unchanged)

Member lists are deliberately not duplicated into the file β€” GitHub team membership is the source of truth, maintained by each team's maintainers.

Open questions for reviewers

  • docs/ and fern/ are intentionally left unassigned in this PR, so they fall to the gym_architects backstop. The ownership table assigns docs to TME, but the callouts say both lanes should review. There is a docs_team in the org with write access if we want to route there. This is the main thing to settle before this leaves draft.
  • Files not in the ownership doc are mapped by analogy and grouped under a clearly marked section. Roughly 14 nemo_gym modules postdate the doc: streaming dialects, the discovery/registry modules, orchestration/, and the rollout observability helpers went to Core as substrate; judge.py, skills.py, and rollout_reverification.py went to Frontier Eval as verification and evaluation-output surfaces. rollout_reverification.py is the least obvious call β€” it is a rollout_* sibling of the Core engine but it consumes rollouts to recompute rewards, which is the Frontier Eval side of the line.
  • tests/ goes to Core, since the core library tests encode integration expectations for the Core contract. Per-server tests live under each server directory and already inherit that server's owner.
  • Two policies in the doc cannot be expressed in CODEOWNERS and are recorded as comments instead: breaking changes to shared contracts and user-facing CLI need sign-off from both lanes, and well-isolated changes may be reviewed by frequent contributors without the code owner.

example_environments/ from the doc is omitted because that directory does not exist in the repo.

Test plan

  • All 58 path patterns resolve to files or directories that exist in the repo, and every rule is syntactically valid.
  • Every team handle verified via the GitHub API to exist and hold write access on this repo.
  • Simulated GitHub's last-match-wins resolution against a spread of real paths. Spot checks: responses_api_agents/simple_agent/app.py to Frontier Eval, nemo_gym/sandbox/api.py to Core, nemo_gym/config_types.py to both lanes, responses_api_agents/verifiers_agent/app.py to both lanes, .github/workflows/unit-tests.yml to automation, README.md to the architects backstop.
  • GitHub's own CODEOWNERS validation API reports zero errors on this branch, confirming no rule or team handle is being silently dropped.

Note that reviewer routing on this PR itself is governed by the CODEOWNERS on main, not the version in this branch, so the new rules only take effect after merge.

Encode the NeMo Gym code component ownership map so GitHub auto-requests the
owning team on every PR instead of leaving review assignment to whoever
notices. Core owns the contracts and substrate, Frontier Eval owns the
implementations and evaluation outputs built on them, and anything unclaimed
falls back to the advisors rather than to nobody.

Signed-off-by: Anwith Kiran <anwithk@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Aug 10, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

Comment thread .github/CODEOWNERS Outdated
# ── Tests ────────────────────────────────────────────────────────────────────
# Core library tests encode integration-test expectations for the Core contract.
# Per-server tests live under each server directory and inherit that server's owner.
/tests/ @NVIDIA-NeMo/gym_core

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is in the co-owned section, but points to the core team. What was the intention?

Comment thread .github/CODEOWNERS Resolved
Move /tests/ out of the CO-OWNED section (Core-only intent), route docs/fern
to docs_team with both lanes, and assign examples/scripts to project_managers
so leads are distinct from tech-lead advisors.

Signed-off-by: Anwith Kiran <anwithk@nvidia.com>
Docs surfaces were falling through the wildcard rule to gym_architects, which
made tech-lead advisors the default reviewer for pages that leads edit
routinely. Route docs/ and fern/ to docs_team (TME, per the ownership map) plus
the new gym_leads team, and leave gym_architects as the backstop for genuinely
unclaimed paths.

Signed-off-by: Anwith Kiran <anwithk@nvidia.com>
Drop docs_team from docs/ and fern/ so all documentation routes to the leads
team (EM/PM/TPM) alone.

Signed-off-by: Anwith Kiran <anwithk@nvidia.com>
@anwithk
anwithk marked this pull request as ready for review August 11, 2026 17:23
@anwithk
anwithk requested a review from a team as a code owner August 11, 2026 17:23
@anwithk
anwithk merged commit 24961cf into main Aug 11, 2026
18 checks passed
@anwithk
anwithk deleted the codeowners-team-routing branch August 11, 2026 23:55
ritaneves added a commit that referenced this pull request Aug 12, 2026
This reverts commit 24961cf.

Signed-off-by: Rita Fernandes Neves <rfernandesne@nvidia.com>
ritaneves added a commit that referenced this pull request Aug 12, 2026
## Summary

Reverts #2439 and restores the previous Automation-only CODEOWNERS file.

The expanded component ownership map currently turns reviewer routing
into mandatory path-specific approval gates. GitHub CODEOWNERS cannot
represent the desired distinction between advisory component reviewers
and a separate required approver group, so this reverts the enforcement
change while that governance model is designed separately.

## Result

CODEOWNERS returns to the four pre-#2439 rules:

- `.github/` β†’ Automation
- `docker/` β†’ Automation
- `pyproject.toml` β†’ Automation
- `uv.lock` β†’ Automation

## Validation

- one revert commit on current `main`
- only `.github/CODEOWNERS` changes
- resulting file exactly matches the parent of the #2439 merge commit

Signed-off-by: Rita Fernandes Neves <rfernandesne@nvidia.com>
kajalj22 added a commit that referenced this pull request Aug 21, 2026
Replace the two placeholder `# suggest:` lines with the full
path-to-team mapping proposed in PR #2439 (not merged/enforced),
tagged as advisory-only suggestions. Teams verified to exist via the
GitHub API before adding.

Signed-off-by: Kajal Jain <kajalj@nvidia.com>
kajalj22 added a commit that referenced this pull request Sep 8, 2026
- Drop `# suggest: /nemo_gym/resources/` and `# suggest: /docs/` --
  neither path exists in this repo (nemo_gym/ has no resources/
  subdir; docs live under fern/, already covered by its own line, or
  nested under resources_servers/*/docs/, already covered by
  /resources_servers/). Both were dead rules that never matched
  anything, carried over from the unmerged #2439 proposal.
- Bump the FW-CI-templates pin to the commit with the globstar-
  matching and null-review-crash fixes from PR review.

Signed-off-by: Kajal Jain <kajalj@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants