Skip to content

Commit 1986d70

Browse files
authored
Merge branch 'main' into fix/semdedup-config-stale-keys
2 parents 1d1af6e + e61e89c commit 1986d70

197 files changed

Lines changed: 34733 additions & 34 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/config/.secrets.baseline‎

Lines changed: 73 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎.github/workflows/fern-docs-ci.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,5 @@ jobs:
4747
working-directory: ./fern
4848
run: |
4949
set -euo pipefail
50-
printf '%s\n' '{"organization":"nvidia","version":"5.123.0"}' > fern.config.json
51-
npm exec --yes --ignore-scripts --package=fern-api@5.123.0 -- fern check
50+
printf '%s\n' '{"organization":"nvidia","version":"5.149.0"}' > fern.config.json
51+
npm exec --yes --ignore-scripts --package=fern-api@5.149.0 -- fern check

‎.github/workflows/fern-docs-preview.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ jobs:
138138
(cd pr-source && find fern -regextype posix-extended -type f \
139139
-regex "$CONTENT" ! -path '*/.*' ! -path '*/components/*' \
140140
-exec cp --parents -- '{}' "$RUNNER_TEMP/fern-preview/" \;)
141-
printf '%s\n' '{"organization":"nvidia","version":"5.123.0"}' \
141+
printf '%s\n' '{"organization":"nvidia","version":"5.149.0"}' \
142142
> "$RUNNER_TEMP/fern-preview/fern/fern.config.json"
143143
144144
- name: Setup Node.js
@@ -148,7 +148,7 @@ jobs:
148148

149149
- name: Install fixed Fern CLI
150150
working-directory: ${{ runner.temp }}
151-
run: npm install --prefix "$RUNNER_TEMP/fern-cli" --ignore-scripts --no-audit --no-fund fern-api@5.123.0
151+
run: npm install --prefix "$RUNNER_TEMP/fern-cli" --ignore-scripts --no-audit --no-fund fern-api@5.149.0
152152

153153
- name: Generate library reference with trusted configuration
154154
env:

‎.github/workflows/publish-fern-docs.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ jobs:
4545
- name: Install fixed Fern CLI
4646
run: |
4747
set -euo pipefail
48-
npm install --prefix "$RUNNER_TEMP/fern-cli" --ignore-scripts --no-audit --no-fund fern-api@5.123.0
49-
printf '%s\n' '{"organization":"nvidia","version":"5.123.0"}' > fern/fern.config.json
48+
npm install --prefix "$RUNNER_TEMP/fern-cli" --ignore-scripts --no-audit --no-fund fern-api@5.149.0
49+
printf '%s\n' '{"organization":"nvidia","version":"5.149.0"}' > fern/fern.config.json
5050
5151
- name: Generate library reference MDX (autodocs)
5252
env:

‎fern/README.md‎

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,17 @@ fern/
5959
├── versions/
6060
│ ├── main.yml # Nav for the bleeding-edge train — paths point at ./main/pages/
6161
│ ├── main/pages/ # Bleeding-edge MDX (every PR lands here; published at /main/...)
62-
│ ├── v26.04.yml # Current GA snapshot — back-ports only
62+
│ ├── v26.09.yml # 26.09 docs-train snapshot
63+
│ ├── v26.09/pages/ # Snapshot of main at the 26.09 docs cut
64+
│ ├── v26.07.yml # Frozen 26.07 docs train
65+
│ ├── v26.07/pages/ # Frozen 26.07 content
66+
│ ├── v26.04.yml # Frozen 26.04 docs train
6367
│ ├── v26.04/pages/ # Frozen 26.04 content
64-
│ ├── v26.02.yml # Frozen 26.02 GA snapshot
68+
│ ├── v26.02.yml # Frozen 26.02 docs train
6569
│ ├── v26.02/pages/ # Frozen 26.02 content
6670
│ ├── v25.09.yml # Frozen 25.09 GA snapshot
6771
│ ├── v25.09/pages/ # Frozen 25.09 content
68-
│ └── latest.yml # Symlink → v26.04.yml (current GA alias; retargeted at next GA cut)
72+
│ └── latest.yml # Symlink → v26.09.yml (current docs alias; retargeted at next cut)
6973
├── substitute_variables.py # CI/local: substitute {{ variables }} in MDX before generate
7074
├── AUTODOCS_GUIDE.md # How the `libraries:` block builds the Python API reference
7175
└── product-docs/ # GENERATED Python API reference (gitignored)
@@ -75,15 +79,17 @@ fern/
7579
File path Published URL
7680
───────────────────────────────────────────────────── ─────────────────────────────────────────────────
7781
fern/versions/main/pages/get-started/index.mdx docs.nvidia.com/nemo/curator/main/get-started
82+
fern/versions/v26.09/pages/get-started/index.mdx docs.nvidia.com/nemo/curator/v26.09/get-started
83+
docs.nvidia.com/nemo/curator/latest/get-started (latest aliases v26.09)
84+
fern/versions/v26.07/pages/get-started/index.mdx docs.nvidia.com/nemo/curator/v26.07/get-started
7885
fern/versions/v26.04/pages/get-started/index.mdx docs.nvidia.com/nemo/curator/v26.04/get-started
79-
docs.nvidia.com/nemo/curator/latest/get-started (latest aliases v26.04)
8086
fern/versions/v26.02/pages/get-started/index.mdx docs.nvidia.com/nemo/curator/v26.02/get-started
8187
fern/versions/v25.09/pages/get-started/index.mdx docs.nvidia.com/nemo/curator/v25.09/get-started
8288
```
8389

84-
**`main/pages/` is the bleeding-edge tree** — every PR lands here and publishes under the `main` slug (`availability: beta`, shown as `Main · preview` in the picker). **`v26.04/pages/` is the current GA snapshot**; it changes only via deliberate back-port from `main`. `v26.02/` and `v25.09/` are older frozen GAs. `latest.yml` is a symlink to the current GA's nav (today: `v26.04.yml`), so `/latest/...` URLs serve the current train. At the next GA cut, snapshot `main/` to a new `vXX.YY/` and retarget the symlink.
90+
**`main/pages/` is the bleeding-edge tree** — every PR lands here and publishes under the `main` slug (`availability: beta`, shown as `Main · preview` in the picker). **`v26.09/pages/` is the current docs-train snapshot**, cut from `main/pages/`; `main/` remains the preview source for ongoing work. Earlier version trees are preserved as historical documentation. `latest.yml` is a symlink to the current docs train's nav (today: `v26.09.yml`), so `/latest/...` URLs serve the current train. At the next cut, snapshot `main/` to a new `vXX.YY/` and retarget the symlink.
8591

86-
`display-name` in `docs.yml` pairs the **NeMo calendar train** (e.g. `26.04`) with the **git release tag** (e.g. `v1.1.2`) so the version picker matches PyPI/GitHub. Align these with `CHANGELOG.md` and `nemo_curator/package_info.py` when you ship. The `main` entry stays unpinned (`Main · preview`) because it tracks unreleased work.
92+
`display-name` in `docs.yml` pairs the **NeMo calendar docs train** (e.g. `26.09`) with its **planned release tag** (e.g. `v1.4.0`) so the version picker reflects the release mapping. Check the release notes and GitHub release information before cutting a train; a docs cut does not itself publish a package release. The `main` entry stays unpinned (`Main · preview`) because it tracks unreleased work.
8793

8894
## Local development
8995

@@ -112,7 +118,9 @@ The script temporarily injects a path-input `nemo-curator-local` entry into `doc
112118
CI runs `substitute_variables.py` before `fern generate` so `{{ container_version }}` and other tokens in MDX are replaced. To run locally (from repo root):
113119

114120
```bash
115-
python fern/substitute_variables.py versions/main --version 26.04 # bleeding-edge — pass the *next* planned release
121+
python fern/substitute_variables.py versions/main --version XX.YY # preview — pass the next planned train
122+
python fern/substitute_variables.py versions/v26.09 --version 26.09
123+
python fern/substitute_variables.py versions/v26.07 --version 26.07
116124
python fern/substitute_variables.py versions/v26.04 --version 26.04
117125
python fern/substitute_variables.py versions/v26.02 --version 26.02
118126
python fern/substitute_variables.py versions/v25.09 --version 25.09
@@ -150,11 +158,11 @@ Standard Fern components are also available — `<Note>`, `<Tip>`, `<Info>`, `<W
150158
Use **version-prefixed paths** matching the slug of the tree the page lives in:
151159

152160
```mdx
153-
[Get started](/v26.04/get-started) // links inside versions/v26.04/pages/
154-
[Get started](/v26.02/get-started) // links inside versions/v26.02/pages/
161+
[Get started](/v26.09/get-started) // links inside versions/v26.09/pages/
162+
[Get started](/v26.07/get-started) // links inside versions/v26.07/pages/
155163
```
156164

157-
Cross-version links (e.g. from a `v26.04/` page to a `v26.02/` page) trigger broken-link warnings in `fern docs dev`; those are **false positives** — Fern's local validator does not resolve cross-version slugs from `docs.yml`. The published site renders them correctly.
165+
Cross-version links (e.g. from a `v26.09/` page to a `v26.07/` page) trigger broken-link warnings in `fern docs dev`; those are **false positives** — Fern's local validator does not resolve cross-version slugs from `docs.yml`. The published site renders them correctly.
158166

159167
### Cross-repo references (yaml configs, source files)
160168

@@ -166,23 +174,27 @@ Repository source paths like `nemo_curator/...` are not part of the docs site. L
166174

167175
## Versioning
168176

169-
`docs.yml` `versions:` lists four entries:
177+
`docs.yml` `versions:` lists the latest alias, the moving preview, and each retained stable docs train:
170178

171179
| display-name | slug | availability | path |
172180
|---|---|---|---|
173-
| `Latest · v1.1.2 (26.04)` | `latest` | `stable` | `./versions/latest.yml` (symlink → `v26.04.yml`) |
174-
| `26.04 · v1.1.2` | `v26.04` | `stable` | `./versions/v26.04.yml` |
181+
| `Latest · v1.4.0 (26.09)` | `latest` | `stable` | `./versions/latest.yml` (symlink → `v26.09.yml`) |
182+
| `Main · preview` | `main` | `beta` | `./versions/main.yml` |
183+
| `26.09 · v1.4.0` | `v26.09` | `stable` | `./versions/v26.09.yml` |
184+
| `26.07 · v1.3.0` | `v26.07` | `stable` | `./versions/v26.07.yml` |
185+
| `26.04 · v1.2.0` | `v26.04` | `stable` | `./versions/v26.04.yml` |
175186
| `26.02 · v1.1.0` | `v26.02` | `stable` | `./versions/v26.02.yml` |
176187
| `25.09 · v1.0.0` | `v25.09` | `stable` | `./versions/v25.09.yml` |
177188

178-
When the next GA cuts (e.g. `v26.10` / `v1.2.0`):
189+
When the next docs train is cut (replace `XX.YY` and `vX.Y.Z` with the values confirmed for that release):
179190

180-
1. `cp -r versions/v26.04 versions/v26.10` — fresh frozen snapshot of the bleeding-edge tree
181-
2. `cp versions/v26.04.yml versions/v26.10.yml`, then rewrite `./v26.04/` path prefixes to `./v26.10/`
182-
3. Retarget the GA alias symlink: `cd versions && ln -sfn v26.10.yml latest.yml`
183-
4. Add the new entry to `docs.yml` `versions:` (`display-name: "Latest · v1.2.0 (26.10)"`, etc.); demote/remove the oldest GA per the support policy
184-
5. Add `redirects:` for legacy `/26.10` and `/26.10/:path*/index.html` patterns in `docs.yml`
185-
6. `versions/v26.04/pages/` either keeps moving forward as the new bleeding-edge tree, or you start a new `v26.10/pages/` and freeze `v26.04/`
191+
1. Copy `versions/main/pages/` to `versions/vXX.YY/pages/` to snapshot the current preview source. Preserve page bytes and placeholders.
192+
2. Copy `versions/main.yml` to `versions/vXX.YY.yml`, then rewrite only `./main/` path prefixes to `./vXX.YY/`.
193+
3. Retarget the latest alias symlink: `cd versions && ln -sfn vXX.YY.yml latest.yml`.
194+
4. Add the new stable train to `docs.yml` `versions:` and update the Latest display name to `Latest · vX.Y.Z (XX.YY)`. Keep `Main · preview` and retained historical trains.
195+
5. Add the calendar-path, `index.html`, and `.html` redirects for `/XX.YY` in `docs.yml` before the generic catch-all redirects.
196+
6. Mirror only existing secret-baseline findings for the copied pages, preserving each finding's type, hash, verification state, and line number.
197+
7. Verify the snapshot matches `main/pages/`, the nav differs only in its version path prefix, and older version trees remain unchanged.
186198

187199
## CI and publishing
188200

@@ -198,7 +210,7 @@ PRs that touch `fern/**` get a preview after their current head is approved and
198210

199211
Preview navigation, components, organization and tooling come from `main`; PRs supply only documentation content and assets. Existing unchanged trusted symlinks (such as `versions/latest.yml`) are allowed; new or retargeted PR symlinks are rejected. Explicit page/asset deletions relative to the PR merge base are applied, while pages added only on newer `main` remain available. Navigation changes are not previewed until they land on `main`; deleting a still-referenced page can therefore fail the build rather than silently showing its old content.
200212

201-
Fern CLI **5.123.0** is pinned in workflow code with `FERN_NO_VERSION_REDIRECTION=true`. Preview token access is limited to library generation and publication. The comment URL must match the exact expected Fern preview host; no authenticated page-link request is made. Reverting all docs changes removes existing bot preview comments without publishing or accessing the Fern token.
213+
Fern CLI **5.149.0** is pinned in workflow code with `FERN_NO_VERSION_REDIRECTION=true`. Preview token access is limited to library generation and publication. The comment URL must match the exact expected Fern preview host; no authenticated page-link request is made. Reverting all docs changes removes existing bot preview comments without publishing or accessing the Fern token.
202214

203215
### Publishing to production
204216

@@ -231,7 +243,7 @@ PR titles follow Conventional Commits (e.g. `docs(fern): add rollout collection
231243
| Broken-link warning for cross-version path | False positive in `fern docs dev`; the published site resolves it correctly |
232244
| `JSX expressions must have one parent element` | Wrap multi-element MDX content in `<>...</>` or a `<div>` |
233245
| Old `/index.html` or `/foo.html` URL breaks | Add a `redirects:` entry in `docs.yml` (catch-alls for `:path*/index.html` and `:path*.html` already exist) |
234-
| `{{ variable }}` shows literally on the published page | Run `python fern/substitute_variables.py versions/v26.04 --version 26.04` before `fern generate`, or check the variable is registered in `DEFAULT_VARIABLES` |
246+
| `{{ variable }}` shows literally on the published page | Run `python fern/substitute_variables.py versions/vXX.YY --version XX.YY` before `fern generate`, or check the variable is registered in `DEFAULT_VARIABLES` |
235247
| Library reference missing or stale | Check `libraries:` block in `docs.yml` matches the package source path; see [`./AUTODOCS_GUIDE.md`](./AUTODOCS_GUIDE.md) |
236248

237249
## Reference

0 commit comments

Comments
 (0)