Skip to content

site: cut docs version 0.7 and serve the in-progress docs as "dev" - #121

Merged
esnible merged 1 commit into
mainfrom
docs/version-0-7
Sep 9, 2026
Merged

site: cut docs version 0.7 and serve the in-progress docs as "dev"#121
esnible merged 1 commit into
mainfrom
docs/version-0-7

Conversation

@Ibrahim2595

Copy link
Copy Markdown
Contributor

What & why

The site serves one unversioned set of docs. This captures the current set as v0.7 and makes the in-progress docs a separate dev version.

That separation is what lets the team edit docs/ in rossoctl/rossoctl and see the result on the public site immediately, without that work reaching a reader who needs the released documentation.

Route Version Source
/docs/* v0.7 (latest) A frozen snapshot in versioned_docs/version-0.7/
/docs/dev/* dev Synced from rossoctl/rossoctl:docs/ on every build

Verified against the live site

This is the check that matters, because a version cut must not change what a reader sees today.

The 27 routes that v0.7 generates are identical to the 27 routes in the sitemap of www.rossoctl.dev. Not equal in count — identical, compared path by path.

v0.7 routes: 27   live routes: 27
IDENTICAL to the live site

So this PR moves no page that a reader can reach today. It only adds /docs/dev/*.

What it adds

  • versioned_docs/version-0.7/ and versioned_sidebars/version-0.7-sidebars.json, from docusaurus docs:version 0.7 run against the docs that main serves right now.
  • versions.json.
  • A version map in docusaurus.config.ts, derived from versions.json the way llm-d/llm-d.github.io derives it. Cutting the next release then needs only the snapshot plus that file — no version is hard-coded in the config, and nobody has to remember to edit it.
  • The docsVersionDropdown navbar item. It replaces the placeholder dropdown that was commented out while the docs were unpublished.

The dropdown lists released versions newest-first, then dev. The newest release is labelled v0.7 (latest) and carries a version badge; dev carries an unreleased banner.

The snapshot is pruned, deliberately

docusaurus docs:version copies the whole docs/ folder. Run as-is it produced 169 files, of which 20 publish.

The other 124 are internal notes — plans, research, retrospectives, QA matrices, developer guides — already excluded from the build by the config or by a draft: true marker. Committing them would freeze the team's working notes into this repo permanently, once per release, and they would contribute nothing to the rendered version.

The snapshot therefore holds:

  • the 20 pages the site publishes,
  • their _category_.json files,
  • and the assets those pages reference (7 SVG diagrams, 5 flow PNGs, the Mermaid sources, and the identity PDF that identity-guide.md links to).

44 files, 1.4 MB. The route comparison above confirms nothing needed was removed.

Merge order

This PR is first in a series of three. Each one is safe to merge on its own, in this order:

Order PR Repo Effect
1 this PR .github v0.7 at /docs/*, dev at /docs/dev/*. dev shows today's docs.
2 #120 .github Prepares the site for the restructured docs, and tunes the reading typography.
3 rossoctl/rossoctl#2530 rossoctl The restructured docs land, and dev starts showing them.

This PR must come first for one reason: v0.7 has to be snapshotted from the docs as they are now. After #2530 merges, the same command would capture the new structure and the old documentation would be unrecoverable from the site.

#120 is stacked on this branch, so its diff shows only its own changes. GitHub will retarget it to main when this merges.

After this

Nothing else is needed to make dev live. Once #2530 merges, /docs/dev/* shows the new documentation, and a change to docs/ in rossoctl/rossoctl appears on the site on the next build.

When v0.8 is ready, cutting it is two commands and one commit:

npm run sync-docs                     # get the docs to snapshot
npm run docusaurus docs:version 0.8   # writes versioned_docs/version-0.8 + versions.json

v0.8 then becomes (latest) at /docs/*, v0.7 moves to /docs/0.7/*, and dev stays at /docs/dev/*. The config needs no edit. Prune the new snapshot the same way, unless docs/ is clean by then — #2530 moves the internal notes under docs/_internal/, and #120 makes sync-docs.sh exclude that directory, which removes the need to prune at all.

Not in this PR

  • Redirects. Every current /docs/* URL keeps working, because v0.7 keeps the bare /docs/ base path. Redirects only become necessary when #2530 changes the paths inside dev, and then only for anyone who bookmarked a dev URL. Worth a follow-up with @docusaurus/plugin-client-redirects.
  • The commented-out footer doc links. They now resolve against v0.7, so they could be restored. Left alone to keep this PR to one purpose.

Acceptance tier

  • Tier 0 — Maintenance (bugfix / docs / dependency bump / no-behavior refactor)

Checklist

  • DCO sign-off, commit SSH-signed and verified
  • Follows repo conventions (no Co-Authored-By trailer)
  • npx tsc --noEmit passes
  • docusaurus build succeeds with zero broken links and zero warnings
  • v0.7 route list verified identical to the live sitemap

Assisted-By: Claude Code

The site has served one unversioned set of docs. This captures the current set as
v0.7 and makes the in-progress docs a separate "dev" version, so the team can
change docs/ in rossoctl/rossoctl and see the result on the public site without
that work reaching readers who need the released documentation.

Routes after this change:

  /docs/*        v0.7 (latest)   a frozen snapshot in versioned_docs/
  /docs/dev/*    dev             synced from rossoctl/rossoctl:docs/ on each build

What this adds:

- versioned_docs/version-0.7/ and versioned_sidebars/version-0.7-sidebars.json,
  from `docusaurus docs:version 0.7` against the docs that main serves today.
- versions.json.
- A version map in docusaurus.config.ts, derived from versions.json the way
  llm-d/llm-d.github.io derives it. Cutting the next release therefore needs only
  the snapshot plus that file, and no version is hard-coded in the config.
- The docsVersionDropdown navbar item, which replaces the placeholder dropdown
  that was commented out while the docs were unpublished.

The snapshot holds the 20 pages that the site publishes, and the assets that those
pages reference. `docusaurus docs:version` copies the whole folder, which would
have frozen 124 files of internal notes — plans, research, retrospectives, QA
matrices and developer guides — into this repo permanently. Those files are
excluded from the build already, by the config or by a `draft: true` marker, so
they add nothing to the snapshot.

Verified against the live site: the 27 routes that v0.7 generates are identical to
the 27 routes in the sitemap of www.rossoctl.dev. The version cut therefore changes
no page that a reader sees today; it only moves the in-progress docs to /docs/dev/.

Assisted-By: Claude (Anthropic AI) <noreply@anthropic.com>
Signed-off-by: IBRAHIM IBRAHIM <66755652+Ibrahim2595@users.noreply.github.com>
@netlify

netlify Bot commented Sep 9, 2026

Copy link
Copy Markdown

Deploy Preview for animated-crumble-fb8862 ready!

Name Link
🔨 Latest commit 305fd6f
🔍 Latest deploy log https://app.netlify.com/projects/animated-crumble-fb8862/deploys/6aa1bb1f0c352d0008b61854
😎 Deploy Preview https://deploy-preview-121--animated-crumble-fb8862.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@esnible esnible left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The central claim is the one worth checking independently, and it holds. I fetched both sitemaps and compared path by path rather than trusting the counts:

live www.rossoctl.dev   /docs/* routes:              27
deploy-preview-121      /docs/* routes (non-dev):    27
diff:                                        IDENTICAL
deploy-preview-121      /docs/dev/* routes (new):    27

So the version cut moves no page a reader can reach today; it only adds /docs/dev/*. That is exactly what the PR asserts.

Other claims verified:

Claim Verified
docs/ not committed; dev tracks rossoctl/rossoctl /docs is gitignored (.gitignore:11) and synced by scripts/sync-docs.sh; netlify.toml build is npm run sync-docs && npm run build
Pruned snapshot keeps every referenced asset Extracted all 12 asset references from the snapshot markdown and cross-checked against the 18 committed assets — nothing missing
Cutting v0.8 needs no config edit Simulated the version map with ["0.8","0.7"]: v0.8 to /docs/* labelled "v0.8 (latest)", v0.7 to /docs/0.7/*, dev unchanged; dropdown order ["0.8","0.7","current"] is correct
No version hard-coded in config LATEST_VERSION derives from versions.json[0]; the fs.existsSync fallback keeps a pre-first-cut repo building — which is the state main is in right now

The pruning rationale is convincing: freezing 124 files of internal working notes into this repo once per release would be a real cost, and the route comparison confirms nothing needed was dropped.

One note beyond the diff — onBrokenLinks: 'warn' (config line 50, outside this PR's hunks so I could not anchor a comment there) means a versioned snapshot can ship broken internal links without failing the build. The v0.7 snapshot's links all resolve today, but every future cut copies whatever link rot exists at that moment and freezes it, and a frozen version is the one place nobody will notice later. Worth considering 'throw', or a link-check step, before the next cut.

The merge-order reasoning is sound and worth preserving somewhere more durable than a PR body: "v0.7 has to be snapshotted from the docs as they are now, because after #2530 the old documentation is unrecoverable from the site" is a genuinely one-way door.

Author: Ibrahim2595 (MEMBER — maintainer)
Areas reviewed: Docs (versioned snapshot), TypeScript/site config, JSON
Agent/IDE config (.claude/.vscode): none
Commits: 1 commit, all signed-off: yes
CI status: passing (DCO, add-to-project, Netlify deploy preview built)

Assisted-By: Claude Code

Comment thread docusaurus.config.ts
v,
{
label: v === LATEST_VERSION ? `v${v} (latest)` : `v${v}`,
path: v === LATEST_VERSION ? '' : v,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

suggestion (for the v0.8 timeline, not this PR) — This line is the mechanism that relocates a version when a newer one is cut: path: '' for the latest, path: v for everything older. Correct, and the right default.

Worth planning for the consequence now rather than discovering it then. When v0.8 is cut, today's 27 URLs (/docs/getting-started/install, etc.) start serving v0.8 content, and the v0.7 content moves to /docs/0.7/getting-started/install. External links, bookmarks, and search results pointing at /docs/* will silently retarget to newer content rather than 404 — usually fine, occasionally not (a link shared in an issue thread as "how to install on 0.7" quietly becomes about 0.8).

If you want those to land on the version they were written against, that needs @docusaurus/plugin-client-redirects configured at v0.8 time. Nothing to change here; just much cheaper to decide before the cut than to retrofit after.

@esnible
esnible merged commit 1cadb8b into main Sep 9, 2026
6 checks passed
@github-project-automation github-project-automation Bot moved this from New/ToDo to Done in Rossoctl Issue Prioritization Sep 9, 2026
@esnible
esnible deleted the docs/version-0-7 branch September 9, 2026 20:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants