Skip to main content
Each row names the run that proves it. Where nothing proves it, the row says so and links what does exist. Every “proven” cell points at a receipt or a test target you can run yourself. One fact frames all of it: almost everything below was run on Linode LKE, most of it on throwaway clusters, once each. Our own production is the only estate with history that this machinery has touched. Your environment is a different one, and the gaps are where you come in — see running it somewhere new at the bottom.

Install and adoption

Provider profiles

install.sh has no per-provider branches; a profile is a small profile.env, and each carries a PROFILE_TESTED flag the installer prints on every run.

The delivered software

The upgrade reporter

kit/report/ is the door for a deployment that already exists. It is fixture-tested end to end and has never read a real estate.

The channel and its guarantees

Day-2

The from-docs run, 2026-08-27

A fresh anonymous clone, on a throwaway Linode cluster provisioned for the purpose, following Install and Upgrade as written. Two defects the fixtures could not have found, both fixed the same day. Node capacity printed as 8138636Ki, and because the grouping key carried that exact figure, two identical machines appeared as two shapes — on a fifty-node cluster that is fifty rows instead of one. Capacities now round to 7.8Gi and identical nodes group. And one that mattered more. Run with the install command the docs carried that morning, every Vexa image was refused by our own policy — no signatures found — because without --signature-repository the installer strips the repository line from the admission policy and Kyverno looks for signatures beside the image on Docker Hub. The cluster installs clean, Argo reports Healthy, and not one Vexa pod is admitted. The flag is now in the documented command, in install.sh --help, and in the onboarding template. With it set, the signatures are found; verifying them needs the channel’s public key, which the operator holds.

Known gaps, and the issue each one lives in

Stated so you can pick one up, not so we look complete.

Running it somewhere new

Running this in an environment nobody here has seen is the contribution. A row moves from not yet to proven when someone posts the artifacts that make it true, and most of those artifacts are things a normal install produces anyway:
  • The station report. vexa_validate.py writes station-report.yaml — one commented file carrying your provider profile, your values with every secret-shaped value replaced by REDACTED, the contract, and the preflight and smoke receipts, each with the sha256 of its own text. Read it, then send it. That report is exactly what a PROFILE_TESTED=no line is waiting for.
  • What broke. Open an issue with the preflight output and the refusal message. Half the findings on this page arrived that way — from a run that failed, not one that passed.
  • A patch. The reporter takes a new collector as one function; a provider profile is one small profile.env. Everything is Apache-2.0, inbound and outbound.
Commits carry a DCO sign-off — git commit -s, name and email your own. The whole of it is in CONTRIBUTING.md, and it is two things: the license and the sign-off. Next: Install · Upgrade · Environments · Verify