docs: restore stable Registryctl install URL - #638
Conversation
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ee966f4544
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| tag=vX.Y.Z | ||
| curl -fsSLO "https://github.com/registrystack/registry-stack/releases/download/${tag}/registryctl-${tag}-install.sh" | ||
| bash "./registryctl-${tag}-install.sh" | ||
| curl -fsSL https://docs.registrystack.org/install.sh | bash |
There was a problem hiding this comment.
Publish the stable installer before directing users to it
Until a release containing this generator is promoted, this command returns 404: .github/workflows/docs-pages.yml copies the canonical root only from the exact released archive, docsets.yaml still identifies v0.15.2 as released, and that release's pinned tree contains neither public/install.sh nor another installer route. Because this README becomes public on main immediately, newcomers lose the previously working versioned-release installation path; retain that path until the stable asset is deployed or make publication atomic with this change.
Useful? React with 👍 / 👎.
| "generate": "node scripts/generate-data.mjs && node scripts/generate-project-starters.mjs && node scripts/generate-registryctl-example-overlays.mjs && node scripts/generate-authoring-reference.mjs && node scripts/generate-diagnostic-references.mjs && node scripts/fetch-openapi.mjs && node scripts/sync-repo-docs.mjs && node scripts/generate-sidebar.mjs", | ||
| "generate:archive": "node scripts/generate-data.mjs && node scripts/generate-registryctl-example-overlays.mjs && node scripts/fetch-openapi.mjs && node scripts/sync-repo-docs.mjs && node scripts/generate-sidebar.mjs", | ||
| "generate": "node scripts/generate-data.mjs && node scripts/generate-project-starters.mjs && node scripts/generate-registryctl-installer.mjs && node scripts/generate-registryctl-example-overlays.mjs && node scripts/generate-authoring-reference.mjs && node scripts/generate-diagnostic-references.mjs && node scripts/fetch-openapi.mjs && node scripts/sync-repo-docs.mjs && node scripts/generate-sidebar.mjs", | ||
| "generate:archive": "node scripts/generate-data.mjs && node scripts/generate-registryctl-installer.mjs && node scripts/generate-registryctl-example-overlays.mjs && node scripts/fetch-openapi.mjs && node scripts/sync-repo-docs.mjs && node scripts/generate-sidebar.mjs", |
There was a problem hiding this comment.
Keep the current installer out of historical archive builds
When build:archives or archive bootstrapping rebuilds an older docset, this command always copies the working tree's crates/registryctl/install.sh; unlike the other current-source artifacts, the installer is not staged from the docset's pinned source by stagePinnedGeneratedArtifacts. Consequently an old archive such as v0.15.2 gains a new /install.sh containing the current release version, changing its locked tree digest and making the documented immutable rebuild fail. The archive generator needs to source or omit this asset according to the selected docset rather than unconditionally using the current checkout.
AGENTS.md reference: AGENTS.md:L82-L84
Useful? React with 👍 / 👎.
| When your acceptance process requires publisher authentication, use the tag-frozen | ||
| `release/VERIFY.md` linked by the installer instead of this quick path. |
There was a problem hiding this comment.
Provide verification instructions before executing the installer
For users whose acceptance process requires publisher authentication, this replacement is circular: the page no longer exposes an exact tag or direct tag-frozen verification link and says to use the link printed by the installer, but its only command pipes the installer directly into Bash. install.sh prints that link and then continues without a pause into replacing the installed files, so the reader must execute unauthenticated code and complete the quick-install path before learning how to authenticate it. Preserve a pre-execution download and tag-frozen verification route for this scenario.
AGENTS.md reference: AGENTS.md:L79-L81
Useful? React with 👍 / 👎.
| curl --proto '=https' --tlsv1.2 --fail --location \ | ||
| --output "$installer" \ | ||
| "https://github.com/registrystack/registry-stack/releases/download/${tag}/${installer}" | ||
| curl -fsSL https://docs.registrystack.org/install.sh | bash |
There was a problem hiding this comment.
Pin installer commands in versioned tutorials
When this page is served from a historical /v/<version>/ docset after a newer release is promoted, the absolute canonical URL still downloads the newest root installer, while the tutorial's commands, fixtures, and expected output remain frozen to the older release. This makes archived tutorials install a potentially incompatible Registryctl version even though generate:archive emits a matching installer inside each versioned docset; render a docset-aware installer URL or retain an exact-tag installation command for archived builds.
Useful? React with 👍 / 👎.
Summary
https://docs.registrystack.org/install.shWhy
The documented quick install required readers to choose a tag, construct a release asset name, download it, and invoke it separately. The canonical docs root is already promoted from an exact released docs archive, so it can serve that release's installer at a stable first-party URL without relying on mutable source from
main.User impact
Readers can install the latest promoted Registryctl release with:
curl -fsSL https://docs.registrystack.org/install.sh | bashThe higher-assurance signature and provenance path remains available through the tag-frozen
release/VERIFY.mdlink printed by the installer.Validation
npm test: 269 passedcrates/registryctl/install.shbyte-for-byte