Repository navigation
Add v0.2.0 documentation and update website for release - #6
Conversation
Cut the docs version and document everything v0.2.0 adds over v0.1.7. Versioning: - Rename vesrions.json to versions.json. The typo meant Docusaurus never loaded versioned_docs/, so the archived 0.1.7 tree was dead weight and the version dropdown had nothing to switch to. - Snapshot the current docs as version-0.1.7 and move "current" to v0.2.0, served at /docs/0.2.0. Point the homepage and footer links at it. New pages: - What's New in v0.2.0, including the two upgrade-affecting changes (config precedence, telemetry now opt-in). - Remote Modules: CONFIGSPACE, protoconf.lock, protoconf mod, @repo// loads. - Staged Rollouts: ConfigRollout/RolloutStage, channel and percentile targeting, cooldowns and expiry. - Running on Kubernetes: the configmaps backend, RBAC, key-to-ConfigMap mapping. - Observability: Prometheus metrics, opt-in OTel, structured logging. - Formatting Starlark Sources: protoconf fmt. - CLI Configuration Reference: precedence, and the flag/env pair for every option on every component. Updated pages: - consume-config-updates: current service definition, GetConfig, and the plain-HTTP GET /v1/config/... endpoint. - validation: protovalidate constraints alongside the Starlark validators. - getting-started: install options, fmt, devserver, next steps; fix the missing duration.proto import and the materialized_config path. - running-in-production: configmaps, correct -http-address default (:4380, was documented as :9143), rollout/otel/log flags. - inserting-configurations, production-architecture: configmaps, metadata, rollouts. Also bump @mdx-js/react to ^3.0.0. Docusaurus 3 needs it; on v1 the theme's Heading component never loaded, so no page had anchor links and every build reported its own headings as broken anchors. Both are gone now. Add the v0.2.0 release announcement to the blog. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
The post had no truncate marker, so the index rendered its entire body — now directly under the v0.2.0 announcement, which does truncate. Adds the marker after the opening paragraph; the post's own page is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
www-protoconf-dev | 55381a6 | Commit Preview URL Branch Preview URL |
Sep 14 2026, 07:40 AM |
|
|
Correction to the timestamp in my comment above: the first push ( Generated by Claude Code |
The Workers project www-protoconf-dev is connected to this repo but has nothing to deploy — there is no wrangler config and no entrypoint — so every build failed immediately (0s, before install or build). Adds wrangler.jsonc serving the Docusaurus output as static assets, with no Worker script: - html_handling "drop-trailing-slash" to match docusaurus.config.js's trailingSlash: false, so /docs/intro is served from docs/intro.html and there is one canonical URL per page. - not_found_handling "404-page" so Docusaurus's own build/404.html is served. Pins wrangler as a devDependency so the deploy command uses a known version rather than whatever npx resolves. Verified with `wrangler deploy --dry-run`, which reads all 267 files from build/. The build itself is configured in the Cloudflare dashboard, not here, and still needs: build command `yarn build`, deploy command `npx wrangler deploy`. Leaves the GitHub Pages workflow and CNAME in place. They should come out only once a Cloudflare deploy is confirmed working, so the live site is not left without a publisher in between. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
Update: config pushed, and it did not fix the Workers buildSuperseding part of my earlier comment. At the maintainer's request I pushed The build failed again on That result corrects my earlier diagnosis. I attributed the failure to the missing I can't narrow it further from here. The check run exposes no log text to GitHub — What would settle it: open the build log`` and read the error. If it names something fixable in the repo, I'll fix it.
Generated by Claude Code |
784f193 pinned wrangler as a devDependency. wrangler 4 requires Node >=22 and both workflows pin node-version 18, so `yarn install --frozen-lockfile` failed on the engines check: error wrangler@4.128.0: The engine "node" is incompatible with this module. Expected version ">=22.0.0". Got "18.20.8" It passed locally only because this machine runs Node 22 — the frozen-lockfile check was run under the wrong Node, which is what let it through. Cloudflare's build image supplies wrangler for `npx wrangler deploy`, so the dependency was never needed. wrangler.jsonc is unaffected and still drives the deploy; a note there records why wrangler must not be added back unless the workflows move to Node 22 first. Reproduced the failure and verified the fix under Node 18.20.8, matching CI: `yarn install --frozen-lockfile` then `yarn build`, both clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
763533c regenerated yarn.lock, which moved @docusaurus/core from 3.1.1 to 3.10.2 (both satisfy the ^3.0.0 range in package.json). Docusaurus 3.10 requires Node >=20, but both workflows pinned node-version 18, so `yarn install --frozen-lockfile` failed the engines check: error @docusaurus/core@3.10.2: The engine "node" is incompatible with this module. Expected version ">=20.0". Got "18.20.8" Bumps both workflows to Node 22 — current LTS, and above the >=20 floor with room to spare. deploy.yml needs it too: it runs the same install and would fail identically on main after merge. Also corrects `engines.node`, which claimed >=16.14 while the dependency tree has required >=20 since the lockfile regeneration. Verified by reproducing the failure under Node 18.20.8 (matching CI), then running `yarn install --frozen-lockfile` and `yarn build` clean under Node 22. Checked the Docusaurus 3.1.1 -> 3.10.2 jump for fallout: no broken links or anchors, and the rendered pages are unchanged. It emits one new deprecation warning, for `onBrokenMarkdownLinks` being removed in Docusaurus v4, which is left alone as a separate concern. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
6d6bb03 migrated the repo to Yarn Berry: it added "packageManager": "yarn@4.18.0", .yarnrc.yml (nodeLinker: node-modules) and a Berry-format lockfile. The workflows were still installing with the runner's bundled Yarn 1, which refuses to run at all once packageManager is set: error This project's package.json defines "packageManager": "yarn@4.18.0". However the current global version of Yarn is 1.22.22. Enables Corepack before actions/setup-node, so setup-node's yarn cache detection resolves Yarn 4 rather than Yarn 1, and switches the install to --immutable, the Berry equivalent of --frozen-lockfile. (Yarn 4 still accepts --frozen-lockfile but warns YN0050 that it is deprecated; the corepack step is what actually unbreaks the job.) Also stops tracking .yarn/install-state.gz. It is a local install cache Yarn rewrites on every install -- it already came back modified here after a single `yarn install` -- so committing it churns ~1.8MB of binary per install. Yarn's own guidance is to ignore it, so .gitignore now carries the standard Berry block. Verified with Yarn 4.18.0: `yarn install --immutable` resolves the committed lockfile cleanly and `yarn build` succeeds with no broken links or anchors. Confirmed first that the pre-fix command fails exactly as CI reported. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
`curl -s https://protoconf.dev/install | sh` is now the installation method the docs lead with, in place of "download a release and put it on your PATH". static/install is copied verbatim into the build by Docusaurus, so it is served at /install with no build step. It resolves the latest release (via GitHub's /releases/latest redirect, which has no API rate limit), downloads the archive for the detected platform, verifies it against the checksums.txt published with the release, and installs the binary into /usr/local/bin, or ~/.local/bin when that is not writable. --version/--dir flags and the PROTOCONF_VERSION/PROTOCONF_INSTALL_DIR environment variables override both. static/_headers serves the extensionless file as text/plain on Cloudflare so it can be read in a browser before it is run. The one-liner uses `curl -s` without -L, so the apex domain has to serve the site rather than redirect to www; that requirement is written down in README.md next to the script. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
The script now takes the package as its one positional argument, defaulting
to `protoconf`:
curl -s https://protoconf.dev/install | sh -s -- protoconf-terraform
Everything except the release repository, the platform matrix and the docs
link is shared, so a new package is one case in select_package(). The two
matrices already differ — protoconf publishes a linux/386 build and
protoconf-terraform does not — so the platform check now asks what the
selected package actually publishes instead of hardcoding one exception.
The Terraform integration page leads with the script and keeps Homebrew and
the releases page as alternatives; Getting Started points at the package
argument from the protoconf install section.
Verified against both packages: protoconf v0.2.0-rc3 and protoconf-terraform
v0.1.6 and v0.1.5 install and run, positionally, through the environment
variables and under dash through a pipe. Unknown packages, a second package
and unknown flags all fail with a message rather than a download.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
…ntation
The page illustrated the idea with invented APIs — a four-field Component
message, `load("platform_engineering.v1/component.star", ...)`, and a
`finops.TaggingPolicy` that exists nowhere. smintz/platform-engineering is a
working platform built on protoconf, so the page now describes that one: the
real platform.v1.Component (including the configs map of Any, which is what
lets one message carry every team's output), hooks and the four markers,
drivers as the unit of technology choice, objectives rendered by a monitoring
driver, and the CI pipeline derived from what each Terraform state reads.
Every snippet is trimmed from a file in that repository rather than written
for the page. The stakeholder sections are kept — they are the use case — but
each now points at the mechanism that actually serves it, and the security and
FinOps sections use the primitives the platform has (a defaults macro,
labels + SelectComponents, per-component state) instead of inventing modules.
Adds links to the modules, validation, protobuf-any, multiple-outputs and
output-formats pages, which the workspace layout depends on, and a closing
section on running the reference stack and the OpenTelemetry demo example.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8
This PR adds comprehensive documentation for protoconf v0.2.0 and updates the website to reflect the new release.
Summary
Adds new documentation pages covering v0.2.0 features, updates existing docs with v0.2.0 changes, and configures the Docusaurus site to support versioned documentation with v0.2.0 as the current version and v0.1.7 as a legacy version.
Key Changes
New Documentation Pages:
docs/cli-reference.mdx- Complete CLI configuration reference for all commands (agent, serve, compile, insert, mutate, mod) with flags, environment variables, defaults, and descriptionsdocs/whats-new-0.2.0.mdx- Feature overview and upgrade guide from v0.1.7, highlighting breaking changes in configuration precedence and telemetry defaultsdocs/production/kubernetes.mdx- Guide for running protoconf on Kubernetes using the new ConfigMaps backenddocs/production/rollouts.mdx- Documentation for staged rollouts feature with examples and observabilitydocs/production/observability.mdx- Prometheus metrics and OpenTelemetry configuration guidedocs/advanced-usage/modules.mdx- Remote module dependency management with CONFIGSPACE and protoconf.lockdocs/advanced-usage/formatting.mdx-protoconf fmtusage and CI integrationblog/2026-09-03-protoconf-0-2-0.mdx- Release announcement blog postUpdated Documentation:
docs/consume-config-updates.mdx- AddedGetConfigRPC and HTTP endpoint documentation, updated service definition with v0.2.0 changesdocs/validation.mdx- Added protovalidate constraints in proto files alongside existing Starlark validatorsdocs/getting-started.mdx- Added container image installation, updated sidebar positiondocs/production/running-in-production.mdx- Added ConfigMaps backend referencedocs/production/inserting-configurations.mdx- Updated to mention ConfigMaps backendSite Configuration:
docusaurus.config.jsto set v0.2.0 as current version and v0.1.7 as legacy versionversions.jsonto track versioned documentationMinor Updates:
versions.jsonfilename (wasvesrions.json)https://claude.ai/code/session_01JvFenuqwiFW5vS3kf1Ezo8