Skip to content

fix(codeowners): co-own the docs publish workflow and link-checker config - #12361

Merged
dagil-nvidia merged 2 commits into
mainfrom
dagil/docs-coowns-docs-infra
Jul 31, 2026
Merged

fix(codeowners): co-own the docs publish workflow and link-checker config#12361
dagil-nvidia merged 2 commits into
mainfrom
dagil/docs-coowns-docs-infra

Conversation

@dagil-nvidia

@dagil-nvidia dagil-nvidia commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

Two files are documentation infrastructure but route only to dynamo-ops-codeowners:

File What it is
.github/workflows/fern-docs.yml the docs sync / preview / publish workflow
.lycheeignore the docs link-checker allowlist

Changes to both are almost always docs-motivated and need docs context to review, but docs is not on the reviewer list, so nothing routes them there.

#12243 is the live example. It extends the workflow's examples sync to examples/deployments/dgdr/ because templates/dgdr.mdx embeds those manifests through build-time <Code src="..."> reads. A docs author, for a docs reason, reviewed by a team with no particular context on it.

.lycheeignore shows the same gap. Ignore entries have landed through pull requests that have nothing to do with link checking — a stargazers entry inside an unrelated vLLM pin bump (#11374) on release/1.3.0, and a self-referential entry in #12243. Nobody who owns docs link policy was asked to look at either.

What this does, and what it does not

shared: is additive, so ops keeps ownership and docs is added alongside. Both teams land on one CODEOWNERS line:

/.lycheeignore                     @ai-dynamo/dynamo-ops-codeowners @ai-dynamo/dynamo-docs-codeowners
/.github/workflows/fern-docs.yml   @ai-dynamo/dynamo-ops-codeowners @ai-dynamo/dynamo-docs-codeowners

This buys visibility, not enforcement. GitHub treats multiple owners on a line as any one of them satisfying the code-owner requirement, so a change to either file will still merge on ops approval alone. What changes is that docs is auto-requested and appears in the reviewer list, so these changes stop passing unseen.

Making docs the sole owner of .lycheeignore would make docs review mandatory, and is arguably right since the allowlist is a docs policy artifact. That is a larger ownership conversation and is deliberately out of scope here — this PR takes nothing away from dynamo-ops-codeowners.

Verification

$ python3 -m pytest .github/codeowners/test_codeowners.py -q
86 passed

$ python3 .github/codeowners/build_codeowners.py --areas .github/codeowners/areas.yaml --repo . --strict
explicitly owned: 5010/5010 (100.00%) | catch-all only: 0    exit 0

CODEOWNERS is regenerated via emit_codeowners.py, not hand-edited, per .github/codeowners/README.md, and regenerates byte-identical.

Note

This PR changes .github/codeowners/areas.yaml (ops) and CODEOWNERS (process), so it is itself gated on ops and process — docs has no say in it. That is a fair illustration of the thing it is adjusting.

recipes/README.md routes to dynamo-performance-codeowners and is arguably also a docs page, but that is a judgement about the whole recipes/ tree rather than about two clearly docs-infrastructure files, so it is left alone.

…nfig

Two files are documentation infrastructure but route only to ops:

  .github/workflows/fern-docs.yml   the docs sync/preview/publish workflow
  .lycheeignore                     the docs link-checker allowlist

Changes to both are almost always docs-motivated and reviewed with docs
context. #12243 is the current example: it extends the workflow's examples
sync to examples/deployments/dgdr/ because templates/dgdr.mdx embeds those
manifests via <Code src=...>. A docs author, for a docs reason, gated on a
team with no particular context on it.

.lycheeignore has a sharper failure mode. Because docs is not a reviewer,
ignore entries land through PRs that have nothing to do with link checking
and nobody who owns the link policy sees them. That has happened repeatedly:
a stargazers entry added inside an unrelated vLLM pin bump on release/1.3.0,
and a self-referential entry in #12243.

shared: is additive, so ops keeps ownership and docs is added alongside.

86 tests pass; strict gate 5010/5010 (100.00%); CODEOWNERS regenerates
byte-identical.

Signed-off-by: Dan Gil <dagil@nvidia.com>
@dagil-nvidia
dagil-nvidia requested review from a team as code owners July 29, 2026 15:28
@github-actions github-actions Bot added the fix label Jul 29, 2026

@devin-ai-integration devin-ai-integration Bot left a comment

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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Changes

Shared ownership

Layer / File(s) Summary
Add shared ownership rules
.github/codeowners/areas.yaml, CODEOWNERS
Adds ops and docs ownership for .github/workflows/fern-docs.yml and .lycheeignore in the source mapping and generated CODEOWNERS file.

Estimated code review effort: 1 (Trivial) | ~2 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is detailed, but it doesn't follow the required template and omits the required Related Issues section. Add the Overview, Details, and Where should the reviewer start? headings, and include the required Related Issues section with either Closes #XXXX or the no-issue checkbox.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately summarizes the change: adding docs co-ownership for the docs workflow and link-checker config.

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ea8b375317

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/codeowners/areas.yaml
@dagil-nvidia

Copy link
Copy Markdown
Collaborator Author

/ok to test ea8b375

Signed-off-by: Dan Gil <dagil@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jul 30, 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.

@saturley-hall

Copy link
Copy Markdown
Member

/ok to test 94202bd

@dagil-nvidia
dagil-nvidia merged commit 0efca3b into main Jul 31, 2026
94 checks passed
@dagil-nvidia
dagil-nvidia deleted the dagil/docs-coowns-docs-infra branch July 31, 2026 19:07
dagil-nvidia added a commit that referenced this pull request Aug 7, 2026
areas.yaml auto-merged; only the generated CODEOWNERS conflicted. Resolved
by regenerating from the merged areas.yaml rather than hand-merging, so the
committed artifact is reproducible and the workflow's regenerate-and-diff
step passes.

Main gained ownership entries from #12488, #12012, #11874 and #11923 while
this branch was in review, plus #12361, which co-owns the docs publish
workflow and the link-checker config with docs. All survive: fern-docs.yml
and .lycheeignore still resolve to ops and docs.

This branch's own additions survive too: CODEOWNERS carries all 23 areas and
areas.yaml carries ops and process.

Validation: strict full-tree gate exits 0 at 5200/5200 owned with no stale
globs; 150 tests pass.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants