Lane Test Doctrine

A repository document, rendered for the site. View source markdown.

What this command does. cub installer is a released, open-source plugin for the cub CLI. cub installer setup pulls a catalog package and writes its Kubernetes files locally. It does not apply those files to a cluster; use kubectl, Argo CD, or Flux for delivery. The generated scripts stop before doing any work when the plugin or kustomize is missing.

New to cub? Install the cub CLI first. You can pull and render public catalog packages without an account. Commands that save or change ConfigHub data require you to sign in.

Generated at: 2026-07-30T12:38:02.000Z UTC · source: committed helm-expt evidence for this rendered repository document.

UNOFFICIAL/EXPERIMENTAL

Lane tests are core corpus evidence. Every chart-recipe-variant row should be tracked against the same lane set, even when the current state is missing. Missing live evidence is backlog, not invisible work.

Outcome Standard

Tasks and proof lanes should name the user-visible outcome first. A task is not complete because a script, doc, or generated row exists. It is complete when the repo has committed evidence for the promised outcome and the verifier fails if that evidence becomes stale.

The target outcome for the catalog is:

Every supported Helm chart default and declared main choice is reproducible,
ConfigHub-reviewable, live-cluster verified, and tied to receipts.

In this doctrine, "main choice" means every published recipe/package base that the catalog presents as a supported install shape, plus any derived ConfigHub variant that the docs present as a supported post-render operating choice. Default-only proof is not enough when the chart has a declared non-default main choice such as existing-secret, no-crds, server-only, ClusterIP, ingress, HA, or storage mode.

For a chart-choice row to be called fully proven, the outcome is:

OutcomeRequired evidence
Reproducible renderfresh or receipt-backed Helm-equivalence evidence, rendered object digest, and matching installer setup check.
ConfigHub reviewabilityupload proof, linked Units, server-side derived-variant clone where applicable, function scan receipt, and safe-ops receipt.
Live cluster truthlocal-kind or equivalent Kubernetes observation receipt that checks applied objects and meaningful runtime state, not just file generation.
GitOps/OCI truthConfigHub Units published through OCI and reconciled by Argo or Flux, with sync and runtime evidence.
Helm-vs-installer parityrequired live parity: live Helm deployment on one vanilla cluster compared with live cub installer render/apply on a second vanilla cluster.
ConfigHub delivery paritylive Helm deployment compared with ConfigHub delivery paths such as controller-driven OCI and kubectl/apply.

If any required evidence is missing, the row remains useful but incomplete. The matrix should say missing; docs should not flatten that into "verified."

The generated control surface is:

data/lane-test-matrix/variant-lanes.csv
data/outcome-coverage/summary.md

Regenerate or verify it with:

npm run lane-tests:generate
npm run lane-tests:verify

Required Lanes

LaneEvidence
helm_template_vs_installer_setupA passing Helm-equivalence receipt plus an installer package setupChecks[] entry for the variant.
confighub_upload_variant_scan_safe_opsConfigHub upload proof, server-side variant clone, function scan receipt, and safe-ops receipt.
local_kind_kubectl_applyA committed local-kind observation receipt proving the rendered object set applies and reaches expected runtime checks.
confighub_oci_argo_liveA receipt from tests/chart-install-test or its successor proving ConfigHub Units were published through OCI and reconciled by Argo or Flux.
live_helm_vs_confighub_dual_compareHistorical combined lane that installs the chart with Helm and compares it against ConfigHub delivery paths. Keep these receipts as useful evidence. The required 100% live parity lane should use the two-cluster kind harness described in Two-Cluster Helm Parity Harness.

Live Evidence Funnel

Large charts can involve dozens or hundreds of ConfigHub Units. A single status label is not enough to explain what happened. Live receipts and user-facing tools should report the deployment funnel:

Funnel stepQuestion
ConfigHub UnitsWere the expected Units uploaded and applied to the target?
GitOps sourceDid the controller pull the expected OCI or Git revision?
GitOps syncDid the controller sync the desired objects?
Target facts and lifecycle prerequisitesWere required Secrets, CRDs, topology, storage, and lifecycle objects present at the right time?
Workload convergenceDid Deployments, StatefulSets, Jobs, APIServices, webhooks, and chart-specific checks reach the expected state?
Controller aggregate healthDoes Argo, Flux, or another controller mark the application healthy, and if not, what resource or health rule explains the residue?

The funnel keeps hard cases readable. For example, a chart can have synced ConfigHub OCI delivery and fully converged Kubernetes workloads while a GitOps controller still reports an aggregate Progressing health label. That is a watch row, not a silent failure and not a full pass. The receipt should keep both facts visible: workload evidence and controller-health residue.

Target shape is Kubernetes topology, not ConfigHub deployment architecture. A chart such as Consul may require three schedulable Kubernetes nodes because its server pods have hard anti-affinity and quorum expectations. That does not mean ConfigHub needs an in-cluster worker. In the OCI/GitOps lane, ConfigHub remains workerless from the cluster's point of view: Argo or Flux pulls the published desired state, and the receipt records the target topology that made the chart schedulable.

The strict two-cluster kind parity lane can create multi-node vanilla kind targets directly from target facts. The single-cluster ConfigHub/OCI rig also needs the same Kubernetes target shape, but its cluster bootstrap goes through cub cluster up because that command provisions Argo CD and the ConfigHub target. If it cannot create a multi-node kind target, the row is blocked on proof-rig provisioning. It is not a ConfigHub worker requirement and not a render-parity defect.

Controller Namespace Protection

Single-cluster GitOps lanes use a delivery controller and a chart under test in the same cluster. If the chart renders objects into a protected controller namespace, cleanup must not delete objects that existed before the chart leg began. The harness snapshots those pre-existing objects, preserves them during cleanup, and records the preserved identities in the receipt.

This matters for charts such as Argo CD. A live test may need Argo CD to deliver the ConfigHub OCI artifact while also testing an Argo CD chart. The harness may clean up chart-owned objects between legs, but it must not remove the bootstrap controller's ConfigMaps, RBAC, Services, or workloads. Otherwise the test would measure harness damage rather than Helm-vs-ConfigHub behavior.

Current Reading

The repo already proves the first lane for every current recipe variant. The other lanes are intentionally tracked as partial or missing until their receipt families cover every chart-recipe-variant row.

Redis must not remain a permanent special case. Redis-only tutorial helpers such as redis:verify-install:* are allowed as user-facing checks, but corpus-core lane coverage should come from the same generated lane matrix and receipt families as the other charts.

How To Use The Matrix

Use the CSV as the spreadsheet-facing source of truth:

chart
version
variant
core lane statuses
missing_core_lanes
evidence notes

Use the summary for the headline counts. A lane status of missing means the test harness or receipt exists in doctrine but does not yet have committed evidence for that row.