Content Management that can withstand the plundering hoards

Runtime configuration for contributors

The canonical flag, environment and default tables live in the customer runtime reference. Update that reference when changing flag parsing or generated workload configuration.

CMS

CMS main defines runtime wiring and flags. From repository root, run go run ./cms/cmd/cms --help for flag help. See CMS settings and the authentication Secret. CMS timeout and shutdown settings are currently fixed in code; editable configuration is tracked in TODO.md.

Volume preparation subcommand

cms prepare-volumes runs before the CMS as an init container. It changes ownership recursively without following symlinks. Keep its flags aligned with volume preparation settings and the operator-generated init container.

Public frontend

Frontend config parses flags and supported environment fallbacks. Run go run ./frontend/cmd/webserver --help for help. Validate default, malformed and explicit values when changing parsing; keep frontend settings accurate.

Controller

Controller main defines controller flags. Run go run ./controller/cmd/controller --help for help including Zap logging options. Changes to shared workload images affect existing Websites; keep controller settings and reconciliation tests aligned.

Build identity and HTTP headers

Application version is internal/buildinfo.Version in each module. A plain Go build reports dev; Docker accepts --build-arg VERSION=<build-name> and stamps it into the binary. This version is separate from content release IDs, theme semantic versions and the JavaScript package version.

Every HTTP listener sends Server: Viking <Component> <version> using CMS, Frontend or Controller as the component name. Apply buildinfo.WithServerHeader at the outer handler boundary, outside authentication; health, metrics, OAuth, redirects and errors must carry it too. Add response-level tests for accepted and rejected requests when changing listeners. Proxies must preserve the upstream header. See observability for verification and build commands.