# Pinned toolchain for the home-network-k3s dev container (the reproducible baseline). # The non-Python prereqs (OpenTofu, age, sops, flux) are Go binaries, so — per the # operator's rule — they are baked into a container image instead of a venv. The # conformance test toolchain (kyverno CLI, kyverno-json, chainsaw, yamllint, # check-jsonschema, yq, promtool) is likewise baked in so `make -C ci gate` runs here == in CI. # # NOTE: these are best-effort pins; bump to current stable if a download 404s at build. # The conformance-tool versions below MUST stay in lockstep with ci/versions.env. FEDORA_VERSION=44 OPENTOFU_VERSION=1.9.0 AGE_VERSION=1.2.1 SOPS_VERSION=3.9.4 FLUX_VERSION=2.4.0 # Aligned with ci/versions.env (KUBECTL=1.36.4) and the k3s 1.36.4 cluster. KUBECTL_VERSION=1.36.4 HELM_VERSION=3.16.0 # --- Conformance test toolchain (match ci/versions.env) ---------------------- KYVERNO_VERSION=1.19.0 # ci/versions.env pins KYVERNO_JSON_VERSION=0.0.5, but NO such release exists: # kyverno/kyverno-json's highest tag is v0.0.3 (git ls-remote --tags), and the # platform's own platform/kyverno/scripts/run-l0.sh already defaults to v0.0.3. # 0.0.5 is an erroneous pin in ci/versions.env — flagged to PM to correct there. # We bake the real, platform-aligned v0.0.3 so the image builds. kyverno-json is # NOT invoked by any static gate stage (ci/l0.sh uses `kyverno test` + check-jsonschema). KYVERNO_JSON_VERSION=0.0.3 CHAINSAW_VERSION=0.2.12 YAMLLINT_VERSION=1.35.1 YQ_VERSION=4.44.6 CHECK_JSONSCHEMA_VERSION=0.29.4 # promtool — the Prometheus rule linter + UNIT-TEST runner (`promtool test rules`), which is # what evaluates platform/**/*.promtool-test.yaml in the L0 gate # (conformance/tests/l0-static/alert-rules-unit-tested). # # THIS PIN IS NOT FREE-FLOATING: it MUST equal the Prometheus version actually running on prod, # because promtool is the rule ENGINE and a different major/minor can parse or evaluate PromQL # differently — a unit test green under one engine and red under the other is worse than no test. # Verified against the live cluster on 2026-09-12: # kubectl --context k3s-prod get prometheus -n monitoring -o jsonpath='{.items[*].spec.version}' # -> v3.14.0-distroless (image quay.io/prometheus/prometheus:v3.14.0-distroless) # When kube-prometheus-stack ships a new Prometheus to prod, bump this (and ci/versions.env) with # it; the L0 check asserts the promtool on PATH reports exactly this version, so a drifted # toolchain FAILS the gate instead of quietly testing with the wrong engine. # promtool ships INSIDE the prometheus release tarball (prometheus-.linux-.tar.gz), so # the version string here is a Prometheus release, not a separate promtool release. PROMTOOL_VERSION=3.14.0 # Proxmox provider (bpg/proxmox) is pinned in the tofu module (infra/tofu/versions.tf), not here.