UNOFFICIAL/EXPERIMENTAL. Live receipt generated by scripts/run-helm-habit-friction.mjs; do not hand-edit. Regenerate with npm run helm-habit:friction.
Claim. A Helm-fluent dev new to cub reaches for correct Helm idioms (--set, -f values.yaml, --input image.tag) that do not map to cub installer's declared-input model. cub safely REJECTS them (no silent mishandle) - but the question for adoption is whether it rejects WITH GUIDANCE toward the cub way, or opaquely. This lane measures that error-message quality. cub is safe; the opaque count is the migration friction to fix.
A skilled Helm user, new to cub, applies correct Helm idioms to cub installer - --set, -f values.yaml, --input image.tag. They're not careless (that's the bad-decisions fuzz) and not adversarial - just muscle memory meeting a different model. 72 cases (9 idioms × 8 packages).
cub is safe: 0 bug(s) (no silent mishandle). But guidance is the gap: 0/72 guided-or-supported vs 72/72 (100%) opaque. Overall: pass.
| cub's response | Count | Share | Meaning |
|---|---|---|---|
| opaque | 72 | 100% | friction - cub rejected but gave a Helm user no migration hint |
The friction (opaque rejections - the UX to fix)
Each is a correct Helm idiom that cub rejects with a generic message that doesn't point a Helm user to the cub way:
| Helm idiom | Packages | Why a Helm user tries it | cub's (opaque) error |
|---|---|---|---|
--set replicaCount=3 | 8 | Helm's --set flag; cub uses --input | Error: unknown flag: --set |
--set-string name=x | 8 | Helm's --set-string | Error: unknown flag: --set-string |
-f values.yaml | 8 | Helm's -f values file | Error: unknown shorthand flag: 'f' in -f |
--values values.yaml | 8 | Helm's --values | Error: unknown flag: --values |
--set-file k=file | 8 | Helm's --set-file | Error: unknown flag: --set-file |
--input replicaCount=3 | 8 | a valid Helm value path as a cub input | Error: unknown input "replicaCount" |
--input image.tag=v2 | 8 | Helm image override; cub uses --set-image | Error: unknown input "image.tag" |
--input resources.requests.cpu=500m | 8 | a valid Helm resources path as a cub input | Error: unknown input "resources.requests.cpu" |
--input servers[0]=x | 8 | Helm array index syntax as a cub input | Error: unknown input "servers[0]" |
The fix is migration guidance in the error - e.g. --set → "cub uses --input <name>=<value>; run cub installer doc for the inputs", --input image.tag → "use --set-image". cub already does the safe thing (reject); this makes it teach.
- Receipt:
runs/helm-habit-friction/receipt.yaml. Companion to the cub-installer fuzz (data/cub-installer-fuzz/, careless/adversarial input) - this is the competent-migrant lane.