Skip to content

Commit a0f217f

Browse files
committed
docs(model): unpublish Nemotron 3.5 Super VL guides
Signed-off-by: Chen Cui <chcui@nvidia.com>
1 parent d1bc63d commit a0f217f

9 files changed

Lines changed: 77 additions & 38 deletions

File tree

‎docs/conf.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
"_build",
5858
"Thumbs.db",
5959
".DS_Store",
60+
# Keep these guides in GitHub, but omit them from the published HTML.
61+
"models/nemotron/nemotron3.5-super-vl.md",
62+
"models/nemotron/nemotron3.5-super-vl-text-only.md",
6063
"skills/linting-and-formatting/SKILL.md",
6164
"skills/parity-testing/SKILL.md",
6265
"skills/pr-review/SKILL.md",

‎docs/fern/docs.yml‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,23 @@ versions:
2121
- display-name: nightly
2222
path: versions/nightly.yml
2323
slug: nightly
24+
25+
redirects:
26+
# Unpublished guides remain in GitHub; send bookmarks to Supported Models.
27+
# The catalog landing page exists in nightly, not in the frozen default version.
28+
- source: /nemo/megatron-bridge/supported-models/nemotron/nemotron-3-5-super-vl
29+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
30+
- source: /nemo/megatron-bridge/nightly/supported-models/nemotron/nemotron-3-5-super-vl
31+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
32+
- source: /nemo/megatron-bridge/supported-models/nemotron/nemotron-3-5-super-text-only
33+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
34+
- source: /nemo/megatron-bridge/nightly/supported-models/nemotron/nemotron-3-5-super-text-only
35+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
36+
- source: /nemo/megatron-bridge/models/nemotron/nemotron3.5-super-vl.html
37+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
38+
- source: /nemo/megatron-bridge/nightly/models/nemotron/nemotron3.5-super-vl.html
39+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
40+
- source: /nemo/megatron-bridge/models/nemotron/nemotron3.5-super-vl-text-only.html
41+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models
42+
- source: /nemo/megatron-bridge/nightly/models/nemotron/nemotron3.5-super-vl-text-only.html
43+
destination: /nemo/megatron-bridge/nightly/supported-models/supported-models

‎docs/fern/versions/nightly.yml‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,7 @@ navigation:
134134
path: ./nightly/pages/models/nemotron/nemotron3-super.mdx
135135
- page: Nemotron 3.5 Lightning
136136
path: ./nightly/pages/models/nemotron/nemotron3.5-lightning.mdx
137-
- page: Nemotron 3.5 Super VL
138-
path: ./nightly/pages/models/nemotron/nemotron3.5-super-vl.mdx
139-
- page: Nemotron-3.5 Super Text-only
140-
path: ./nightly/pages/models/nemotron/nemotron3.5-super-vl-text-only.mdx
137+
# Super VL guides remain in GitHub, but are excluded from publication.
141138
- page: Nemotron 3 Ultra
142139
path: ./nightly/pages/models/nemotron/nemotron3-ultra.mdx
143140
- page: Nemotron Nano V2 VL

‎docs/fern/versions/nightly/pages/models/README.mdx‎

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Choose a model to open its interactive import/export and training configurations. Every option comes directly from an authoritative YAML verification card; independent fields are never combined into synthetic commands.
66

7-
Current inventory: **28 model cards** and **400 concrete configurations**.
7+
Current inventory: **26 model cards** and **364 concrete configurations**.
88

99
Each model page lets you select import/export, pretraining, benchmarking, SFT, LoRA, or long-context SFT and immediately see the exact command and expected result for the recorded precision and GPU.
1010

@@ -112,7 +112,7 @@ Choose a model to inspect its recorded import/export, training, and precision co
112112
<section class="verification-provider-card">
113113
<header class="verification-provider-heading">
114114
<strong>NVIDIA</strong>
115-
<span>8 models</span>
115+
<span>6 models</span>
116116
</header>
117117
<div class="verification-provider-models">
118118
<a class="verification-model-link" href="nemotron/nemotron-3-omni#verified-nemotron-3-nano-omni-30b-a3b-reasoning">
@@ -141,14 +141,6 @@ Choose a model to inspect its recorded import/export, training, and precision co
141141
<strong title="nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16">NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16</strong>
142142
<span class="verification-status verification-status--verified" title="Verified">✓ Verified</span>
143143
</a>
144-
<a class="verification-model-link" href="nemotron/nemotron3.5-super-vl#verified-nemotron-3.5-super-vl-120b-a12b">
145-
<strong title="nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16">NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16</strong>
146-
<span class="verification-status verification-status--partial" title="Partial">◐ Partial</span>
147-
</a>
148-
<a class="verification-model-link" href="nemotron/nemotron3.5-super-vl-text-only#verified-nemotron-3.5-super-vl-120b-a12b-text-only">
149-
<strong title="nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16">NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16</strong>
150-
<span class="verification-status verification-status--partial" title="Partial">◐ Partial</span>
151-
</a>
152144
</div>
153145
</section>
154146
<section class="verification-provider-card">

‎docs/fern/versions/nightly/pages/models/nemotron/index.mdx‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ Nemotron model documentation is organized by model variant.
1010
| Nemotron-3 Nano 4B | [nemotron3-nano-4b.md](nemotron3-nano-4b.md) |
1111
| Nemotron-3 Super | [nemotron3-super.md](nemotron3-super.md) |
1212
| Nemotron-3.5 Lightning | [nemotron3.5-lightning.md](nemotron3.5-lightning.md) |
13-
| Nemotron-3.5 Super VL | [nemotron3.5-super-vl.md](nemotron3.5-super-vl.md) |
14-
| Nemotron-3.5 Super Text-only | [nemotron3.5-super-vl-text-only.md](nemotron3.5-super-vl-text-only.md) |
1513
| Nemotron-3 Ultra | [nemotron3-ultra.md](nemotron3-ultra.md) |
1614
| Nemotron Nano V2 VL | [nemotron-nano-v2-vl.md](nemotron-nano-v2-vl.md) |
1715
| Nemotron-3 Nano Omni | [nemotron-3-omni.md](nemotron-3-omni.md) |

‎docs/models/README.md‎

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Choose a model to open its interactive import/export and training configurations. Every option comes directly from an authoritative YAML verification card; independent fields are never combined into synthetic commands.
66

7-
Current inventory: **28 model cards** and **400 concrete configurations**.
7+
Current inventory: **26 model cards** and **364 concrete configurations**.
88

99
Each model page lets you select import/export, pretraining, benchmarking, SFT, LoRA, or long-context SFT and immediately see the exact command and expected result for the recorded precision and GPU.
1010

@@ -112,7 +112,7 @@ Choose a model to inspect its recorded import/export, training, and precision co
112112
<section class="verification-provider-card">
113113
<header class="verification-provider-heading">
114114
<strong>NVIDIA</strong>
115-
<span>8 models</span>
115+
<span>6 models</span>
116116
</header>
117117
<div class="verification-provider-models">
118118
<a class="verification-model-link" href="nemotron/nemotron-3-omni.html#verified-nemotron-3-nano-omni-30b-a3b-reasoning">
@@ -139,14 +139,6 @@ Choose a model to inspect its recorded import/export, training, and precision co
139139
<strong title="nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16">NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16</strong>
140140
<span class="verification-status verification-status--verified" title="Verified">✓ Verified</span>
141141
</a>
142-
<a class="verification-model-link" href="nemotron/nemotron3.5-super-vl.html#verified-nemotron-3.5-super-vl-120b-a12b">
143-
<strong title="nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16">NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16</strong>
144-
<span class="verification-status verification-status--partial" title="Partial">◐ Partial</span>
145-
</a>
146-
<a class="verification-model-link" href="nemotron/nemotron3.5-super-vl-text-only.html#verified-nemotron-3.5-super-vl-120b-a12b-text-only">
147-
<strong title="nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16">NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-BF16</strong>
148-
<span class="verification-status verification-status--partial" title="Partial">◐ Partial</span>
149-
</a>
150142
</div>
151143
</section>
152144
<section class="verification-provider-card">

‎docs/models/nemotron/index.md‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ nemotron3-nano.md
1111
nemotron3-nano-4b.md
1212
nemotron3-super.md
1313
nemotron3.5-lightning.md
14-
nemotron3.5-super-vl.md
15-
nemotron3.5-super-vl-text-only.md
1614
nemotron3-ultra.md
1715
nemotron-nano-v2-vl.md
1816
nemotron-3-omni.md
@@ -26,8 +24,6 @@ nemotron-3-omni.md
2624
| Nemotron-3 Nano 4B | [nemotron3-nano-4b.md](nemotron3-nano-4b.md) |
2725
| Nemotron-3 Super | [nemotron3-super.md](nemotron3-super.md) |
2826
| Nemotron-3.5 Lightning | [nemotron3.5-lightning.md](nemotron3.5-lightning.md) |
29-
| Nemotron-3.5 Super VL | [nemotron3.5-super-vl.md](nemotron3.5-super-vl.md) |
30-
| Nemotron-3.5 Super Text-only | [nemotron3.5-super-vl-text-only.md](nemotron3.5-super-vl-text-only.md) |
3127
| Nemotron-3 Ultra | [nemotron3-ultra.md](nemotron3-ultra.md) |
3228
| Nemotron Nano V2 VL (deprecated) | [nemotron-nano-v2-vl.md](nemotron-nano-v2-vl.md) |
3329
| Nemotron-3 Nano Omni | [nemotron-3-omni.md](nemotron-3-omni.md) |

‎scripts/docs/generate_model_verification_catalog.py‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,13 @@
133133
"qwen3.6-35b-a3b": "Qwen3.6-35B-A3B",
134134
"qwen3.8-27b": "Qwen3.8-27B",
135135
}
136+
# Retain the cards and canonical sources, but do not link unpublished guides.
137+
UNPUBLISHED_MODEL_DOCS = frozenset(
138+
{
139+
"models/nemotron/nemotron3.5-super-vl.md",
140+
"models/nemotron/nemotron3.5-super-vl-text-only.md",
141+
}
142+
)
136143
MODEL_INTRO_SOURCES = {
137144
"glm5-2": "models/glm/glm5.md",
138145
"gpt-oss-120b": "models/gpt_oss/gpt-oss.md",
@@ -797,6 +804,7 @@ def _model_explorer(entries: list[dict[str, object]], *, heading_level: int = 2,
797804
def render_supported_models_page(catalog: dict[str, object], repo_root: Path, *, fern: bool) -> str:
798805
"""Render the generated Supported Models directory for Sphinx or Fern."""
799806
models = [_mapping(model, "catalog model") for model in catalog["models"]]
807+
models = [model for model in models if _find_model_doc(repo_root, model) not in UNPUBLISHED_MODEL_DOCS]
800808
entry_count = sum(len(model["entries"]) for model in models)
801809
lines = [
802810
FERN_GENERATED_NOTICE if fern else GENERATED_NOTICE,
@@ -813,7 +821,7 @@ def render_supported_models_page(catalog: dict[str, object], repo_root: Path, *,
813821
"SFT and immediately see the exact command and expected result for the recorded precision and GPU.",
814822
"",
815823
]
816-
lines.extend(_model_directory(catalog, repo_root, fern=fern))
824+
lines.extend(_model_directory({**catalog, "models": models}, repo_root, fern=fern))
817825
lines.extend(
818826
[
819827
"## Verification status",

‎tests/unit_tests/doc_consistency/test_model_verification_catalog.py‎

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def test_normalizer_never_generates_a_cartesian_product(generator: ModuleType, t
178178
def test_catalog_is_a_simple_model_directory(generator: ModuleType, catalog: dict[str, object]) -> None:
179179
page = generator.render_supported_models_page(catalog, REPO_ROOT, fern=False)
180180

181-
assert page.count('class="verification-model-link"') == len(catalog["models"])
181+
assert page.count('class="verification-model-link"') == len(catalog["models"]) - 2
182182
assert "never combined into synthetic commands" in page
183183
assert 'href="deepseek/deepseek-v3.html#verified-deepseek-v3"' in page
184184
assert "NVIDIA-Nemotron-3-Super-120B-A12B-BF16</strong> <!-- pragma: allowlist secret -->" in page
@@ -295,16 +295,49 @@ def test_model_page_merge_preserves_intro_and_replaces_old_sections(generator: M
295295
assert generator._merge_model_page(original, section, title="New title").startswith("# New title\n\n")
296296

297297

298-
def test_nemotron_text_only_guide_is_in_both_navigation_trees() -> None:
299-
guide = "nemotron3.5-super-vl-text-only"
298+
@pytest.mark.parametrize("guide", ["nemotron3.5-super-vl", "nemotron3.5-super-vl-text-only"])
299+
def test_unpublished_nemotron_guides_remain_in_sources_without_public_links(
300+
generator: ModuleType, catalog: dict[str, object], guide: str
301+
) -> None:
300302
index = (REPO_ROOT / "docs/models/nemotron/index.md").read_text(encoding="utf-8")
301303
fern_index = (REPO_ROOT / "docs/fern/versions/nightly/pages/models/nemotron/index.mdx").read_text(encoding="utf-8")
302304
nav = (REPO_ROOT / "docs/fern/versions/nightly.yml").read_text(encoding="utf-8")
303305

304-
assert f"\n{guide}.md\n" in index
305-
assert f"]({guide}.md)" in index
306-
assert f"]({guide}.md)" in fern_index
307-
assert f"path: ./nightly/pages/models/nemotron/{guide}.mdx" in nav
306+
assert guide not in index
307+
assert guide not in fern_index
308+
assert f"path: ./nightly/pages/models/nemotron/{guide}.mdx" not in nav
309+
assert (REPO_ROOT / f"docs/models/nemotron/{guide}.md").is_file()
310+
assert (REPO_ROOT / f"docs/fern/versions/nightly/pages/models/nemotron/{guide}.mdx").is_file()
311+
for fern in (False, True):
312+
page = generator.render_supported_models_page(catalog, REPO_ROOT, fern=fern)
313+
assert guide not in page
314+
assert "nemotron3-super" in page
315+
assert "nemotron3-ultra" in page
316+
assert f"**{len(catalog['models']) - 2} model cards**" in page
317+
318+
319+
def test_unpublished_nemotron_redirects_target_the_nightly_catalog() -> None:
320+
config = yaml.safe_load((REPO_ROOT / "docs/fern/docs.yml").read_text(encoding="utf-8"))
321+
redirects = {redirect["source"]: redirect["destination"] for redirect in config["redirects"]}
322+
paths = (
323+
"supported-models/nemotron/nemotron-3-5-super-vl",
324+
"supported-models/nemotron/nemotron-3-5-super-text-only",
325+
"models/nemotron/nemotron3.5-super-vl.html",
326+
"models/nemotron/nemotron3.5-super-vl-text-only.html",
327+
)
328+
for version in ("", "nightly/"):
329+
for path in paths:
330+
assert (
331+
redirects[f"/nemo/megatron-bridge/{version}{path}"]
332+
== "/nemo/megatron-bridge/nightly/supported-models/supported-models"
333+
)
334+
# The frozen default version lacks this landing page; nightly contains it.
335+
nav = yaml.safe_load((REPO_ROOT / "docs/fern/versions/nightly.yml").read_text(encoding="utf-8"))
336+
section = next(item for item in nav["navigation"] if item.get("section") == "Supported Models")
337+
assert any(
338+
item.get("page") == "Supported Models" and item.get("path") == "./nightly/pages/models/README.mdx"
339+
for item in section["contents"]
340+
)
308341

309342

310343
def test_generated_outputs_and_navigation_are_current(generator: ModuleType, catalog: dict[str, object]) -> None:

0 commit comments

Comments
 (0)