Skip to content

Conversation

@amaslenn
Copy link
Contributor

@amaslenn amaslenn commented Jan 6, 2026

Summary

  1. Fully migrate from MD to RST for documentation
  2. Provide a new documentation bundle that is "friendly" for CMS tools by packaging Mermaid diagrams as PNG artifacts.

Test Plan

Manual review and deployments.

Additional Notes

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 6, 2026

📝 Walkthrough

Walkthrough

Adds a CMS-specific documentation build and artifact flow, updates CI triggers to include tag pushes, simplifies the existing docs build, removes MyST/Markdown support in favor of reStructuredText, extends Makefile/Make targets for CMS mermaid builds, updates Sphinx config for CMS builds, migrates several Markdown docs to .rst, and applies minor formatting edits across workload docs and packaging metadata.

Changes

Cohort / File(s) Summary
CI Docs Workflow
​.github/workflows/docs.yml
Added tag-based push trigger (tags: ['v*']); simplified build job (removed environment setup, .nojekyll step, now runs make -C doc/ html); added build-cms job that checks out code, installs uv, sets up Node.js, runs make -C doc/ cms-html, sanitizes artifact name from github.ref_name, and uploads doc/_build-cms/html artifact.
Makefile / Build Targets
doc/Makefile
Added CMS variables (BUILDDIR_CMS, NODE_MODULES, MMDC, PUPPETEER_CFG); new targets cms-html, install-mermaid, explicit MMDC rule; html target adjusted (Sphinx flow, nojekyll touch previously removed in CI); added clean to remove both build dirs.
Sphinx Config
doc/conf.py
Removed myst_parser and Markdown support (source_suffix limited to .rst); introduced CLOUDAI_DOC_TARGET-driven CMS logic (theme switch, mermaid output format/command/params); bumped version/release and copyright year.
Docs Migration (MD → RST)
Removed:
doc/DEV.md, doc/USER_GUIDE.md, doc/index.md, doc/reporting.md
Added:
doc/DEV.rst, doc/USER_GUIDE.rst, doc/index.rst, doc/reporting.rst
Replaced major Markdown pages with reStructuredText equivalents carrying equivalent content and reorganized sections.
Workload Docs — Formatting & Examples
doc/workloads/*
doc/workloads/bash_cmd.rst, doc/workloads/chakra_replay.rst, doc/workloads/ddlb.rst, doc/workloads/megatron_bridge.rst, doc/workloads/nemo_run.rst, doc/workloads/nixl_bench.rst, doc/workloads/nixl_kvbench.rst, doc/workloads/nixl_perftest.rst, doc/workloads/sleep.rst, doc/workloads/slurm_container.rst, doc/workloads/ucc.rst
Inserted horizontal separator lines under "Usage Examples" in many workload docs; megatron_bridge.rst adds spacing, reorders examples and includes additional example fields like num_nodes and time_limit.
Index / Navigation & Packaging
doc/workloads/index.rst, pyproject.toml
Updated guidance to prefer .rst for new workloads; removed myst-parser from docs extras; added docs-cms extras (sphinx~=8.1, sphinx-rtd-theme~=3.0, sphinx-copybutton~=0.5, sphinxcontrib-mermaid~=1.2), bumped mermaid version and copyright year.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐇 I hopped through files, swapped .md to .rst in haste,
I taught the CI to tag and pack a CMS taste,
Made mermaid draw with puppeteer and node,
Tidied Make and Sphinx so docs find their road,
A cheerful rabbit bouncing through the docs I traced.

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately describes the main objective: providing a CMS-friendly documentation build by converting MD to RST and packaging Mermaid diagrams as PNG artifacts.
Description check ✅ Passed The PR description clearly explains the two main changes: migrating documentation from MD to RST and providing a CMS-friendly documentation bundle with PNG-packaged Mermaid diagrams.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@amaslenn amaslenn changed the title Fully migrate from MD to RST for documentation Provide CMS-friendly documentation build Jan 7, 2026
@amaslenn amaslenn marked this pull request as ready for review January 7, 2026 14:20
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
doc/workloads/ddlb.rst (1)

61-62: Fix separator line length for "API Documentation" header.

The separator line at line 62 is excessively long (33 dashes) compared to the "API Documentation" header (17 characters). This violates RST formatting conventions and is inconsistent with the same section in other workload files (e.g., chakra_replay.rst, ucc.rst).

Fix RST separator line length
 API Documentation
---------------------------------
+-----------------
doc/workloads/megatron_bridge.rst (1)

39-39: Standardize num_nodes type representation in documentation examples.

Line 39 shows num_nodes = "2" (string), while line 49 shows num_nodes = 2 (integer). Use consistent format across both examples. The quoted string format is more prevalent in actual TOML configuration files and aligns with common TOML conventions.

Also applies to: 49-49

🤖 Fix all issues with AI agents
In @.github/workflows/docs.yml:
- Around line 46-47: The workflow step "Set up Node.js" currently uses
actions/setup-node@v6 without specifying a Node version; update that step (uses:
actions/setup-node@v6) to pin a specific Node.js version by adding a with:
node-version: <major or exact version> field (e.g., 18 or 18.x) so the CI runs
with a reproducible Node runtime.

In @doc/USER_GUIDE.rst:
- Around line 365-369: There's a typo in the test scenario block where the key
"templat_test" is used; replace "templat_test" with the correct key "test_name"
in the [[Tests]] entry (e.g., the Tests.3 section containing "templat_test =
\"nccl_test_reduce_scatter\"") so the test definition uses the standard
"test_name" field.

In @pyproject.toml:
- Around line 61-66: The docs-cms dependency block pins Sphinx and
sphinxcontrib-mermaid to older releases; update the entries in the docs-cms
array (the package names "sphinx" and "sphinxcontrib-mermaid") to newer versions
(e.g., bump sphinx to the current 9.x series such as ~=9.1 and bump
sphinxcontrib-mermaid to at least ~=1.2.3), optionally refresh sphinx-rtd-theme
and sphinx-copybutton to their latest minors as well, then run your dependency
manager (poetry/pip) to update the lockfile and run the docs/test build to
verify no breakages.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b63c79 and 0df2379.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (24)
  • .github/workflows/docs.yml
  • doc/DEV.md
  • doc/DEV.rst
  • doc/Makefile
  • doc/USER_GUIDE.md
  • doc/USER_GUIDE.rst
  • doc/conf.py
  • doc/index.md
  • doc/index.rst
  • doc/reporting.md
  • doc/reporting.rst
  • doc/workloads/bash_cmd.rst
  • doc/workloads/chakra_replay.rst
  • doc/workloads/ddlb.rst
  • doc/workloads/index.rst
  • doc/workloads/megatron_bridge.rst
  • doc/workloads/nemo_run.rst
  • doc/workloads/nixl_bench.rst
  • doc/workloads/nixl_kvbench.rst
  • doc/workloads/nixl_perftest.rst
  • doc/workloads/sleep.rst
  • doc/workloads/slurm_container.rst
  • doc/workloads/ucc.rst
  • pyproject.toml
💤 Files with no reviewable changes (4)
  • doc/reporting.md
  • doc/index.md
  • doc/USER_GUIDE.md
  • doc/DEV.md
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2025-12-16T19:47:49.243Z
Learnt from: amaslenn
Repo: NVIDIA/cloudai PR: 754
File: src/cloudai/_core/registry.py:226-234
Timestamp: 2025-12-16T19:47:49.243Z
Learning: In the cloudai project, test cases are preferred over docstrings for documenting behavior, as tests serve as living documentation that remains relevant and verified.

Applied to files:

  • doc/USER_GUIDE.rst
📚 Learning: 2025-12-16T19:47:41.994Z
Learnt from: amaslenn
Repo: NVIDIA/cloudai PR: 754
File: src/cloudai/_core/registry.py:226-234
Timestamp: 2025-12-16T19:47:41.994Z
Learning: In this repository, prefer expressing behavioral documentation through tests rather than docstrings. Tests act as living, verified documentation. Reserve docstrings for interfaces or high-level descriptions, and avoid duplicating behavior that is already covered by tests.

Applied to files:

  • doc/conf.py
📚 Learning: 2026-01-05T22:23:56.998Z
Learnt from: srivatsankrishnan
Repo: NVIDIA/cloudai PR: 767
File: conf/experimental/megatron_bridge/test/b200/megatron_bridge_qwen_30b.toml:38-38
Timestamp: 2026-01-05T22:23:56.998Z
Learning: For the Megatron Bridge workload, the hf_token field in test TOML configurations is intentionally left empty (hf_token = "") to fail validation if not explicitly set by the user. CloudAI does not distribute secret keys, so users must provide their own Hugging Face token, and the validation failure is by design to enforce this.

Applied to files:

  • doc/workloads/megatron_bridge.rst
📚 Learning: 2026-01-05T22:24:39.364Z
Learnt from: srivatsankrishnan
Repo: NVIDIA/cloudai PR: 767
File: conf/experimental/megatron_bridge/test/gb300/megatron_bridge_qwen_30b.toml:28-37
Timestamp: 2026-01-05T22:24:39.364Z
Learning: In CloudAI Megatron-Bridge TOML configuration files, the container_image field accepts "#" as a valid separator in addition to the standard "/" separator (e.g., "nvcr.io#nvidia/nemo:25.11.01" is valid syntax).

Applied to files:

  • doc/workloads/megatron_bridge.rst
📚 Learning: 2025-12-23T00:23:16.200Z
Learnt from: srivatsankrishnan
Repo: NVIDIA/cloudai PR: 764
File: src/cloudai/workloads/megatron_bridge/megatron_bridge.py:98-101
Timestamp: 2025-12-23T00:23:16.200Z
Learning: In src/cloudai/workloads/megatron_bridge/megatron_bridge.py, the nemo_run_repo GitRepo uses commit="main" intentionally. Nemo Run is a Slurm executor (not a framework) used by Megatron Bridge to launch recipes, and tracking the main branch is acceptable for this dependency.

Applied to files:

  • doc/workloads/megatron_bridge.rst
🪛 checkmake (0.2.2)
doc/Makefile

[warning] 25-25: Missing required phony target "all"

(minphony)


[warning] 25-25: Missing required phony target "test"

(minphony)

🔇 Additional comments (21)
doc/workloads/chakra_replay.rst (1)

6-7: Formatting update aligns with RST conventions.

The separator line added under "Usage Examples" is correctly sized (14 dashes for 14-character header) and follows proper reStructuredText formatting for section dividers. This change is consistent with the broader documentation formatting improvements across multiple workload files.

Please verify that the Sphinx documentation builds correctly with these formatting changes.

doc/workloads/ddlb.rst (1)

7-7: Formatting update aligns with RST conventions.

The separator line added under "Usage Examples" is correctly sized (14 dashes for 14-character header) and follows proper reStructuredText formatting. This change is consistent across all workload documentation files.

doc/workloads/ucc.rst (1)

6-7: Formatting update aligns with RST conventions.

The separator line added under "Usage Examples" is correctly sized (14 dashes for 14-character header) and follows proper reStructuredText formatting for section dividers. Formatting is consistent with all other section dividers in this file.

Please verify that the Sphinx documentation builds correctly with these formatting changes.

doc/workloads/sleep.rst (1)

6-7: Correct reStructuredText section formatting.

The addition of the separator line "--------------" properly formats "Usage Examples" as a reStructuredText Level 2 section header, consistent with other major sections in the document (e.g., "API Documentation" on line 51). The line length correctly matches the header text width, adhering to RST conventions.

doc/workloads/nixl_kvbench.rst (1)

6-7: Correct reStructuredText section formatting.

The addition of the separator line "--------------" properly formats "Usage Examples" as a reStructuredText Level 2 section header, consistent with other major sections in the document (e.g., "API Documentation" on line 62). The line length correctly matches the header text width, adhering to RST conventions.

doc/workloads/nemo_run.rst (1)

6-7: Correct reStructuredText section formatting.

The addition of the separator line "--------------" properly formats "Usage Examples" as a reStructuredText Level 2 section header, consistent with other major sections in the document (e.g., "API Documentation" on line 53). The line length correctly matches the header text width, adhering to RST conventions.

pyproject.toml (1)

2-2: LGTM!

The copyright year update to 2024-2026 is correct for the current year.

doc/workloads/index.rst (1)

45-45: LGTM!

The update from .md to .rst correctly reflects the documentation migration from Markdown to reStructuredText, ensuring users create the proper file format when adding new workloads.

doc/workloads/nixl_perftest.rst (1)

7-7: No RST formatting issue found.

The file shows correct formatting with a single separator line (line 7: ----------) following the "Usage Examples" header. In reStructuredText, this is the proper and required format for section headers. The search for duplicate separator patterns returned no matches, confirming there is no duplicate line. No action needed.

doc/workloads/bash_cmd.rst (1)

9-9: LGTM!

The additional separator line improves visual consistency across workload documentation files.

doc/workloads/megatron_bridge.rst (1)

8-8: LGTM!

The additional separator line aligns with the formatting improvements across workload documentation.

doc/conf.py (2)

23-23: LGTM!

The Path import, copyright update, and version bump are routine maintenance changes that align with the project's evolution.

Also applies to: 52-52, 54-55, 60-60


96-96: LGTM!

Restricting source_suffix to RST-only correctly reflects the migration from Markdown to reStructuredText.

doc/reporting.rst (1)

1-77: LGTM!

The reporting documentation is well-structured with clear explanations, correct code examples, and proper cross-references. The two-level reporting system (per-test and per-scenario) is clearly explained with practical configuration examples.

doc/Makefile (4)

18-24: LGTM!

The build variable definitions clearly separate standard and CMS-specific paths, aligning with the CMS build configuration in doc/conf.py.


25-32: LGTM!

The phony targets and help descriptions are clear. The static analysis warnings about missing "all" and "test" targets are makefile conventions but not required for this documentation-specific Makefile.


34-46: LGTM!

The html and cms-html targets are properly separated with distinct dependencies and environment configurations. The CLOUDAI_DOC_TARGET=cms environment variable (line 45) correctly coordinates with the conditional logic in doc/conf.py.


47-56: LGTM!

The install-mermaid prerequisite chain and the clean target are correctly implemented. The MMDC installation properly isolates the CMS build dependencies.

.github/workflows/docs.yml (1)

26-27: LGTM: Build simplification delegates to Makefile.

The simplified build command properly delegates to the Makefile, which is a cleaner approach.

doc/DEV.rst (1)

1-91: LGTM: Well-structured developer documentation.

The developer documentation provides clear architecture diagrams and explanations of core concepts. The Mermaid diagrams effectively visualize the module structure and class hierarchy.

doc/index.rst (1)

170-177: All toctree references in lines 170-177 are valid. Verification confirms that reporting.rst, workloads/index.rst, and workloads_requirements_installation.rst all exist in the doc directory.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Greptile Summary

This PR completes a comprehensive migration of CloudAI documentation from Markdown to reStructuredText (RST) format and introduces a new CMS-friendly documentation build pipeline. The changes enable two parallel documentation builds: one for GitHub Pages using the NVIDIA Sphinx theme with inline Mermaid SVG diagrams, and another for BrightSpot CMS using the Read The Docs theme with Mermaid diagrams converted to PNG images.

Key Changes:

  • Fully migrated 4 main documentation files (index, USER_GUIDE, DEV, reporting) and 8 workload documentation files from MD to RST format
  • Removed MyST parser dependency and MD file support
  • Updated Sphinx configuration to support dual-build targets using environment variable CLOUDAI_DOC_TARGET
  • Added new docs-cms optional dependency group with sphinx-rtd-theme
  • Refactored Makefile with dedicated targets: html (GitHub Pages) and cms-html (CMS with Mermaid PNG conversion)
  • Enhanced GitHub Actions workflow to build both targets in parallel, with CMS artifacts stored as GitHub Actions artifacts
  • Added support for tag-triggered documentation builds (v* tags)
  • Fixed path resolution in conf.py to use Path(__file__).parent instead of Path.cwd() for correct mermaid-cli and puppeteer config paths
  • Upgraded sphinxcontrib-mermaid from 1.0 to 1.2 for improved compatibility
  • Added automatic npm dependency checking and error handling in Makefile

Confidence Score: 5/5

  • This PR is safe to merge. All documentation migration is complete and correct, with proper dual-build pipeline architecture.
  • Score reflects: (1) Comprehensive and systematic migration of all 12+ documentation files from MD to RST with correct formatting; (2) Proper path resolution using Path(__file__).parent for correct relative paths in CMS build; (3) Well-architected dual-build system with clear separation of concerns between GitHub Pages and CMS builds; (4) Robust Makefile with proper npm dependency checking and error handling; (5) Enhanced GitHub Actions workflow with parallel builds and tag support; (6) No breaking changes to existing documentation references; (7) All dependencies properly specified in pyproject.toml extras; (8) Clean removal of deprecated MyST parser dependency.
  • No files require special attention. All changes are well-implemented and properly tested in the referenced previous commits that addressed review comments.

Important Files Changed

Filename Overview
doc/conf.py Configuration updated for CMS build support using Path(__file__).parent for correct relative path resolution. MyST parser removed, mermaid upgraded, and conditional HTML theme/mermaid format selection based on CLOUDAI_DOC_TARGET environment variable.
doc/Makefile Makefile refactored to support two build targets: HTML (GitHub Pages with nvidia_sphinx_theme) and CMS (BrightSpot with RTD theme and PNG mermaid). Includes proper npm dependency checking and automatic puppeteer configuration.
.github/workflows/docs.yml Workflow enhanced to support tag-triggered builds (v* tags), streamlined with proper Makefile delegation, and added new build-cms job for generating CMS artifacts with sanitized names.
pyproject.toml Added new docs-cms optional dependency group with sphinx-rtd-theme and mermaid support. Removed myst-parser (MD support), upgraded sphinxcontrib-mermaid from 1.0 to 1.2, and updated copyright year to 2026.
doc/index.rst Main documentation index properly migrated from MD to RST format with correct structure, toctree references, and documentation navigation.
doc/USER_GUIDE.rst User guide properly migrated from MD to RST with correct code blocks, references, and all content preserved. Clear step-by-step instructions and configuration examples maintained.
doc/DEV.rst Developer guide migrated from MD to RST with Mermaid diagrams (graph TD and class diagram) properly preserved as RST code blocks for both GitHub Pages and CMS rendering.
doc/reporting.rst Reporting documentation properly migrated from MD to RST with correct code examples, references, and hierarchical structure maintained.

Sequence Diagram

sequenceDiagram
    participant GitHub as GitHub Push
    participant Workflow as docs.yml
    participant Build as build job
    participant BuildCMS as build-cms job
    participant Pages as GitHub Pages
    participant Artifact as GH Artifact

    GitHub->>Workflow: Push to main or tag
    Workflow->>Build: Trigger build job
    Build->>Build: make -C doc/ html
    Build->>Build: Build with nvidia_sphinx_theme
    Build->>Build: Mermaid: raw (SVG inline)
    Build->>Pages: Upload doc/_build/html
    Workflow->>BuildCMS: Trigger build-cms job
    BuildCMS->>BuildCMS: npm install @mermaid-js/mermaid-cli
    BuildCMS->>BuildCMS: make -C doc/ cms-html
    BuildCMS->>BuildCMS: CLOUDAI_DOC_TARGET=cms
    BuildCMS->>BuildCMS: Build with sphinx_rtd_theme
    BuildCMS->>BuildCMS: Mermaid: png (PNG images)
    BuildCMS->>Artifact: Upload cloudai-docs-cms-{ref}
    Workflow->>Pages: Deploy (GitHub Pages)
Loading

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In @doc/Makefile:
- Around line 50-55: Pin the mermaid CLI install to a specific version to make
builds reproducible: update the MMDC target so the npm install command for
@mermaid-js/mermaid-cli uses an explicit version (e.g.,
@mermaid-js/mermaid-cli@X.Y.Z) instead of the floating latest, and optionally
ensure a lockfile is used in $(BUILDDIR_CMS) or commit one; reference the MMDC
target and variables $(BUILDDIR_CMS) and $(PUPPETEER_CFG) when making the
change.
- Line 26: Add a conventional default target named "all" that depends on the
existing "html" target (i.e., add a target line like "all: html" placed before
the "help" target) and update the .PHONY declaration to include "all" alongside
help/html/cms-html/install-mermaid/clean so the new target is treated as phony.
- Around line 42-46: The Makefile's help text should mention that npm is
required for CMS builds because the cms-html target depends on install-mermaid
which installs @mermaid-js/mermaid-cli invoked via the $(MMDC) target; update
the help stanza (where build targets are documented) to add a short note that
npm/node is a prerequisite for CMS builds and reference CLOUDAI_DOC_TARGET=cms
(used in conf.py) so users know the CMS-specific build needs npm.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0df2379 and a54a375.

📒 Files selected for processing (2)
  • doc/Makefile
  • doc/conf.py
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-12-16T19:47:41.994Z
Learnt from: amaslenn
Repo: NVIDIA/cloudai PR: 754
File: src/cloudai/_core/registry.py:226-234
Timestamp: 2025-12-16T19:47:41.994Z
Learning: In this repository, prefer expressing behavioral documentation through tests rather than docstrings. Tests act as living, verified documentation. Reserve docstrings for interfaces or high-level descriptions, and avoid duplicating behavior that is already covered by tests.

Applied to files:

  • doc/conf.py
🪛 checkmake (0.2.2)
doc/Makefile

[warning] 26-26: Missing required phony target "all"

(minphony)


[warning] 26-26: Missing required phony target "test"

(minphony)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Greptile Review
  • GitHub Check: Run pytest (3.12)
  • GitHub Check: Run pytest (3.10)
🔇 Additional comments (7)
doc/conf.py (3)

23-23: LGTM! Path import supports cross-platform path construction.

The pathlib import is used appropriately at lines 91-92 to construct CMS-specific paths in a platform-independent manner.


52-52: LGTM! Metadata updates.

Copyright year and version bumps are routine maintenance changes.

Also applies to: 54-55


97-97: The removal of Markdown support is safe and complete.

No .md source files remain in the documentation tree, confirming that the change from [".rst", ".md"] to [".rst"] aligns with the completed migration to reStructuredText.

doc/Makefile (4)

17-24: LGTM! Clear and well-organized variable definitions.

Build directory separation (BUILDDIR vs BUILDDIR_CMS) ensures GitHub Pages and CMS builds don't interfere with each other. Mermaid tooling paths are properly scoped under the CMS build directory.


28-33: LGTM! Clear target documentation.

The help text effectively explains the two build modes and their output directories.


35-40: LGTM! GitHub Pages build target correctly configured.

The build flow properly:

  1. Syncs documentation dependencies via uv
  2. Invokes Sphinx from the project root with correct source/build paths
  3. Creates .nojekyll for GitHub Pages static hosting

57-58: LGTM! Clean target properly removes both build directories.

Removes both GitHub Pages (_build) and CMS (_build-cms) artifacts.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.github/workflows/docs.yml:
- Around line 34-59: The build-cms job currently always runs; make it
conditional to save CI resources by adding an execution guard for the build-cms
job (job id: build-cms) so it only runs on desired branches or when docs change.
Update the workflow trigger or add an if: condition on the build-cms job that
checks branch/ref (e.g., main or release/*) or changes under the doc/ path (or
implement path filters in the workflow on: triggers) so the "Build CMS
documentation" step and subsequent "Upload CMS docs artifact" run only when
relevant.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a54a375 and a8aa36d.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (3)
  • .github/workflows/docs.yml
  • doc/USER_GUIDE.rst
  • pyproject.toml
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-12-16T19:47:49.243Z
Learnt from: amaslenn
Repo: NVIDIA/cloudai PR: 754
File: src/cloudai/_core/registry.py:226-234
Timestamp: 2025-12-16T19:47:49.243Z
Learning: In the cloudai project, test cases are preferred over docstrings for documenting behavior, as tests serve as living documentation that remains relevant and verified.

Applied to files:

  • doc/USER_GUIDE.rst
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Greptile Review
  • GitHub Check: Run pytest (3.12)
🔇 Additional comments (5)
doc/USER_GUIDE.rst (1)

1-735: Comprehensive and well-structured user guide.

The documentation is thorough, clearly written, and covers all major CloudAI workflows with practical examples. RST formatting is consistent, code blocks are properly marked, and the progression from setup through advanced topics (RunAI, hooks, Slurm modes, Nsys tracing) is logical and easy to follow.

pyproject.toml (2)

2-2: LGTM!

Routine copyright year update to reflect the current year.


58-58: Good improvement!

The bump from ~=1.0 to ~=1.2 addresses the outdated dependency concern. The ~=1.2 specifier will allow patch updates (1.2.x) while maintaining compatibility.

.github/workflows/docs.yml (2)

27-27: LGTM!

Delegating the build to the Makefile centralizes build logic and improves maintainability.


48-49: The Node.js version pinning addresses previous feedback. Node.js 24 is appropriate for this workflow—it was released in May 2025 and has been in Active LTS since October 2025, with support extending through October 2026.

Likely an incorrect or invalid review comment.

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

24 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @.github/workflows/docs.yml:
- Line 6: The YAML has inconsistent bracket spacing for the tags array: change
the value from "tags: [ 'v*' ]" to match the file style (no spaces inside
brackets) like "tags: ['v*']" so spacing is consistent with the other array on
the same file; update the tags declaration accordingly.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 07b1bc8 and 18f3d8c.

📒 Files selected for processing (2)
  • .github/workflows/docs.yml
  • doc/conf.py
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2026-01-07T14:47:30.295Z
Learnt from: amaslenn
Repo: NVIDIA/cloudai PR: 769
File: pyproject.toml:61-66
Timestamp: 2026-01-07T14:47:30.295Z
Learning: The cloudai project requires Python >=3.10, which constrains Sphinx to version 8.1.x (Sphinx 8.2+ requires Python 3.11+).

Applied to files:

  • doc/conf.py
📚 Learning: 2025-12-16T19:47:41.994Z
Learnt from: amaslenn
Repo: NVIDIA/cloudai PR: 754
File: src/cloudai/_core/registry.py:226-234
Timestamp: 2025-12-16T19:47:41.994Z
Learning: In this repository, prefer expressing behavioral documentation through tests rather than docstrings. Tests act as living, verified documentation. Reserve docstrings for interfaces or high-level descriptions, and avoid duplicating behavior that is already covered by tests.

Applied to files:

  • doc/conf.py
🪛 YAMLlint (1.37.1)
.github/workflows/docs.yml

[error] 6-6: too many spaces inside brackets

(brackets)


[error] 6-6: too many spaces inside brackets

(brackets)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Greptile Review
  • GitHub Check: Run pytest (3.12)
  • GitHub Check: Run pytest (3.10)
🔇 Additional comments (6)
doc/conf.py (3)

86-92: CMS build configuration looks correct.

The use of Path(__file__).parent properly resolves paths relative to conf.py's location, which addresses the previous concern about Path.cwd() pointing to the wrong directory when sphinx-build runs from the repository root. The conditional configuration for theme and mermaid output format follows Sphinx conventions.


52-55: Metadata updates are appropriate.

Version bump to 1.5.0-beta and copyright year update to 2026 align with the project-wide updates.


97-97: Source suffix change aligns with RST migration.

Removing .md from source_suffix is consistent with the PR objective to migrate fully to reStructuredText and the removal of myst_parser from extensions.

.github/workflows/docs.yml (3)

55-57: Artifact name sanitization is well-implemented.

The use of tr '/' '-' correctly handles branch names containing slashes (e.g., feature/docs-updatefeature-docs-update), ensuring valid artifact names.


35-64: CMS build job is well-structured.

The job correctly:

  • Sets up Node.js for Mermaid CLI (addressing the previous pin-version feedback)
  • Delegates to the Makefile's cms-html target
  • Uploads artifacts with a dynamically generated, sanitized name

The trigger now includes tag pushes (v*), which aligns with the suggestion to run CMS builds for releases.


47-50: Node.js 24 is confirmed to be in Active LTS (as of January 2026), making it suitable for CI. No action needed.

Node.js 24 is the active long-term support version and receives full support, unlike Node.js 22 which is in maintenance mode. Using Node.js 24 in your CI workflow is appropriate and secure.

Likely an incorrect or invalid review comment.

@amaslenn
Copy link
Contributor Author

amaslenn commented Jan 8, 2026

Manually triggered build successfully generated cms-friendly artifact and was uploaded to web (internal, no link). A failure on deployment stage is legit as only main branch can be deployed.

Copy link
Contributor

@jeffnvidia jeffnvidia left a comment

Choose a reason for hiding this comment

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

LGTM

@amaslenn amaslenn merged commit 507c141 into main Jan 8, 2026
8 of 9 checks passed
@amaslenn amaslenn deleted the am/doc-rst branch January 8, 2026 13:59
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