Skip to content

docs: migration to Fern#1973

Merged
miyoungc merged 28 commits into
developfrom
docs/fern-migration
Jun 9, 2026
Merged

docs: migration to Fern#1973
miyoungc merged 28 commits into
developfrom
docs/fern-migration

Conversation

@miyoungc

@miyoungc miyoungc commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Description

Staged preview: https://nvidia-preview-docs-fern-migration.docs.buildwithfern.com/nemo/guardrails/latest/home

Related Issue(s)

Checklist

  • I've read the CONTRIBUTING guidelines.
  • I've updated the documentation if applicable.
  • I've added tests if applicable.
  • @mentions of the person or team responsible for reviewing proposed changes.

Summary by CodeRabbit

  • Documentation
    • Restructured documentation site with new card-based navigation layout.
    • Added comprehensive Colang 2.0 language reference covering flows, events, control flow, Python actions, and debugging.
    • Added OpenAPI specification documenting API server endpoints (chat completions, models, configurations).
    • Updated internal documentation links to new absolute paths throughout all pages.
    • Standardized documentation metadata and frontmatter formatting across all pages.

@miyoungc miyoungc added the documentation Improvements or additions to documentation label Jun 3, 2026
@codecov

codecov Bot commented Jun 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Docs are being migrated to Fern/MDX, with site navigation rebuilt, many internal links normalized to absolute routes, and large Colang 1/2 documentation sections rewritten or moved. Supporting workflows, Makefile targets, and an OpenAPI spec are added for the new docs pipeline.

Changes

Documentation migration and site configuration

Layer / File(s) Summary
Site config and build workflow
fern/*, .github/workflows/*, .gitignore, Makefile, CONTRIBUTING.md, docs/README.mdx, docs/LIVE_DOCS.mdx
Fern site settings, generator setup, build workflows, Makefile targets, and docs usage guidance are updated for the new documentation pipeline.
Homepage and landing pages
docs/index.*, docs/about/*, docs/deployment/*, docs/configure-rails/index.mdx, docs/configure-rails/overview.mdx, docs/configure-rails/actions/index.mdx, docs/configure-rails/caching/*, docs/configure-rails/custom-initialization/index.mdx, docs/configure-rails/other-configurations/*, docs/configure-rails/yaml-schema/*, docs/run-rails/index.mdx, docs/run-rails/using-*/*, docs/integration/langchain/*, docs/evaluation/*, docs/observability/*, docs/resources/security/guidelines.mdx, docs/troubleshooting.mdx
Landing pages and section indexes are moved to MDX cards, simplified front matter, and new absolute internal routing.
Guardrail catalog and observability docs
docs/configure-rails/guardrail-catalog/*, docs/observability/*, docs/reference/*, docs/about/rail-types.mdx, docs/deployment/index.mdx
Guardrail catalog, observability, reference, and deployment pages are restructured with updated metadata, card layouts, anchors, and link targets.
Colang 1 and 2 reference overhaul
docs/configure-rails/colang/colang-1/*, docs/configure-rails/colang/colang-2/*
Colang guides, tutorials, language references, and standard library pages are rewritten in MDX, with matching .rst/.md removals and updated internal links.
Supporting docs and changelog
docs/scripts/update_cards/README.mdx, docs/project.json, docs/versions1.json, CHANGELOG.md
Helper docs, version metadata, and changelog links are aligned to the new docs structure and generated routes.

Sequence Diagram(s)

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Suggested labels

VDR

Suggested reviewers

  • cparisien
  • Pouyanpi
  • tgasser-nv
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/fern-migration

@coderabbitai coderabbitai 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.

Actionable comments posted: 5

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

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

⚠️ Outside diff range comments (13)
docs/configure-rails/colang/colang-1/colang-language-syntax-guide.mdx (1)

12-14: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Convert MyST admonitions to MDX equivalents before publishing.

This page still uses MyST directive blocks (warning/note). In a Fern MDX migration, these commonly render as plain code fences instead of callouts.

#!/bin/bash
# Find remaining MyST admonition directives in MDX docs.
rg -n --type=mdx -C2 '^\s*```{(warning|note|important|tip|admonition)}'

Expected: zero matches, or an explicit compatibility layer documented in the repo.

Also applies to: 40-42, 93-95

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/colang/colang-1/colang-language-syntax-guide.mdx` around
lines 12 - 14, This document contains MyST admonition fences like ```{warning}
and ```{note} which must be converted to your project's MDX callout components
before publishing; replace each MyST block (e.g., ```{warning}...```) with the
repo's MDX admonition component (for example <Warning>...</Warning> or the
configured Admonition/Callout component) and ensure the converted markup
preserves the original title/body and any inline code, then apply the same
conversion to the other occurrences noted (the second `warning`/`note` pairs) or
document an explicit compatibility layer if you intend to keep MyST syntax.
docs/observability/tracing/adapter-configurations.mdx (1)

17-19: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use hash-fragment links for in-page adapter anchors.

The table links won’t target the new <a id="..."> anchors unless they use #.... As written, they look like relative-page links and can break in-page navigation.

Suggested fix
-| [FileSystem](filesystem-adapter) | Development, debugging, local logging | `filepath: "./logs/traces.jsonl"` |
-| [OpenTelemetry](opentelemetry-adapter) | Production, monitoring platforms, distributed systems | Requires SDK configuration |
-| [Custom](custom-adapter) | Specialized backends or formats | Implement `InteractionLogAdapter` |
+| [FileSystem](`#filesystem-adapter`) | Development, debugging, local logging | `filepath: "./logs/traces.jsonl"` |
+| [OpenTelemetry](`#opentelemetry-adapter`) | Production, monitoring platforms, distributed systems | Requires SDK configuration |
+| [Custom](`#custom-adapter`) | Specialized backends or formats | Implement `InteractionLogAdapter` |

Also applies to: 23-24, 38-39, 52-53

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/observability/tracing/adapter-configurations.mdx` around lines 17 - 19,
Table links for the adapter anchors are using relative-page links instead of
hash fragments; update the three link targets for FileSystem, OpenTelemetry, and
Custom (the table entries referencing filesystem-adapter, opentelemetry-adapter,
custom-adapter) to use in-page hash-fragment links (`#filesystem-adapter`,
`#opentelemetry-adapter`, `#custom-adapter`) and apply the same change to the other
occurrences of those three links in the file so they target the in-page <a
id="..."> anchors.
docs/configure-rails/guardrail-catalog/community/active-fence.mdx (1)

19-19: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix article usage before numeric threshold.

Use “a 0.85 threshold” instead of “an 0.85 threshold” for correct grammar in user-facing docs.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/guardrail-catalog/community/active-fence.mdx` at line
19, Replace the incorrect article "an" before the numeric threshold in the
sentence that reads "an 0.85 threshold" with "a 0.85 threshold" in the
active-fence.mdx content describing "activefence moderation on input" and
"activefence moderation on input detailed" so the sentence reads "...uses the
maximum risk score with a 0.85 threshold..." ensuring the user-facing docs use
correct grammar.
docs/configure-rails/guardrail-catalog/agentic-security.mdx (1)

63-65: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Convert remaining MyST directives to MDX-compatible components.

This page still uses MyST/Sphinx directive syntax ({list-table} and {literalinclude}), which is not MDX-native and can break rendering in the Fern pipeline. Please migrate these blocks to MDX/Markdown equivalents (table markdown + fenced code includes or Fern-supported include components).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/guardrail-catalog/agentic-security.mdx` around lines 63
- 65, The page still contains MyST/Sphinx directives `{list-table}` and
`{literalinclude}`; replace each `{list-table}` block with a standard Markdown
table (pipe-separated header and rows) and replace each `{literalinclude}` with
either a fenced code block containing the included file's contents or the
project’s Fern-supported include component (e.g., an <Include> style component)
as appropriate; update any adjacent directive options (like headers or captions)
into the Markdown table header or a preceding paragraph and ensure code block
language is set for syntax highlighting so rendering in MDX/Fern is preserved
(search for `{list-table}` and `{literalinclude}` tokens to locate the spots).
docs/configure-rails/guardrail-catalog/jailbreak-protection.mdx (1)

42-44: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Replace the MyST fenced \``{note}block with MDX callout markup indocs/configure-rails/guardrail-catalog/jailbreak-protection.mdx` (lines 42-44).

\``{note}is MyST/Sphinx syntax and may not render correctly in Fern’s MDX pipeline; use the existing` callout format instead.

🔧 Proposed fix
-```{note}
-If the `server_endpoint` parameter is not set, the checks will run in-process. This is useful for TESTING PURPOSES ONLY and **IS NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS**.
-```
+&lt;Note&gt;
+If the `server_endpoint` parameter is not set, the checks will run in-process. This is useful for TESTING PURPOSES ONLY and **IS NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS**.
+&lt;/Note&gt;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/guardrail-catalog/jailbreak-protection.mdx` around lines
42 - 44, Replace the MyST fenced note block (the ```{note}``` block) with the
MDX callout component format using the existing <Note> callout; specifically,
remove the ```{note} ... ``` fenced block and wrap the text about the
`server_endpoint` parameter in a <Note> ... </Note> element so it renders
correctly in Fern’s MDX pipeline and preserves the warning about in-process
checks being for testing only.
docs/configure-rails/yaml-schema/tracing-configuration.mdx (1)

187-188: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Inconsistent link format in Related Topics section.

The migration to Fern is updating links to use absolute site paths (e.g., /configure-rails/..., /migration/0.22), but the Related Topics section still uses relative paths. For consistency with the rest of the migration, consider updating these to absolute paths.

🔗 Suggested fix
 ## Related Topics
 
-- [Tracing Guide](../../observability/tracing/index) - Detailed tracing setup and examples
-- [Detailed Logging](../../observability/logging/README) - Additional logging options
+- [Tracing Guide](/observability/tracing) - Detailed tracing setup and examples
+- [Detailed Logging](/observability/logging) - Additional logging options
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/yaml-schema/tracing-configuration.mdx` around lines 187
- 188, Update the two relative links in the "Related Topics" section so they use
absolute site paths; replace the link target for "Tracing Guide" (currently
"../../observability/tracing/index") with the absolute path (e.g.,
"/observability/tracing") and replace the link target for "Detailed Logging"
(currently "../../observability/logging/README") with the absolute path (e.g.,
"/observability/logging") to match the Fern migration style and other docs.
docs/configure-rails/custom-initialization/init-function.mdx (1)

13-15: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Replace MyST ```{important} fence with Fern/MDX admonition syntax

  • docs/configure-rails/custom-initialization/init-function.mdx uses a MyST fenced directive block ( ```{important} ... ``` `).
  • docs/convert-docs-to-fern.mjs converts fenced directives for toctree, mermaid, include, figure, and admonition, but does not handle important, so this block will likely render incorrectly as raw code.
  • Replace it with the repo’s MDX admonition component, e.g.
    <Warning title="Important">
    The `init` function **must be synchronous** (`def init`, not `async def init`). The framework calls it without `await`, so an async function would silently do nothing.
    </Warning>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/custom-initialization/init-function.mdx` around lines 13
- 15, Replace the MyST fenced directive block using the ```{important} ... ```
fence (the `important` admonition around the init guidance) with the repo MDX
admonition component by wrapping the same text in <Warning
title="Important">...</Warning> (i.e., remove the code fence and put the
sentence "The `init` function **must be synchronous** (`def init`, not `async
def init`). The framework calls it without `await`, so an async function would
silently do nothing." between the opening and closing Warning tags) so the
converter (docs/convert-docs-to-fern.mjs) will render it correctly.
docs/configure-rails/colang/index.mdx (1)

29-33: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Convert MyST image directives to MDX-compatible image syntax.

Lines 29 and 135 use ```{image} blocks. In Fern MDX migration these frequently fail rendering and appear as literal code blocks.

#!/bin/bash
# Detect remaining MyST image directives in MDX docs
rg -n '```\\{image\\}' docs fern/static/python-sdk-reference

Also applies to: 135-139

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/colang/index.mdx` around lines 29 - 33, The MyST image
directive block starting with the literal text "```{image}
colang-2/images/use_cases_llms.png" (and the other similar "```{image}" blocks
in this file) must be converted to MDX-compatible image usage; replace each
```{image}...``` block with a standard MDX image expression (either a Markdown
image like ![Use cases for LLMs in interactive
systems](colang-2/images/use_cases_llms.png) or an MDX <img> component/imported
Image component with the same src, alt text, width and center alignment) so the
images render instead of appearing as code blocks.
docs/run-rails/using-python-apis/event-based-api.mdx (1)

231-233: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Migrate to MDX Note component for consistency.

This still uses the old MyST admonition syntax ```{note} instead of the MDX <Note> component used elsewhere in the migration (e.g., docs/telemetry.mdx lines 10-12).

📝 Proposed fix to use MDX Note component
-```{note}
-You need to make sure that the guardrails logic can handle the custom event. You do this by updating your flows to deal with the new events where needed. Otherwise, the custom event will just be ignored.
-```
+<Note>
+You need to make sure that the guardrails logic can handle the custom event. You do this by updating your flows to deal with the new events where needed. Otherwise, the custom event will just be ignored.
+</Note>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/run-rails/using-python-apis/event-based-api.mdx` around lines 231 - 233,
Replace the MyST admonition block (the ```{note} ... ``` construct) with the MDX
Note component by removing the triple-backtick MyST syntax and wrapping the
existing text inside a <Note> ... </Note> element; ensure the paragraph text and
any inline code inside the note are preserved as-is and that you use the Note
component consistently with other files (see other uses of the Note component)
so the guardrails guidance is rendered correctly.
docs/run-rails/using-fastapi-server/actions-server.mdx (1)

23-26: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Migrate to MDX Note component for consistency.

This still uses the old MyST admonition syntax ```{note} instead of the MDX <Note> component used elsewhere in the migration.

📝 Proposed fix to use MDX Note component
-```{note}
-Using an actions server is optional but highly recommended for production deployments.
-If no actions server is configured, actions run in the same process as the guardrails server.
-```
+<Note>
+Using an actions server is optional but highly recommended for production deployments.
+If no actions server is configured, actions run in the same process as the guardrails server.
+</Note>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/run-rails/using-fastapi-server/actions-server.mdx` around lines 23 - 26,
Replace the MyST admonition block (the ```{note} ... ``` snippet) with the MDX
Note component: locate the note block containing "Using an actions server is
optional..." and swap the opening ```{note} and closing ``` with an opening
<Note> and a closing </Note>, preserving the inner text and formatting; ensure
there are no leftover backticks or MyST markers so the page uses the MDX <Note>
component consistently.
docs/getting-started/installation-guide.mdx (2)

69-101: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Remove unnecessary outer Note wrapper.

The outer <Note> wrapper (lines 69, 101) serves no purpose and creates confusing nesting. The two titled <Note> blocks for pip and Poetry can stand alone.

🔧 Proposed fix
-<Note>
-
 <Note title="pip">

 ```bash
 git clone https://github.com/NVIDIA-NeMo/Guardrails.git nemoguardrails
 cd nemoguardrails
 python -m venv .venv
 source .venv/bin/activate
 pip install -e .
git clone https://github.com/NVIDIA-NeMo/Guardrails.git nemoguardrails
cd nemoguardrails
python -m venv .venv
source .venv/bin/activate
poetry install

When using Poetry, prefix CLI commands with poetry run:

poetry run nemoguardrails server --config examples/configs
- - ```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/getting-started/installation-guide.mdx` around lines 69 - 101, Remove
the unnecessary outer <Note> wrapper that encloses the two standalone notes;
keep the inner <Note title="pip"> and <Note title="Poetry"> blocks as top-level
elements, deleting the opening and closing outer <Note> tags so the pip and
Poetry notes are no longer nested.

132-164: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Remove unnecessary outer Note wrapper.

The outer <Note> wrapper (lines 132, 164) is unnecessary and creates confusing nesting. The titled platform-specific notes can stand alone.

🔧 Proposed fix
-<Note>
-
 <Note title="Linux/macOS">

 ```bash
 g++ --version

If the command prints a version number (for example, g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0), a C++ compiler is already installed and no action is needed.

If the command is not found, install the compiler:

apt-get install gcc g++ python3-dev

Open a terminal (CMD or PowerShell) and run:

where cl

If the command prints a file path, a C++ compiler is already installed and no action is needed.

If the command is not found, install Microsoft C++ Build Tools (version 14.0 or greater).

- - ```
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/getting-started/installation-guide.mdx` around lines 132 - 164, The
outer <Note> wrapper around the platform-specific notes creates unnecessary
nesting; remove the outer <Note> start and end tags so the two inner blocks
<Note title="Linux/macOS"> and <Note title="Windows"> are top-level siblings in
the MDX file, ensuring each titled Note remains intact and properly closed and
no extra wrapping tags remain.
docs/configure-rails/guardrail-catalog/self-check.mdx (1)

13-15: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

MyST directive syntax is incompatible with MDX.

The file contains MyST-style directives ({important}, {note}, {image}) that will not render correctly in Fern's MDX processor. These need to be converted to MDX components.

📝 Recommended conversion patterns

Convert MyST directives to MDX components:

For {important} blocks (lines 13-15, 37-41):

-```{important}
-You should only use the example self-check prompts as a starting point.
-```
+<Warning>
+You should only use the example self-check prompts as a starting point.
+</Warning>

For {note} blocks (lines 67-69, 177-179):

-```{note}
-If a prompt is not defined, an exception will be raised.
-```
+<Note>
+If a prompt is not defined, an exception will be raised.
+</Note>

For {image} blocks (lines 252-256, 270-274):

-```{image} ../../_static/puml/dialog_rails_flow.png
-:alt: "Sequence diagram showing..."
-:width: 500px
-:align: center
-```
+<img 
+  src="../../_static/puml/dialog_rails_flow.png"
+  alt="Sequence diagram showing..."
+  width="500px"
+  style={{ display: 'block', margin: '0 auto' }}
+/>

Also applies to: 37-41, 67-69, 177-179, 252-256, 270-274

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/guardrail-catalog/self-check.mdx` around lines 13 - 15,
Replace all MyST directives in this file ({important}, {note}, {image}) with
MDX-compatible components: swap {important} blocks for a <Warning>...</Warning>
component, swap {note} blocks for <Note>...</Note>, and replace {image} blocks
with an MDX <img> element including src, alt, width and inline style for
centering; ensure the text and fenced code inside those blocks are preserved as
children of the new components and that no leftover MyST braces remain. Use the
exact directive tokens ({important}, {note}, {image}) to find each occurrence
and update them consistently so the MDX processor renders the content correctly.
🟡 Minor comments (26)
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/llm/generation.mdx-364-365 (1)

364-365: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix typo in phase description (Line 364).

“user canonical from” should be “user canonical form”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/llm/generation.mdx`
around lines 364 - 365, Fix the typo in the phase description sentence that
currently reads "user canonical from (user intent)..." by changing "from" to
"form" so it reads "user canonical form (user intent)..."; update the sentence
in the paragraph that begins "The three phases are:" in generation.mdx to
correct this single-word typo.
docs/configure-rails/exceptions.mdx-40-40 (1)

40-40: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add visible anchor text to the link on Line 40.

The current markdown uses an empty label, which renders as a blank clickable area.

Suggested fix
-By default, all the guardrails included in the [](/configure-rails/guardrail-catalog) return a predefined message
+By default, all the guardrails included in the [guardrail catalog](/configure-rails/guardrail-catalog) return a predefined message
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/exceptions.mdx` at line 40, The markdown link uses an
empty label "[](/configure-rails/guardrail-catalog)" which renders as a blank
clickable area; update that link to include visible anchor text (for example
"guardrail catalog" or "Guardrail Catalog") so it reads "[guardrail
catalog](/configure-rails/guardrail-catalog)" and replace the empty-label link
in the sentence that currently begins "By default, all the guardrails included
in the ...".
docs/observability/metrics/opentelemetry-integration.mdx-188-188 (1)

188-188: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix empty link label on Line 188.

The link target is present, but anchor text is empty, so the rendered docs show a blank link.

Suggested fix
-For full tracing setup, refer to [](/observability/tracing/opentelemetry-integration).
+For full tracing setup, refer to the [OpenTelemetry tracing integration guide](/observability/tracing/opentelemetry-integration).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/observability/metrics/opentelemetry-integration.mdx` at line 188,
Replace the empty link label in the markdown snippet "For full tracing setup,
refer to [](/observability/tracing/opentelemetry-integration)." with descriptive
anchor text (e.g., "OpenTelemetry tracing guide" or "tracing integration") so
the line becomes something like "For full tracing setup, refer to [OpenTelemetry
tracing guide](/observability/tracing/opentelemetry-integration)." This will
ensure the link renders with visible text.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/llm/generation.mdx-465-467 (1)

465-467: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Repair malformed newline description in clean_utterance_content docs.

The bullet text is broken across lines and currently renders incorrectly.

Suggested fix
-Clean an utterance by performing the following operations:
-     - replacing "\n" with "
-".
+Clean an utterance by performing the following operation:
+ - replacing `"\\n"` with a real newline character.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/llm/generation.mdx`
around lines 465 - 467, The markdown bullet for clean_utterance_content is
broken across lines; update the bullet so the replacement is rendered on one
line and the newline escape is shown correctly (for example, wrap the sequence
backslash-n in inline code or escape the backslash so it reads replacing "\\n"
with a newline) so the phrase doesn't wrap into a raw line break. Edit the
bullet under clean_utterance_content to use a single-line, properly escaped
representation (e.g., `"\n"` or `\\n`) so it renders correctly.
docs/configure-rails/yaml-schema/prompt-configuration.mdx-45-45 (1)

45-45: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix empty link label on Line 45.

The link renders with no visible anchor text ([](...)), so readers can’t discover/click it properly.

Suggested fix
-For a complete list of available prompt attributes and tasks, refer to the [](/configure-rails/configuration-reference#prompts-configuration).
+For a complete list of available prompt attributes and tasks, refer to the [prompts configuration reference](/configure-rails/configuration-reference#prompts-configuration).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/yaml-schema/prompt-configuration.mdx` at line 45,
Replace the empty markdown link label in prompt-configuration.mdx so the anchor
text is visible; update the markdown fragment
"[](/configure-rails/configuration-reference#prompts-configuration)" by adding
descriptive link text like "Prompts configuration" (or similar) while keeping
the target "/configure-rails/configuration-reference#prompts-configuration"
intact so the link renders correctly.
docs/configure-rails/other-configurations/index.mdx-18-18 (1)

18-18: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use “Markdown” capitalization in user-facing docs.

Please capitalize “Markdown” in this sentence for consistency with standard terminology.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/other-configurations/index.mdx` at line 18, Update the
user-facing sentence "Configure the knowledge base folder for RAG-based
responses using markdown documents." to capitalize Markdown; replace "markdown
documents" with "Markdown documents" so the sentence reads "Configure the
knowledge base folder for RAG-based responses using Markdown documents." and
maintain punctuation and surrounding wording in index.mdx.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/chat.mdx-22-22 (1)

22-22: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix article typo in function description.

Use “an event string” instead of “a event string” for user-facing docs consistency.

Suggested diff
-| [`parse_events_inputs`](`#nemoguardrails-cli-chat-parse_events_inputs`) | Parses a event string and creates an event dictionary. |
+| [`parse_events_inputs`](`#nemoguardrails-cli-chat-parse_events_inputs`) | Parses an event string and creates an event dictionary. |
@@
-Parses a event string and creates an event dictionary.
+Parses an event string and creates an event dictionary.

Also applies to: 195-195

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/chat.mdx`
at line 22, Fix the typo in the function description for parse_events_inputs by
changing "a event string" to "an event string"; update both occurrences of the
table entry/description for parse_events_inputs (the one at the top and the
repeated instance later) so the user-facing docs read "Parses an event string
and creates an event dictionary." and keep the rest of the line unchanged.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/debugger.mdx-17-17 (1)

17-17: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct the resume function description.

resume is documented as “Pause current interaction.” Update it to “Resume current interaction.” to avoid misleading CLI users.

Also applies to: 126-126

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/debugger.mdx`
at line 17, The description for the CLI command/function named resume
(reference: nemoguardrails-cli-debugger-resume) is incorrect — it currently
reads “Pause current interaction.” Update the documentation entry (and the
duplicate at the other location) to read “Resume current interaction.” so the
resume command correctly reflects its behavior.
docs/run-rails/index.mdx-21-21 (1)

21-21: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix empty link text in installation sentence.

See [](/getting-started/installation-guide) renders a blank link label. Use descriptive anchor text so readers can navigate it.

Suggested fix
-To use the Python API or the Guardrails API server, you need to install the NeMo Guardrails library. See [](/getting-started/installation-guide) for instructions.
+To use the Python API or the Guardrails API server, you need to install the NeMo Guardrails library. See the [installation guide](/getting-started/installation-guide) for instructions.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/run-rails/index.mdx` at line 21, Replace the empty Markdown link text
"[](/getting-started/installation-guide)" with descriptive anchor text (e.g.,
"installation guide" or "Getting Started installation guide") so the sentence
reads like "See the installation guide (/getting-started/installation-guide) for
instructions"; update the fragment in docs/run-rails/index.mdx where the current
sentence contains "See [](/getting-started/installation-guide)" to use the
chosen anchor text.
docs/configure-rails/before-configuration.mdx-28-28 (1)

28-28: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the in-page anchor link target.

[](supported-nemoguard-nim-microservices) is missing #, so it won’t jump to the section anchor declared later in the page.

🔧 Proposed fix
-- [ ] (Recommended) NemoGuard NIM endpoints deployed. Refer to [](supported-nemoguard-nim-microservices) for more details.
+- [ ] (Recommended) NemoGuard NIM endpoints deployed. Refer to [](`#supported-nemoguard-nim-microservices`) for more details.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/before-configuration.mdx` at line 28, The markdown link
in the checklist is missing the anchor prefix; update the link target from
[](supported-nemoguard-nim-microservices) to include the hash so it points to
the in-page section (for example change to [Supported NemoGuard NIM
microservices](`#supported-nemoguard-nim-microservices`) or at minimum to [](
`#supported-nemoguard-nim-microservices`) using the existing link text), ensuring
the anchor matches the section ID declared later in the page.
docs/run-rails/using-python-apis/streaming.mdx-204-204 (1)

204-204: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use descriptive text for the new absolute links.

Line 204 and Line 207 also use empty link text ([](...)). Please add visible labels so these references are usable in rendered docs.

Also applies to: 207-207

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/run-rails/using-python-apis/streaming.mdx` at line 204, The two absolute
links in the markdown currently have empty link text; update them to include
descriptive labels so rendered docs show visible anchors: replace
[](/run-rails/using-python-apis/generation-options#detailed-logging-information)
with a label like "detailed logging information" (or similar) and replace
[](/observability/logging) with a label like "observability logging" (or
"logging and observability"); ensure the link texts clearly describe the target
pages so readers can see and click them when the docs render.
docs/run-rails/using-python-apis/streaming.mdx-16-18 (1)

16-18: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Replace empty link labels in the streaming references list.

The links at Line 16 and Line 17 use empty anchor text ([](...)), so readers see unlabeled links. Add descriptive labels for both links.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/run-rails/using-python-apis/streaming.mdx` around lines 16 - 18, Replace
the two empty-link labels in the streaming references: change the first link
with URL "/configure-rails/yaml-schema/streaming/output-rail-streaming" to
include a descriptive label like "Streaming output rail configuration" and
change the second link with URL "/getting-started/tutorials" to include a
descriptive label like "Sample Python client tutorial"; edit the markdown
line(s) in the streaming.mdx where the links currently appear as [](...) to use
the suggested anchor text so readers see meaningful link labels.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/actions.mdx-66-70 (1)

66-70: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Unify ActionResult.context_updates default representation.

Line 69 documents context_updates with = dict(), while Line 83 documents field(default_factory=dict). Please keep one canonical default form so the API docs don’t present conflicting behavior.

Also applies to: 83-84

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/actions.mdx`
around lines 66 - 70, The docs show two conflicting default representations for
nemoguardrails.actions.actions.ActionResult.context_updates (one as = dict() and
another as field(default_factory=dict)); pick one canonical form and make both
occurrences consistent — preferably replace the inline = dict() representation
with field(default_factory=dict) (or vice versa if project convention dictates)
so the documented signature and the dataclass/field declaration for
ActionResult.context_updates match exactly across the file.
docs/run-rails/using-python-apis/overview.mdx-17-17 (1)

17-17: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Replace empty-label links with descriptive link text.

Line 17 and Line 27 use [](/...) links without visible text, so readers can’t see what to click.

Suggested fix
-Upon initializing the core classes (`RailsConfig` and `LLMRails`), the library loads the configuration files you created in the previous chapter [](/configure-rails).
+Upon initializing the core classes (`RailsConfig` and `LLMRails`), the library loads the configuration files you created in the previous chapter [Configure Guardrails](/configure-rails).

-1. If you haven't already, install the NeMo Guardrails library with the `nvidia` extra, following the instructions in [](/getting-started/installation-guide).
+1. If you haven't already, install the NeMo Guardrails library with the `nvidia` extra, following the instructions in [Installation Guide](/getting-started/installation-guide).

Also applies to: 27-27

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/run-rails/using-python-apis/overview.mdx` at line 17, Replace the
empty-label markdown links `[](/configure-rails)` used in the sentences about
initializing `RailsConfig` and `LLMRails` with descriptive link text (e.g.,
`[Configure Rails](/configure-rails)` or similar), so readers see a visible
clickable label; update both occurrences (the one referencing `/configure-rails`
at the `RailsConfig`/`LLMRails` sentence and the similar empty link at line 27)
to use meaningful anchor text.
docs/observability/metrics/reference.mdx-143-144 (1)

143-144: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add visible link text for the related resource links.

Line 143 and Line 144 use [](...), which renders unlabeled links. This creates poor UX and accessibility issues in the “Related Resources” list.

Suggested fix
-- [](/observability/metrics/enable-metrics) — Minimal SDK setup with console output.
-- [](/observability/metrics/opentelemetry-integration) — Production exporters: OTLP, Prometheus.
+- [Enable Guardrails Metrics](/observability/metrics/enable-metrics) — Minimal SDK setup with console output.
+- [OpenTelemetry Metrics Integration](/observability/metrics/opentelemetry-integration) — Production exporters: OTLP, Prometheus.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/observability/metrics/reference.mdx` around lines 143 - 144, The two
related-resources entries use empty link text
([](/observability/metrics/enable-metrics) and
[](/observability/metrics/opentelemetry-integration)); update them to include
visible, descriptive labels (e.g., "Enable Metrics" and "OpenTelemetry
Integration" or similar) so the links render with readable text and improve
accessibility—edit the lines referencing /observability/metrics/enable-metrics
and /observability/metrics/opentelemetry-integration accordingly.
docs/configure-rails/yaml-schema/guardrails-configuration/index.mdx-72-72 (1)

72-72: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add visible anchor text for these links.

Lines 72, 88, 101, and 118 use empty link labels ([](...)), which produces non-discoverable links and hurts usability/accessibility.

Also applies to: 88-88, 101-101, 118-118

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/configure-rails/yaml-schema/guardrails-configuration/index.mdx` at line
72, Replace the empty link labels ([](...)) with meaningful, visible anchor text
for each occurrence (lines referencing the configuration reference and input
flows), e.g., change [](/configure-rails/configuration-reference#input-rails) to
"input rails" or "Input Rails configuration" and do the same for the other three
empty labels so each link has descriptive anchor text; locate the four
empty-link instances and update their link text to be human-readable and
accessible.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/llm/utils.mdx-872-872 (1)

872-872: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix typo in user-facing docs text.

Line 872 says “Empty lines at the begging of the string...”; this should be “beginning”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/llm/utils.mdx`
at line 872, Locate the user-facing doc string that currently reads "Empty lines
at the begging of the string are skipped." and correct the misspelling by
replacing "begging" with "beginning" so the sentence reads "Empty lines at the
beginning of the string are skipped."; update the text in the MDX content (the
exact string occurrence) and run a quick preview to confirm the rendered docs
reflect the fix.
docs/scripts/update_cards/README.mdx-139-151 (1)

139-151: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the generated-output example to match the documented markup format.

Lines 139-151 show nested <Note> blocks, but the page describes Sphinx-Design grid-card output. This inconsistency is confusing for users validating script output.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/scripts/update_cards/README.mdx` around lines 139 - 151, The example
output uses nested <Note> blocks instead of the expected Sphinx-Design
"grid-card" markup; update the generated-output example to match the documented
markup format by replacing the nested <Note> elements with the equivalent
Sphinx-Design grid-card structure (e.g., grid-card/grid-column/grid-card items)
so the sample demonstrates the correct output shape. Locate the sample in the
README where the nested <Note> tags appear and transform them into the proper
Sphinx-Design components, preserving the titles and content (e.g., "Getting
Started" and "Configuration Guide") and ensuring the wrapper/container reflects
the documented grid-card hierarchy.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/action_dispatcher.mdx-244-246 (1)

244-246: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align parameter type docs with the documented signature.

load_actions_from_path is documented with path: pathlib.Path in the signature, but the parameter block says type="str". Please keep these consistent to avoid confusion in the SDK reference.

Proposed fix
-<ParamField path="path" type="str">
- A string representing the path from which to load actions.
+<ParamField path="path" type="pathlib.Path">
+ A pathlib.Path representing the path from which to load actions.
 </ParamField>

Also applies to: 261-263

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/action_dispatcher.mdx`
around lines 244 - 246, The parameter type in the docs for
ActionDispatcher.load_actions_from_path is inconsistent: update the parameter
documentation for the `path` parameter to `pathlib.Path` (instead of `"str"`) to
match the function signature in
nemoguardrails.actions.action_dispatcher.ActionDispatcher.load_actions_from_path;
apply the same change for the second occurrence of the `path` parameter in the
duplicate block (the one around lines 261-263) so both parameter blocks
correctly list `pathlib.Path`.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/action_dispatcher.mdx-351-351 (1)

351-351: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix broken inline code formatting for __init__.py.

The inline code span is missing a closing backtick, which can break rendering.

Proposed fix
-Currently, it only excludes the `__init__.py files.
+Currently, it only excludes `__init__.py` files.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions/action_dispatcher.mdx`
at line 351, The inline code span for `__init__.py` in action_dispatcher.mdx is
missing its closing backtick, breaking markdown rendering; locate the occurrence
of `__init__.py` in the file and add the missing trailing backtick to close the
inline code span so it reads `__init__.py` (ensuring any surrounding text or
backticks remain balanced).
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/providers.mdx-71-73 (1)

71-73: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix truncated find_providers signature rendering.

The signature text is cut off at Line 72 ('--list...), so the API reference is incomplete.

Suggested fix
 nemoguardrails.cli.providers.find_providers(
-    list_only: bool = typer.Option(False, '--list...
+    list_only: bool = typer.Option(False, "--list", help="List providers only")
 )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/providers.mdx`
around lines 71 - 73, The rendered signature for
nemoguardrails.cli.providers.find_providers is truncated because the MDX line
breaks/wrapping cuts off the option text; update the providers.mdx entry to
include the full function signature on a single unwrapped line or place it in a
fenced code block so the entire signature (including "--list...") renders
intact, ensuring the complete parameter list and typer.Option call for
find_providers are present verbatim.
docs/user-guides/testing-your-config.mdx-258-259 (1)

258-259: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update adjacent advanced link to MDX route/path format.

Line 259 still references ./advanced/index.rst, which is likely a stale Sphinx-era path in the Fern/MDX docs.

Suggested fix
-[advanced topics](./advanced/index.rst) for examples.
+[advanced topics](/user-guides/advanced/align-score-deployment) for examples.

If this should point to a different landing page, please swap to the correct /user-guides/advanced/... route.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/user-guides/testing-your-config.mdx` around lines 258 - 259, Update the
stale Sphinx link for the "advanced topics" anchor: replace the link URL
'./advanced/index.rst' (the link with text "advanced topics") with the MDX route
path, e.g. '/user-guides/advanced/' (or the correct
'/user-guides/advanced/<page>' if there’s a more specific landing page); ensure
the link text remains the same and that the new path uses MDX routing rather
than a .rst file.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/migration.mdx-925-925 (1)

925-925: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix typo: "form" should be "from".

The description contains the same typo as Line 44.

📝 Proposed fix
-Convert a co file form v2-alpha to v2-beta
+Convert a co file from v2-alpha to v2-beta
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/migration.mdx`
at line 925, Fix the typo in the migration doc by changing "form" to "from" in
the sentence "Convert a co file form v2-alpha to v2-beta" (the occurrence in the
migration.mdx snippet) and also update the other identical occurrence noted at
line 44 so both read "Convert a co file from v2-alpha to v2-beta".
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/migration.mdx-44-44 (1)

44-44: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix typo: "form" should be "from".

The description contains a typo.

📝 Proposed fix
-| [`convert_colang_2alpha_syntax`](`#nemoguardrails-cli-migration-convert_colang_2alpha_syntax`) | Convert a co file form v2-alpha to v2-beta |
+| [`convert_colang_2alpha_syntax`](`#nemoguardrails-cli-migration-convert_colang_2alpha_syntax`) | Convert a co file from v2-alpha to v2-beta |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/cli/migration.mdx`
at line 44, Fix the typo in the description of the CLI migration entry for
convert_colang_2alpha_syntax: change the word "form" to "from" in the table row
that reads "`convert_colang_2alpha_syntax` | Convert a co file form v2-alpha to
v2-beta" so it reads "Convert a co file from v2-alpha to v2-beta"; update the
text near the symbol convert_colang_2alpha_syntax in the migration.mdx file
accordingly.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions_server/actions_server.mdx-139-141 (1)

139-141: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the typo in api_description.

Guardrails Action Sever API. should be Guardrails Action Server API. in the rendered reference.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/actions_server/actions_server.mdx`
around lines 139 - 141, The api_description string has a typo; update
nemoguardrails.actions_server.actions_server.api_description to use the correct
wording "Guardrails Action Server API." (replace "Sever" with "Server") so the
rendered reference reads correctly.
docs/observability/metrics/index.mdx-20-24 (1)

20-24: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Document the sync-API telemetry caveat here.

This warning currently reads as if enabling IORails is sufficient, but the synchronous generate() path intentionally disables both metrics and tracing on the ephemeral IORails instance. Readers using the sync API will otherwise expect metrics that never appear.

Based on learnings, in nemoguardrails/guardrails/iorails.py the sync generate() method intentionally sets both sync_config.tracing.enabled = False and sync_config.metrics.enabled = False on the ephemeral IORails instance.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/observability/metrics/index.mdx` around lines 20 - 24, Update the
metrics warning to explicitly document the sync-API caveat: state that although
enabling IORails (NEMO_GUARDRAILS_IORAILS_ENGINE=1) is required for metrics, the
synchronous generate() path in nemoguardrails/guardrails/iorails.py
intentionally disables telemetry (it sets sync_config.tracing.enabled = False
and sync_config.metrics.enabled = False on the ephemeral IORails instance), so
users calling the sync API will not see metrics or traces; add a short note
describing this behavior and, if appropriate, link to the iorails.generate()
behavior for more details.
🧹 Nitpick comments (3)
docs/integration/langchain/index.mdx (1)

13-15: 💤 Low value

Consider adding content under section headers.

The "LangChain" and "LangGraph" section headers have no content beneath them. If these sections are placeholders for child pages, consider either adding brief introductory text or removing the empty headers to avoid confusion.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/integration/langchain/index.mdx` around lines 13 - 15, The "LangChain"
and "LangGraph" section headings are empty; add brief explanatory text or remove
them to avoid confusion. Edit the "LangChain" and "LangGraph" headings in the
document and either (a) add a one- or two-sentence summary under each heading
describing what the section will cover and link to any child pages, or (b)
delete the empty headers if the content lives only in child pages, or (c)
replace them with a short "See child pages" note or a TOC include so readers
aren’t presented with blank sections.
fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/_compat/langchain_kwargs.mdx (1)

7-7: 💤 Low value

Use readable arrow symbol instead of HTML entity.

The HTML entity -&gt; should be replaced with a more readable arrow symbol for better documentation quality.

📝 Proposed fix
-0.21 -&gt; 0.22 LangChain config migration helper.
+0.21 → 0.22 LangChain config migration helper.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@fern/static/python-sdk-reference/guardrails-python-sdk/nemoguardrails/_compat/langchain_kwargs.mdx`
at line 7, Replace the HTML entity `-&gt;` in the heading text "0.21 -&gt; 0.22
LangChain config migration helper." with a readable arrow symbol (for example
the Unicode right arrow "→") so the line reads "0.21 → 0.22 LangChain config
migration helper." Update this single text occurrence in the markdown file
referenced (look for the exact string "0.21 -&gt; 0.22 LangChain config
migration helper.") to improve documentation readability.
docs/getting-started/.cursor/rules/quickstart-focus/RULE.mdx (1)

1-30: ⚡ Quick win

Avoid shipping Cursor rule files as part of the docs tree

This repo’s Fern docs conversion step only processes docs/**/*.md (not *.mdx), so docs/getting-started/.cursor/rules/quickstart-focus/RULE.mdx won’t be picked up by docs/convert-docs-to-fern.mjs, and a repo search shows it’s not referenced from docs/index.yml (Fern navigation source). Still, keeping IDE configuration under docs/ is easy to misinterpret and could be accidentally included by other tooling—consider relocating these to a top-level .cursor/ directory or adding an explicit docs-build exclusion for .cursor/**.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/getting-started/.cursor/rules/quickstart-focus/RULE.mdx` around lines 1
- 30, The RULE.mdx file named "Getting Started Context" (quickstart-focus rule)
is an IDE/configuration artifact placed under the docs tree and will not be
processed by the docs conversion; move this rule file out of the docs content
(e.g., into a top-level .cursor configuration directory) or add an explicit docs
build exclusion for the .cursor/** pattern so it is not treated as
documentation, and update any navigation source (e.g., docs index) to remove
references if present.

Comment thread docs/configure-rails/yaml-schema/index.mdx Outdated
Comment thread docs/scripts/convert-docs-to-fern.mjs
Comment thread docs/observability/tracing/opentelemetry-integration.mdx Outdated
Comment thread docs/run-rails/using-python-apis/check-messages.mdx Outdated
Comment thread docs/run-rails/using-python-apis/core-classes.mdx Outdated
@miyoungc miyoungc marked this pull request as draft June 3, 2026 15:54
Comment thread fern/docs.yml Outdated
@miyoungc miyoungc force-pushed the docs/fern-migration branch from eb3773e to 26f9c7e Compare June 5, 2026 20:52
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

@miyoungc miyoungc marked this pull request as ready for review June 5, 2026 21:25
@miyoungc miyoungc changed the title docs: migration to Fern start docs: migration to Fern Jun 5, 2026
@miyoungc

miyoungc commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator Author

@tgasser-nv
Validation result:

the Fern conversion is complete for the published Markdown/MDX docs outside the expected SDK/API reference changes. About, Get Started, Run Rails, Integration, Deployment, Reference, Observability, Evaluation, Migration, Resources, Troubleshooting, and the migrated Configure Rails pages all have page and section parity.

The real gap is docs/configure-rails/colang/colang-2/: that RST subtree remains unconverted and absent from docs/index.yml, including whats-changed.rst. Also, docs/configure-rails/colang/colang-2/migration-guide.mdx is converted but missing from Fern nav.

Secondary cleanup: several user-guides/**, research.mdx, and observability/logging/README.mdx files are off-nav, but that matches develop Sphinx exclusions. Treat those as a nav/discoverability decision, not missed conversion.


I'm working on resolving the two gaps.

@miyoungc

miyoungc commented Jun 6, 2026

Copy link
Copy Markdown
Collaborator Author

colang 2 gap fixed, moved research.mdx to resources.

@miyoungc

miyoungc commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator Author

Finished the remaining cleanup for the user-guides migration and docs links.

Updates include:

  • Replaced stale user_guides and old path-style links with current Fern route-based URLs.
  • Fixed the route checker so absolute docs links validate against Fern navigation slugs instead of source file paths.
  • Updated affected docs references, including Python API, custom initialization, guardrail catalog, LangChain, tutorials, and server pages.
  • Excluded generated SDK reference pages from the default source-doc link scan while still supporting SDK routes.

Validation:

  • make docs-check-links now passes with the corrected route-based checker.

@tgasser-nv tgasser-nv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thanks Miyoung, can you check the following before merging:

  • Can you address the Code Rabbit feedback? You can send a message to @coderabbitai to ask it to re-review if these are stale. There are some critical ones in there like MyST admonitions not being removed, absolute paths not being used in related topics, etc.
  • I spot-checked the staging docs and it's incredibly slow. The first time I visit a page it takes about 10 - 20 seconds to load (while the green bar moves from left-to-right). Then after that something is getting cached because it loads normally. If it's really this slow when deployed I don't think it's usable. Do you know the cause of this?
  • The search function seems to be broken. I searched for content-safety and nothing came up:
Image

@miyoungc

miyoungc commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

@CodeRabbit review

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@miyoungc

miyoungc commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

@tgasser-nv The coderabbit review is stale. I rerun in case.

@miyoungc

miyoungc commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

@tgasser-nv Per the TME who's the PIC working with Fern, the preview loads slower than prod. Also after caching, the sites load normal. Also Fern is prioritizing to keep the websites perform fast.

@coderabbitai coderabbitai 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.

Actionable comments posted: 17

Caution

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

⚠️ Outside diff range comments (1)
docs/README.mdx (1)

40-63: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Remove stale serve.py guidance from the Fern workflow section.

Line 40 still labels this as a Python-script flow, and Lines 48-63 describe python serve.py options/examples that no longer match Line 43 (make docs-fern-preview-watch). Lines 75-77 also reference legacy file types. This creates conflicting setup instructions.

Suggested cleanup
-### Option 2: Using the Python Script (Cross-Platform)
+### Option 2: Using Preview Watch (Cross-Platform)

 ```bash
 make docs-fern-preview-watch

-Options:

-- --port PORT: Port to serve on (default: 8000)
-- --host HOST: Host to bind to (default: 0.0.0.0)
-- --open: Automatically open browser

-Examples:

-```bash
-# Start server on default port (8000)
-python serve.py

-# Start server on custom port with auto-open browser
-python serve.py --port 8080 --open

-# Start server accessible only from localhost
-python serve.py --host 127.0.0.1
-```
+This publishes/updates a Fern preview for the current branch while watching local changes.

@@
-- Edit any documentation file (.md, .rst, .py configs)
+- Edit documentation sources (.mdx) and Fern config/navigation files

</details>

  


Also applies to: 74-77

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @docs/README.mdx around lines 40 - 63, Remove the stale Python "serve.py"
instructions and legacy file-type guidance and replace them with the current
Fern workflow described by the make target; specifically, update the section
referencing "Option 2: Using the Python Script" and the examples that call
"python serve.py" to instead document the "make docs-fern-preview-watch" flow
(keep the make target name "make docs-fern-preview-watch" as the entry symbol),
remove mentions of "serve.py" and the old --port/--host/--open examples, and
change the file-edit guidance from "Edit any documentation file (.md, .rst,
.py configs)" to the current text "Edit documentation sources (.mdx) and
Fern config/navigation files" so the README only describes the modern Fern
preview workflow.


</details>

<!-- cr-comment:v1:30a62ad3d437aa3609c2d061 -->

</blockquote></details>

</blockquote></details>
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/docs-build.yaml:
- Around line 59-61: The preview-docs job should be guarded so it only runs when
the DOCS_FERN_TOKEN secret is available (or the PR is not from a fork); update
the job condition for preview-docs to check both github.event_name ==
'pull_request' and that either github.event.pull_request.head.repo.fork is false
or secrets.DOCS_FERN_TOKEN is set (i.e. add a combined if: condition referencing
preview-docs and secrets.DOCS_FERN_TOKEN) to avoid running the publish step on
forked PRs without the secret.
- Around line 47-50: Replace floating action tags with pinned references and
disable persisted checkout credentials: update each usage of
actions/checkout@v6, actions/setup-node@v6 and actions/github-script@v8 to use
specific pinned commit SHAs (or fully-qualified tags) instead of floating major
tags, and add persist-credentials: false to every actions/checkout step (the
checkout steps currently using actions/checkout@v6) so the runner does not
retain repository credentials after checkout; ensure the three checkout
occurrences are all updated consistently.
- Around line 34-37: The workflow currently grants pull-requests: write at
top-level under the permissions block, which applies to all jobs; remove
pull-requests: write from the global permissions and instead add a job-scoped
permissions block under the preview-docs job that sets pull-requests: write
(keep contents: read global or job-scoped as needed) so only the preview-docs
job has write access to pull requests; update the permissions key and the
preview-docs job definition (look for the top-level permissions block and the
preview-docs job name) accordingly.

In @.github/workflows/docs-links-pr.yaml:
- Around line 25-33: Update the GitHub Actions steps that use actions/checkout
and actions/setup-node: replace the floating refs actions/checkout@v6 and
actions/setup-node@v6 with explicit commit SHAs (pin to the action's canonical
SHA) and add persist-credentials: false to the Checkout step (the step named
"Checkout") to avoid leaving repository credentials in the workspace; ensure you
make the same changes for both job occurrences in the workflow so the steps
referencing actions/checkout and actions/setup-node are pinned and checkout
credentials are disabled.

In `@docs/configure-rails/colang/colang-1/bot-thinking-guardrails.mdx`:
- Line 109: Replace the phrase "pattern matching flow" with the hyphenated
compound modifier "pattern-matching flow" in the sentence that currently reads
"This demonstrates how to set up a basic pattern matching flow for learning
purposes." so the documentation uses the correct compound adjective
("pattern-matching flow") for technical clarity; search for the exact phrase
"pattern matching flow" to find and update it.

In
`@docs/configure-rails/colang/colang-1/tutorials/2-core-colang-concepts/core-colang-concepts.ipynb`:
- Line 475: The "single LLM call option" link in the documentation is a broken
placeholder ("#"); update the anchor so it points to the actual documentation
section or file that describes the setting (config.yml) — replace the "#" target
in the text that references "single LLM call option" with the proper anchor or
URL for the config key rails.dialog.single_call in config.yml (or the specific
section name/anchor used in the notebook/docs) so readers can navigate directly
to the explanation.

In
`@docs/configure-rails/colang/colang-1/tutorials/4-input-rails/input-rails.ipynb`:
- Line 479: Replace the relative link to the self_check_input flow with the
absolute GitHub URL so published docs resolve correctly: locate the string
referencing "../../../nemoguardrails/library/self_check/input_check/flows.co"
(the mention of the `self_check_input` flow) and update that markdown link to
the full GitHub repository path used in the README (the canonical absolute URL)
so links remain stable in generated documentation.

In `@docs/configure-rails/colang/colang-1/tutorials/4-input-rails/README.mdx`:
- Line 8: Links in README.mdx use the /configure-guardrails/... prefix while the
paired notebook uses /configure-rails/...; update every link that points to
/configure-guardrails/colang/... (including the instances referenced in the
review) to use the canonical /configure-rails/colang/... prefix so all internal
cross-links match the notebook routing.

In `@docs/configure-rails/colang/colang-1/tutorials/5-output-rails/README.mdx`:
- Line 8: The page is using the inconsistent route prefix
"/configure-guardrails" — update all occurrences of
"/configure-guardrails/colang/colang-1/tutorials/..." to the canonical
"/configure-rails/colang/colang-1/tutorials/..." throughout the README.mdx
(including the other occurrences flagged) so links match the migrated docs;
search for the string "/configure-guardrails" in this file and replace it with
"/configure-rails" ensuring link targets and any referenced notebook paths are
updated accordingly.

In `@docs/configure-rails/colang/colang-2/getting-started/dialog-rails.mdx`:
- Line 98: Replace the typo "precessed events" with "processed events" in the
user-facing docs sentence that references the NeMo Guardrails CLI and the
`--verbose` flag (the sentence containing "--verbose" and "precessed events");
ensure the updated sentence now reads that the flag shows all the processed
events.

In `@docs/configure-rails/colang/colang-2/getting-started/index.mdx`:
- Line 15: The two placeholder links "Installation Guide" and "NeMo Guardrails
Getting Started Guide" on the line containing "For complete details..." are
non-functional; update the anchor hrefs for those link texts to point to the
real documentation URLs (or appropriate relative doc paths/MDX slugs) so users
can reach the required setup instructions, e.g., replace `#` with the canonical
installation and getting-started doc URLs or site variables used elsewhere in
the docs so the "Installation Guide" and "NeMo Guardrails Getting Started Guide"
links are valid.

In `@docs/configure-rails/colang/colang-2/getting-started/llm-flows.mdx`:
- Line 18: The config path in the testing command is inconsistent: the example
file is listed as examples/v2_x/tutorial/llm_flows/main.co but the command uses
--config=examples/v2_x/other/llm_flow; update the command to point to the actual
example (e.g. --config=examples/v2_x/tutorial/llm_flows/main.co) or change the
example path to match the command so both references (the example path and the
--config value) are identical; ensure you update every occurrence of
--config=examples/v2_x/other/llm_flow and/or
examples/v2_x/tutorial/llm_flows/main.co to keep them consistent.

In `@docs/configure-rails/colang/colang-2/getting-started/multimodal-rails.mdx`:
- Line 52: Update the explanatory sentence to reference the correct line numbers
for the pre-defined flows: replace the incorrect "lines 9 and 17" with the
actual line numbers where `user gestured` and `bot gesture` appear in the
snippet (the lines showing those flow names, e.g., where `user gestured` and
`bot gesture` are defined in the example) so the sentence accurately points to
the `user gestured` and `bot gesture` flow definitions.

In `@docs/configure-rails/colang/colang-2/language-reference/defining-flows.mdx`:
- Line 335: There's a typo in the sentence "based on an internal event form
another flow" inside the "C) The pattern..." paragraph; change "form" to "from"
so it reads "based on an internal event from another flow" and ensure the
reference to the section [Internal
Events](defining-flows#internal-events-defining-flows) remains intact.

In
`@docs/configure-rails/colang/colang-2/language-reference/development-and-debugging.mdx`:
- Line 15: Change the brand spelling in the Colang docs line that references the
extension link: replace the link text "Github link" with "GitHub link" (i.e.,
update the string in the Markdown that follows "Colang highlighting extension"
so the platform name uses the correct capitalization "GitHub"). Ensure only the
display text is updated and the URL remains unchanged.

In
`@docs/configure-rails/colang/colang-2/language-reference/make-use-of-llms.mdx`:
- Line 100: Update the markdown link text to use "GitHub" (proper
capitalization) and remove the stray trailing underscore and parenthesis after
the link so it renders correctly: in the sentence referencing the llm standard
library module and the flows "automating intent detection" and "generating user
intent for unhandled user utterance", replace "( [Github
link](../../../../../nemoguardrails/colang/v2_x/library/llm.co)_) " with a
properly formatted "(GitHub
link](../../../../../nemoguardrails/colang/v2_x/library/llm.co))" or similar
correct Markdown so the URL is clickable and the extra "_)" is removed while
keeping the reference to the llm module and the two flow names intact.

In
`@docs/configure-rails/colang/colang-2/language-reference/the-standard-library.mdx`:
- Line 11: Update the link text in the file the-standard-library.mdx: replace
the misspelled "Github link" string with the correct "GitHub link" so the link
text uses the proper capitalization; locate the phrase in the line containing
"nemoguardrails/colang/v2_x/library/ ([Github
link](../../../../../nemoguardrails/colang/v2_x/library))" and change only the
visible link label to "GitHub link".

---

Outside diff comments:
In `@docs/README.mdx`:
- Around line 40-63: Remove the stale Python "serve.py" instructions and legacy
file-type guidance and replace them with the current Fern workflow described by
the make target; specifically, update the section referencing "Option 2: Using
the Python Script" and the examples that call "python serve.py" to instead
document the "make docs-fern-preview-watch" flow (keep the make target name
"make docs-fern-preview-watch" as the entry symbol), remove mentions of
"serve.py" and the old `--port/--host/--open` examples, and change the file-edit
guidance from "Edit any documentation file (`.md`, `.rst`, `.py` configs)" to
the current text "Edit documentation sources (`.mdx`) and Fern config/navigation
files" so the README only describes the modern Fern preview workflow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5774c761-62e6-4829-b31c-04b0876632f8

📥 Commits

Reviewing files that changed from the base of the PR and between 04e62de and 377a6d9.

📒 Files selected for processing (194)
  • .github/workflows/docs-build.yaml
  • .github/workflows/docs-links-pr.yaml
  • .github/workflows/docs-preview-pr.yaml
  • .gitignore
  • CHANGELOG.md
  • CONTRIBUTING.md
  • Makefile
  • docs/LIVE_DOCS.mdx
  • docs/README.mdx
  • docs/about/how-it-works.mdx
  • docs/about/overview.mdx
  • docs/about/release-notes.mdx
  • docs/about/supported-llms.mdx
  • docs/configure-rails/actions/action-parameters.mdx
  • docs/configure-rails/actions/built-in-actions.mdx
  • docs/configure-rails/actions/creating-actions.mdx
  • docs/configure-rails/actions/index.mdx
  • docs/configure-rails/before-configuration.mdx
  • docs/configure-rails/caching/index.mdx
  • docs/configure-rails/caching/kv-cache-reuse.mdx
  • docs/configure-rails/colang/colang-1/bot-thinking-guardrails.mdx
  • docs/configure-rails/colang/colang-1/colang-language-syntax-guide.mdx
  • docs/configure-rails/colang/colang-1/tutorials/1-hello-world/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/1-hello-world/hello-world.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/2-core-colang-concepts/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/2-core-colang-concepts/core-colang-concepts.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/3-demo-use-case/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/4-input-rails/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/4-input-rails/input-rails.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/5-output-rails/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/5-output-rails/output-rails.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/6-topical-rails/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/7-rag/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/7-rag/rag.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/8-tracing/1_tracing_quickstart.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/8-tracing/2_tracing_with_jaeger.ipynb
  • docs/configure-rails/colang/colang-2/getting-started/dialog-rails.mdx
  • docs/configure-rails/colang/colang-2/getting-started/dialog-rails.rst
  • docs/configure-rails/colang/colang-2/getting-started/hello-world.mdx
  • docs/configure-rails/colang/colang-2/getting-started/hello-world.rst
  • docs/configure-rails/colang/colang-2/getting-started/index.mdx
  • docs/configure-rails/colang/colang-2/getting-started/index.rst
  • docs/configure-rails/colang/colang-2/getting-started/input-rails.mdx
  • docs/configure-rails/colang/colang-2/getting-started/input-rails.rst
  • docs/configure-rails/colang/colang-2/getting-started/interaction-loop.mdx
  • docs/configure-rails/colang/colang-2/getting-started/interaction-loop.rst
  • docs/configure-rails/colang/colang-2/getting-started/llm-flows.mdx
  • docs/configure-rails/colang/colang-2/getting-started/llm-flows.rst
  • docs/configure-rails/colang/colang-2/getting-started/multimodal-rails.mdx
  • docs/configure-rails/colang/colang-2/getting-started/multimodal-rails.rst
  • docs/configure-rails/colang/colang-2/getting-started/recommended-next-steps.mdx
  • docs/configure-rails/colang/colang-2/getting-started/recommended-next-steps.rst
  • docs/configure-rails/colang/colang-2/index.mdx
  • docs/configure-rails/colang/colang-2/index.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/attention.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/attention.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/avatars.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/avatars.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/core.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/core.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/guardrails.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/guardrails.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/lmm.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/lmm.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/timing.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/timing.rst
  • docs/configure-rails/colang/colang-2/language-reference/defining-flows.mdx
  • docs/configure-rails/colang/colang-2/language-reference/defining-flows.rst
  • docs/configure-rails/colang/colang-2/language-reference/development-and-debugging.mdx
  • docs/configure-rails/colang/colang-2/language-reference/development-and-debugging.rst
  • docs/configure-rails/colang/colang-2/language-reference/event-generation-and-matching.mdx
  • docs/configure-rails/colang/colang-2/language-reference/event-generation-and-matching.rst
  • docs/configure-rails/colang/colang-2/language-reference/flow-control.mdx
  • docs/configure-rails/colang/colang-2/language-reference/flow-control.rst
  • docs/configure-rails/colang/colang-2/language-reference/index.mdx
  • docs/configure-rails/colang/colang-2/language-reference/index.rst
  • docs/configure-rails/colang/colang-2/language-reference/introduction.mdx
  • docs/configure-rails/colang/colang-2/language-reference/introduction.rst
  • docs/configure-rails/colang/colang-2/language-reference/make-use-of-llms.mdx
  • docs/configure-rails/colang/colang-2/language-reference/make-use-of-llms.rst
  • docs/configure-rails/colang/colang-2/language-reference/more-on-flows.mdx
  • docs/configure-rails/colang/colang-2/language-reference/more-on-flows.rst
  • docs/configure-rails/colang/colang-2/language-reference/python-actions.mdx
  • docs/configure-rails/colang/colang-2/language-reference/python-actions.rst
  • docs/configure-rails/colang/colang-2/language-reference/the-standard-library.mdx
  • docs/configure-rails/colang/colang-2/language-reference/the-standard-library.rst
  • docs/configure-rails/colang/colang-2/language-reference/working-with-actions.mdx
  • docs/configure-rails/colang/colang-2/language-reference/working-with-actions.rst
  • docs/configure-rails/colang/colang-2/language-reference/working-with-variables-and-expressions.mdx
  • docs/configure-rails/colang/colang-2/language-reference/working-with-variables-and-expressions.rst
  • docs/configure-rails/colang/colang-2/migration-guide.mdx
  • docs/configure-rails/colang/colang-2/whats-changed.mdx
  • docs/configure-rails/colang/colang-2/whats-changed.rst
  • docs/configure-rails/colang/index.mdx
  • docs/configure-rails/colang/usage-examples/bot-message-instructions.mdx
  • docs/configure-rails/colang/usage-examples/extract-user-provided-values.mdx
  • docs/configure-rails/configuration-reference.mdx
  • docs/configure-rails/custom-initialization/custom-data.mdx
  • docs/configure-rails/custom-initialization/custom-llm-framework.mdx
  • docs/configure-rails/custom-initialization/custom-llm-model.mdx
  • docs/configure-rails/custom-initialization/custom-llm-providers.mdx
  • docs/configure-rails/custom-initialization/index.mdx
  • docs/configure-rails/custom-initialization/init-function.mdx
  • docs/configure-rails/custom-initialization/testing-your-config.mdx
  • docs/configure-rails/exceptions.mdx
  • docs/configure-rails/guardrail-catalog/agentic-security.mdx
  • docs/configure-rails/guardrail-catalog/community/ai-defense.mdx
  • docs/configure-rails/guardrail-catalog/community/alignscore.mdx
  • docs/configure-rails/guardrail-catalog/community/auto-align.mdx
  • docs/configure-rails/guardrail-catalog/community/gliner.mdx
  • docs/configure-rails/guardrail-catalog/community/llama-guard.mdx
  • docs/configure-rails/guardrail-catalog/community/patronus-evaluate-api.mdx
  • docs/configure-rails/guardrail-catalog/community/patronus-lynx.mdx
  • docs/configure-rails/guardrail-catalog/content-safety.mdx
  • docs/configure-rails/guardrail-catalog/fact-checking.mdx
  • docs/configure-rails/guardrail-catalog/index.mdx
  • docs/configure-rails/guardrail-catalog/jailbreak-protection.mdx
  • docs/configure-rails/guardrail-catalog/pii-detection.mdx
  • docs/configure-rails/guardrail-catalog/self-check.mdx
  • docs/configure-rails/guardrail-catalog/third-party.mdx
  • docs/configure-rails/index.mdx
  • docs/configure-rails/other-configurations/embedding-search-providers.mdx
  • docs/configure-rails/other-configurations/index.mdx
  • docs/configure-rails/other-configurations/knowledge-base.mdx
  • docs/configure-rails/overview.mdx
  • docs/configure-rails/yaml-schema/guardrails-configuration.mdx
  • docs/configure-rails/yaml-schema/index.mdx
  • docs/configure-rails/yaml-schema/model-configuration.mdx
  • docs/configure-rails/yaml-schema/prompt-configuration.mdx
  • docs/configure-rails/yaml-schema/streaming/global-streaming.mdx
  • docs/configure-rails/yaml-schema/streaming/index.mdx
  • docs/configure-rails/yaml-schema/streaming/output-rail-streaming.mdx
  • docs/configure-rails/yaml-schema/tracing-configuration.mdx
  • docs/deployment/index.mdx
  • docs/deployment/using-docker.mdx
  • docs/deployment/using-microservice.mdx
  • docs/evaluation/evaluate-configuration.mdx
  • docs/evaluation/evaluate-guardrails.mdx
  • docs/evaluation/evaluation-methodology.mdx
  • docs/getting-started/installation-guide.mdx
  • docs/getting-started/integrate-into-application.mdx
  • docs/getting-started/tutorials/index.mdx
  • docs/getting-started/tutorials/jailbreak-detection-heuristics.mdx
  • docs/getting-started/tutorials/multimodal.mdx
  • docs/getting-started/tutorials/nemoguard-jailbreakdetect-deployment.mdx
  • docs/getting-started/tutorials/nemoguard-topiccontrol-deployment.mdx
  • docs/getting-started/tutorials/nemotron-content-safety-reasoning-deployment.mdx
  • docs/getting-started/tutorials/nemotron-safety-guard-deployment.mdx
  • docs/index.mdx
  • docs/index.yml
  • docs/integration/langchain/agent-middleware.mdx
  • docs/integration/langchain/chain-with-guardrails/index.mdx
  • docs/integration/langchain/langchain-integration.mdx
  • docs/integration/langchain/runnable-rails.mdx
  • docs/integration/tools-integration.mdx
  • docs/migration/0.22.mdx
  • docs/observability/index.mdx
  • docs/observability/metrics/enable-metrics.mdx
  • docs/observability/metrics/index.mdx
  • docs/observability/metrics/opentelemetry-integration.mdx
  • docs/observability/metrics/reference.mdx
  • docs/observability/tracing/adapter-configurations.mdx
  • docs/observability/tracing/index.mdx
  • docs/observability/tracing/opentelemetry-integration.mdx
  • docs/observability/tracing/opentelemetry-logs.mdx
  • docs/reference/guardrails-sequence-diagrams.mdx
  • docs/resources/research.mdx
  • docs/resources/security/guidelines.mdx
  • docs/run-rails/index.mdx
  • docs/run-rails/using-fastapi-server/actions-server.mdx
  • docs/run-rails/using-fastapi-server/chat-with-guardrailed-model.mdx
  • docs/run-rails/using-fastapi-server/index.mdx
  • docs/run-rails/using-fastapi-server/list-guardrail-configs.mdx
  • docs/run-rails/using-fastapi-server/list-models.mdx
  • docs/run-rails/using-fastapi-server/overview.mdx
  • docs/run-rails/using-fastapi-server/run-guardrails-server.mdx
  • docs/run-rails/using-python-apis/check-messages.mdx
  • docs/run-rails/using-python-apis/core-classes.mdx
  • docs/run-rails/using-python-apis/event-based-api.mdx
  • docs/run-rails/using-python-apis/generation-options.mdx
  • docs/run-rails/using-python-apis/index.mdx
  • docs/run-rails/using-python-apis/overview.mdx
  • docs/run-rails/using-python-apis/streaming.mdx
  • docs/scripts/convert-docs-to-fern.mjs
  • docs/scripts/update_cards/README.mdx
  • docs/troubleshooting.mdx
  • docs/user-guides/advanced/index.rst
  • docs/user-guides/index.rst
  • docs/user-guides/input-output-rails-only/index.rst
  • docs/user-guides/input-output-rails-only/input-output-rails-only.ipynb
  • docs/user-guides/jailbreak-detection-heuristics/index.rst
  • docs/user-guides/jailbreak-detection-heuristics/jailbreak-detection-heuristics.ipynb
  • fern/docs.yml
  • fern/fern.config.json
💤 Files with no reviewable changes (26)
  • docs/configure-rails/colang/colang-2/getting-started/dialog-rails.rst
  • docs/configure-rails/colang/colang-2/getting-started/index.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/timing.rst
  • docs/configure-rails/colang/colang-2/language-reference/introduction.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/guardrails.rst
  • docs/configure-rails/colang/colang-2/getting-started/input-rails.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/attention.rst
  • docs/configure-rails/colang/colang-2/language-reference/index.rst
  • docs/configure-rails/colang/colang-2/language-reference/flow-control.rst
  • docs/configure-rails/colang/colang-2/getting-started/recommended-next-steps.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/core.rst
  • docs/configure-rails/colang/colang-2/getting-started/llm-flows.rst
  • docs/configure-rails/colang/colang-2/language-reference/development-and-debugging.rst
  • docs/configure-rails/colang/colang-2/language-reference/event-generation-and-matching.rst
  • docs/configure-rails/colang/colang-2/language-reference/python-actions.rst
  • docs/configure-rails/colang/colang-2/language-reference/the-standard-library.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/lmm.rst
  • docs/configure-rails/colang/colang-2/language-reference/more-on-flows.rst
  • docs/configure-rails/colang/colang-2/language-reference/defining-flows.rst
  • docs/configure-rails/colang/colang-2/language-reference/csl/avatars.rst
  • docs/configure-rails/colang/colang-2/getting-started/interaction-loop.rst
  • docs/configure-rails/colang/colang-2/getting-started/hello-world.rst
  • docs/configure-rails/colang/colang-2/getting-started/multimodal-rails.rst
  • .github/workflows/docs-preview-pr.yaml
  • docs/configure-rails/colang/colang-2/language-reference/make-use-of-llms.rst
  • docs/configure-rails/colang/colang-2/index.rst
✅ Files skipped from review due to trivial changes (18)
  • docs/configure-rails/colang/colang-2/getting-started/input-rails.mdx
  • docs/configure-rails/colang/colang-2/getting-started/recommended-next-steps.mdx
  • docs/configure-rails/colang/colang-2/getting-started/hello-world.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/guardrails.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/avatars.mdx
  • docs/configure-rails/colang/colang-2/index.mdx
  • docs/configure-rails/colang/colang-1/tutorials/3-demo-use-case/README.mdx
  • docs/configure-rails/colang/colang-2/getting-started/interaction-loop.mdx
  • docs/configure-rails/colang/colang-1/tutorials/7-rag/README.mdx
  • docs/configure-rails/colang/colang-2/language-reference/csl/core.mdx
  • docs/configure-rails/colang/colang-1/tutorials/6-topical-rails/README.mdx
  • docs/about/supported-llms.mdx
  • docs/configure-rails/colang/colang-1/tutorials/1-hello-world/hello-world.ipynb
  • docs/about/release-notes.mdx
  • docs/LIVE_DOCS.mdx
  • docs/configure-rails/colang/colang-1/tutorials/7-rag/rag.ipynb
  • docs/configure-rails/colang/colang-1/tutorials/8-tracing/2_tracing_with_jaeger.ipynb
  • CHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (11)
  • docs/configure-rails/before-configuration.mdx
  • docs/configure-rails/caching/kv-cache-reuse.mdx
  • docs/configure-rails/actions/creating-actions.mdx
  • docs/configure-rails/actions/built-in-actions.mdx
  • docs/configure-rails/actions/action-parameters.mdx
  • docs/about/how-it-works.mdx
  • docs/configure-rails/actions/index.mdx
  • docs/configure-rails/caching/index.mdx
  • docs/configure-rails/colang/colang-1/tutorials/1-hello-world/README.mdx
  • docs/configure-rails/colang/colang-1/tutorials/2-core-colang-concepts/README.mdx
  • docs/about/overview.mdx

Comment thread .github/workflows/docs-build.yaml
Comment thread .github/workflows/docs-build.yaml
Comment thread .github/workflows/docs-build.yaml Outdated
Comment thread .github/workflows/docs-links-pr.yaml
Comment thread docs/configure-rails/colang/colang-1/bot-thinking-guardrails.mdx Outdated
Comment thread docs/configure-rails/colang/colang-2/getting-started/multimodal-rails.mdx Outdated
Comment thread docs/configure-rails/colang/colang-2/language-reference/defining-flows.mdx Outdated
Comment thread docs/configure-rails/colang/colang-2/language-reference/make-use-of-llms.mdx Outdated
Comment thread docs/configure-rails/colang/colang-2/language-reference/the-standard-library.mdx Outdated

@tgasser-nv tgasser-nv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thanks Miyoung, the staging area is much faster now and the search is working. Can you address the coderabbit feedback before merging?

@miyoungc

miyoungc commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

@tgasser-nv Addressed all the coderabbit feedback

@miyoungc miyoungc merged commit 13739de into develop Jun 9, 2026
13 checks passed
@miyoungc miyoungc deleted the docs/fern-migration branch June 9, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants