This page describes the validation and documentation checks expected for repository changes.
Run tests for every language affected by your change. If you touch the core runtime, the expectation is broader because the bindings sit on top of the same behavior.
Run the affected targets directly:
Use the matching build recipes when you need explicit build-only passes:
These commands cover the most common language-specific validation loops.
Run the Rust validation loop when a change touches the core runtime or Rust-facing API surface.
Run the Python validation loop when a change touches the wrapper package, tests, or docs tooling.
Run the Node.js validation loop when a change touches the NAPI binding or
JavaScript package surface. Run the OpenClaw target when Node changes can affect
the OpenClaw plugin or when touching integrations/openclaw.
If your change affects public behavior, bindings, examples, or workspace structure, update the corresponding docs in the same branch.
Before opening a PR, confirm:
README.md still matches the repo structureUse these commands to validate the Fern documentation site after docs changes. They regenerate the ignored Python, Node.js, and Rust API reference pages before checking the Fern site, including links and navigation.
NeMo Relay uses a dual-branch Fern publishing model. Authors edit documentation
on main in docs/ and fern/. The generated Fern content on
docs-website is managed by CI and must not be edited by hand. The branch root
.gitignore, README.md, and .github/workflows/publish-fern-docs.yml are
branch-local maintenance files and can be updated directly on docs-website.
The Fern workflow uses the FERN_TOKEN GitHub environment secret from the
fern environment. Pull-request branches under pull-request/** get Fern
previews when docs change, and merged pull requests clean up their preview
deployment. Pushes to main sync the generated fern/pages-dev/ layout to
docs-website and publish the dev docs. Raw SemVer tags such as 0.1.0,
0.1.0-beta.1, and 0.1.0-rc.1 create public docs versions displayed with a
leading v. Prerelease indicators are stripped from the public docs version
path, so 0.1.0-beta.1, 0.1.0-rc.1, and 0.1.0 all target v0.1.0. Stable
tags use availability: stable and update the default Latest version. Beta
and release-candidate tags use availability: beta, replace the same base
version snapshot, and do not update Latest. Alpha tags are not published.
The branch sync and version snapshot logic lives in
scripts/docs/sync_fern_docs_branch.py.
All source files must include SPDX headers and remain under Apache 2.0 expectations. Reviewers check this during normal review even when hooks do not enforce it automatically.