Benchmark task 1: keep a replica edit across a chart upgrade

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

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.

Run live on 2026-07-05, both arms on the same kind cluster (hx-bench-1). The task: install redis 25.5.3, change the replica count to 2 (chart default 3), upgrade the chart to 27.0.0, and keep the change. Then: what record exists of why replicas is 2, discoverable from the system alone?

This is not a rigged "bare helm fails". A competent engineer with plain helm can keep the change. The benchmark measures the safety margin and the record, not just the happy path.

Bare arm (helm + kubectl, no substrate)

The agent installed redis 25.5.3 and set replica.replicaCount=2 through the helm release values (a values-redis.yaml file, not a kubectl edit) - the right way. Then the upgrade to 27.0.0 was run three ways to find the margin:

How the upgrade was runReplicas afterOutcome
helm upgrade --version 27.0.0 --reuse-values (careful)2kept - survives when the flag is remembered
helm upgrade --version 27.0.0 --set auth.password=… (flag forgotten)3silently reverted - STATUS: deployed, no warning

The ops requirement vanished on one forgotten flag, with no error. The record of why replicas was 2 exists only if the engineer hand-wrote a helm --description (optional; often blank) and kept the local values-redis.yaml. Lose the file or forget -f/--reuse-values on any future upgrade and the requirement reverts, silently.

Pilot arm (the substrate)

The replica edit is a recorded revision (Staging departure: 2 replicas, a local decision that must survive upstream refreshes). The chart upgrade to 27.0.0 arrived as an UpgradeUnit revision that merged with the local edit; the departure survived by the merge semantics, not by anyone remembering a flag. Applied live to the bench cluster: redis-replicas at 2 replicas on chart 27.0.0.

Crucially, the why is enforced, not optional. cub revision list shows the edit, its change description, and the upgrade arriving, forever, queryable from the org with no local file to keep.

Score

DimensionBare (careful)Bare (one slip)Pilot
Correct end stateyesno (reverted)yes
Silent failures01 (unwarned revert)0
Survives without remembering a flagnonoyes (merge)
Record of why, from the system aloneoptional (helm desc)noneenforced (revision + change-desc)
Reproducible without a local filenonoyes

The honest conclusion

Both arms can produce the right end state. They differ in what happens when a human is ordinary rather than careful. Plain helm keeps the change only while every future upgrade remembers a flag and a file; one slip reverts an ops requirement with no warning. The substrate keeps the change by construction and records why. The Pilot advantage is not "helm cannot"; it is "helm will not warn you when you forget, and keeps no enforced record of intent."