Generated at: 2026-06-13T06:07:46.130Z UTC · source: committed torture-suite fixture results.
8 fixtures · 1 pass · 5 named refusals · 2 named routes · 0 silent outcomes by construction. Charts written to break the model; every one must land in a named outcome or recording fails. Hover the attack column for the routing notes. Re-record with npm run torture:record.
| Fixture | Attack | Outcome | Detail |
|---|---|---|---|
| alias-collision | The same subchart is included twice under different aliases, and the child hardcodes an object name - both instances render the identical object identity. | refused-object-identity-collision | v1|ConfigMap||child-shared-cm |
| import-values-chain | import-values pulls child chart exports into the parent values space; a value-source map that only scans the parent values.yaml cannot explain where the rendered field came from. | pass-deterministic | |
| lookup-in-spec | lookup reads the live cluster at render time to fill a spec field, so a factory render cannot equal an in-cluster render. | routed-lookup-target-facts | |
| random-selector | Random generation inside spec.selector.matchLabels: every render produces a different immutable selector, so no two renders describe the same workload. | refused-nondeterministic-render | |
| sprig-env-access | sprig env reads the rendering machine's environment variables into the output, leaking machine state and making renders machine-dependent. | refused-template-error | Error: parse error at (sprig-env-access/templates/configmap.yaml:6): function "env" not defined Use --debug flag to render out invalid YAML Command failed: helm template torture $HOME/code/helm-expt-claude-clone |
| timestamp-annotation | now baked into an annotation: the rendered bytes change every run, so byte-level parity is impossible by construction. | refused-nondeterministic-render | |
| tpl-self-recursion | A values entry that tpl-renders itself recurses forever; a naive renderer hangs or crashes without a named outcome. | refused-template-error | runtime: goroutine stack exceeds 1000000000-byte limit runtime: sp=0x4afb347803a0 stack=[0x4afb34780000, 0x4afb54780000] fatal error: stack overflow runtime stack: runtime.throw({0x105a97729?, 0x1042b63a4?}) runtime/pa |
| verb-branch | The template branches on .Release.IsUpgrade, so the chart renders differently on install and upgrade - a single captured render is not the chart. | verb-dependent-render |