Chart to Recipe to Manifest Flow

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.

This note describes the proposed ConfigHub/cub installer flow for Helm-derived packages, where every source of new information is made explicit and every risky Helm feature is handled at the right stage.

Mission

The Helm mission is to remove as much Helm pain as possible by moving hidden rendering, variation, review, delivery, and observation concerns into explicit ConfigHub artifacts and receipts.

That does not mean "never use Helm". It means Helm stops being the only place where the user has to reason about hidden state, invisible generator behavior, values-file guesswork, and fragile one-off deployment scripts.

The promise:

Use the Helm ecosystem.
Import once.
Vary freely.
Review the exact Kubernetes objects.
Scan every important variant.
Deploy approved revisions without re-rendering and hoping.
Keep receipts for what changed, who approved it, what was applied, and what external observers saw live.

The 60-second story:

Helm generates Kubernetes objects. ConfigHub captures those objects as
immutable variant revisions. You approve the exact rendered objects, scan them
before install, promote the same revision to prod, see why environments differ,
and get receipts proving what changed and what was observed.

Use Helm charts. Ship ConfigHub variants.

From the attached "first two problems" note, the product should directly answer these user pains:

So the mission is not just deterministic import. The mission is a managed variant family:

managed variants
+ tracked operations
+ signed receipts
+ exact rendered artifacts
+ bulk checks
+ day-2 propagation
= less hidden Helm pain, with explicit blockers where automation is unsafe

Variants Are the Product Spine

The ConfigHub variants model should be the center of the Helm story.

Helm's native unit is a chart release. Git's native unit is a file change. Argo CD and Flux mainly operate desired-state sources and sync status. None of those is quite the object the user cares about when they say:

dev, staging, prod, EU, Customer A, GPU region, HA mode, TLS mode

Those are variants.

In the new flow:

recipe
  -> variant
  -> variant revision
  -> rendered manifest set
  -> scan results
  -> install/operate receipts

Definitions:

This is the user promise:

You do not manage piles of Helm values files.
You manage a family of variants.
Each variant has approved revisions.
Each revision has exact rendered objects and receipts.

A variant is only real if it carries enough state to be approved, promoted, compared, scanned, and operated. A values file with a nicer label is not a complete variant.

A ConfigHub variant revision must include:

Five Objections, Five Answers

The answer must be:

Less Helm pain. Not more platform ceremony.

1. "Is this another abstraction on top of Helm?"

No. Helm remains the chart ecosystem. ConfigHub adds the missing managed object:

Use Helm charts.
Ship ConfigHub variants.

ConfigHub is not a new templating religion. It is a variant manager, receipt layer, and operation record.

2. "Will this work with my real charts?"

The first job is to explain the chart before install:

OK: values, dependencies, CRDs
Needs facts: lookup Secret redis-password
Needs policy: pre-install hook
Blocked: unpinned post-renderer

That is already better than Helm failing late, silently ignoring values, or hiding behavior inside render-time side effects.

3. "Is this too much process for small teams?"

The simple path stays simple:

install
review/plan
publish

Receipts, scans, and variant records are produced automatically. Teams can add approvals, variant matrices, initiatives, and promotion workflows when they need them.

4. "Who owns truth: Git, Helm, Argo, Flux, the cluster, or ConfigHub?"

Each keeps its job:

Helm supplies charts.
Git stores files.
Argo/Flux sync clusters.
ConfigHub records variants, operations, and proof.
cub-scout, GitOps, CI, and other external observers report live state.

ConfigHub is the operational system of record. It can emit Git, OCI, YAML, or GitOps inputs instead of replacing delivery tools.

5. "What happens when YAML needs to change?"

Change the variant. Do not guess through values files.

Helm: change values, hope the path works, rerender, compare noise.
ConfigHub: change variant, see affected fields, scan exact output, promote approved revision.

The crisp headline:

Helm gives you charts.
ConfigHub gives you managed, reviewable, scannable, promotable variants from those charts.

User-facing naming should stay simple:

Technical phrasePublic phrase
recipe importHelm Recipe Import
base variantsInstall Variants
rendered manifest setsRendered Release Objects
install gateVerified Install Gate
operation recordsReceipts
captured target/capability/generated factsenvironment facts used during render

Keep the heavier terms in schemas and technical docs. Do not put them in the headline.

Core flow:

Helm chart source
  -> Helm Recipe Import
  -> ConfigHub Install Variants
  -> immutable variant revisions
  -> environment facts used during render
  -> Rendered Release Objects
  -> scan exact objects before install
  -> Verified Install Gate
  -> ConfigHub operate/day-2 lifecycle

The important product claim is not "ConfigHub scans Helm charts once". It is:

ConfigHub makes Helm's possible install outputs explicit, reproducible, attributable, and scannable.

The user-facing version is:

With cub, Helm becomes an input format. The thing you approve, scan, promote, roll back, and operate is an addressable ConfigHub variant revision with receipts.

Build on confighub/installer

This plan should be built on confighub/installer, not as a separate Helm system.

Installer already has much of the substrate:

The Helm work should add the missing layer:

So the implementation claim is:

Extend confighub/installer so Helm charts become ConfigHub installer recipes
and managed variant revisions.

Execution Surfaces

Every step in the plan must be executable through one or more of:

The current proof is not trying to execute a pure serverless install path. GitHub is the public catalog/proof surface, currently confighub/helm-expt. The fast install path uses ConfigHub's OCI endpoint. A fully client-side, serverless cub installer path is a deferred option and should be tracked as an issue, not treated as part of the current proof.

Backlog gates are tracked in docs/planning/issue-backlog.md. Any open P0 issues in that file must not be bypassed by the flow; they are gates for the scope they name.

The consolidated doctrine and historical execution record is in docs/planning/agreed-execution-plan.md. Current command routing lives in docs/user/choosing-commands.md; the npm proof-command map lives in tests/npm-scripts.md. Treat the shorthand below as candidate product porcelain unless one of those command maps names it as a current command. During implementation, every durable chart input, recipe, variant, revision, scan, gate, publish/apply action, and observation must map back to a real execution surface and produce an addressable artifact or receipt.

The upstream installer docs usually write these as installer ... commands. Here they are written as cub installer ... because the installer is used through the Cub plugin.

Target happy path:

install redis
review/plan redis
publish redis

The first command should quietly:

resolve the Helm chart
create or update the Redis recipe candidate
create the default install variant
render an immutable variant revision
scan the exact rendered objects
prepare a Verified Install Gate
write receipts

The publish command should publish the approved revision through ConfigHub's OCI endpoint for GitOps pickup and write an OCI artifact receipt. Direct apply can exist for local kind tests or explicit customer choice, but it is not the default public handoff.

Easy variant path:

create redis HA variant
review/plan redis HA against default
publish approved HA revision

or:

create redis reuse-existing-secret variant
bind redis-password fact or secret handle
publish approved reuse-existing-secret revision

Implementation may initially expose more explicit cub installer ... subcommands while this is being built, but the product proof should aim at the simple UX above. The machinery is allowed to exist; it should not be the happy path.

Workerless Server Boundary

ConfigHub Server should not be described as having a built-in live view if the direction is workerless.

The server's job is to store and govern:

Live observations come from outside the server:

So the state model is:

intended state
  stored by ConfigHub Server

applied state
  recorded by operation receipts from cub, GitOps, CI/CD, etc.

live observation
  submitted as observation receipts by cub-scout, GitOps, CI/CD, or other external observers

ConfigHub Server can aggregate and display intended/applied/observed state, but it should not be the thing that directly watches every cluster unless a customer explicitly deploys an observer that reports back.

Hard rule:

ConfigHub stores desired/config truth and submitted observation receipts.
It does not claim fresh runtime truth unless a current receipt says so.

The UI must show freshness plainly:

Observed by cub-scout 4m ago.
Argo report 17m old.
No runtime receipt yet.

1. The New Flow

Step 0: Source Selection

Input:

Output:

chartRef + version + chartArchiveSHA256 + acquisition metadata

Checks:

This is where the five failed rows in the top-500 scan belong. They are not Helm semantics problems; they are source-acquisition failures.

Step 1: Dependency Closure

Helm input points:

Output:

root chart digest
+ every dependency name/version/digest
+ importer dependency policy
= helm-source-lock

Checks:

If dependency resolution is needed, it is its own auditable step. It is not hidden inside chart-to-recipe import.

Step 2: Recipe Import

Input:

Output:

Recommended framing:

1 Helm chart source -> 1 recipe -> N ConfigHub variants -> M variant revisions

Only split into multiple recipes when the source package is intentionally forked or the importer policy creates materially different package semantics. Normal HA/default/TLS/cloud/environment/customer differences should be variants and variant revisions, not separate recipes.

Checks:

There are two acceptable import modes:

The stronger long-term story is symbolic recipe mode. Render-and-vendor remains useful for compatibility and experiments.

Step 3: Recipe Validation

Input:

Output:

Checks:

This is where ConfigHub-specific malformed package checks start. Market tools generally cannot inspect this layer because it is not Kubernetes YAML yet.

Step 4: Variant Definition

Input:

Output:

default
ha
ha-with-persistence
tls-enabled
ingress-enabled
restricted-security-context
fresh-install
reuse-existing-secret
k8s-1.29
k8s-1.30
eks
gke
aks

Checks:

Variants are the bridge between Helm flexibility and ConfigHub auditability.

Step 4b: Variant Revision

Input:

Output:

Checks:

Step 5: Target Fact Values, Capability Profiles, and Generated Facts

Input:

Output:

values-profile@sha
capability-profile@sha
target-facts@sha
generated-facts@sha

Checks:

This is how we handle Helm lookup: turn cluster-sourced nondeterminism into target fact requirements in the recipe, then bind captured target fact values when rendering a variant revision.

Example:

Helm source:
  lookup Secret redis-password

Recipe:
  requires target fact redisPasswordSecret.exists

Variant A:
  redisPasswordSecret.exists = false

Variant B:
  redisPasswordSecret.exists = true

Now both outcomes are renderable, scannable, and repeatable.

This aligns with the current installer direction: installer already has a collector extension point that writes out/spec/facts.yaml, and render uses .Facts.* from that captured file. The Helm import plan generalizes that mechanism into recipe-declared target fact requirements, capability profiles, and generated facts for variant revisions.

Step 6: Render

Input:

Output:

renderedManifestSet@sha

Checks:

This is the point where standard Kubernetes policy scanners become most useful, because the output is actual Kubernetes YAML.

Expected digest formula for proof artifacts:

variantRevision.digest =
  sha256(
    recipe.digest,
    effectiveValues.digest,
    capabilityProfile.digest,
    factBindings.digest,
    generatedFacts.digest,
    renderer.digest,
    renderedManifestSet.digest
  )

helm-expt defines and verifies this contract. confighub/installer may later emit native receipts, but installer implementation is an upstream dependency, not code owned by this repo.

Step 7: Kustomize, Overlays, and ConfigHub Functions

Kustomize can appear in several places:

ConfigHub functions can also appear here:

Checks:

Kustomize is not a loophole around receipts. It is another explicit stage in the same recipe-to-manifest pipeline.

Step 8: Bulk Policy and Misconfiguration Scans

Input:

Output:

renderedManifestSet@sha
+ scanner@version
+ policyBundle@sha
= scanResult@sha

Examples:

Checks:

The atomic audit object should be per renderedManifestSet@sha. A higher-level initiative result should roll up many manifest-set scan results.

Step 9: Install Gate and Receipt

Input:

Output:

Checks:

Step 10: Operate and Day-2 Lifecycle

Input:

Output:

Checks:

2. Every Entry Point for New Information

Entry pointExamplesWhere it belongsControl
Chart sourcerepo URL, OCI ref, chart version, archive bytesSource selectiondigest, signature, immutable receipt
Chart dependenciesumbrella chart, subcharts, library charts, remote reposDependency closurelock with dependency digests
Chart defaultsvalues.yaml, subchart defaultsRecipe importsource digest and schema extraction
Values overlaysvalues-prod.yaml, --set, org defaultsVariant definitionvalues profile digest
Remote/generated valuesCI scripts, downloaded values files, copied customer valuesVariant definitioncapture as input artifact or reject
Values schemavalues.schema.jsonRecipe validationinput constraints
Templatesmanifests, helpers, named templatesRecipe import/renderimporter policy and diagnostics
tpltemplate strings supplied through valuesLate/literal policybound evaluation or reject
.Files.Getbundled config files, dashboards, scriptsSource importfile digest and path restrictions
lookuplive Secret/CRD/ConfigMap checksRecipe target fact requirements plus bound valuessnapshot, synthetic variant, or fail
Capabilitieskube version, API versionsCapability profilenamed profile digest
Release objectname, namespace, install/upgrade, revisionVariant/render phaseexplicit render parameter
Random/cert/time funcsrandAlphaNum, genCA, now, uuidv4Generated factsgenerate once and persist
Hookspre-install jobs, test hooks, weights, delete policiesLifecycle policy and hook receiptinventory deterministically; execute only through target-aware lifecycle proof
CRDscrds/, CRD templatesOperate policyCRD phase, ownership, ordering
Raw manifest escape hatchesextraObjects, extraManifestsLate/literal policyscan, constrain, or disable
Kustomize basesselected top-level baseVariant definitionbase selection receipt
Kustomize componentsoptional componentsVariant definitioncomponent selection receipt
Kustomize overlays/patchespatches, replacements, imagesRender stageoverlay digest and deterministic build
Secret/config generatorsconfigMapGenerator, secretGeneratorRender/generated factsinput-file digest and secret handling
ConfigHub functionsset namespace/image/resources, validatorsRender/validationresolved function-chain digest
Helm post-rendererexternal post-render commandRender stageexplicit pinned function stage or reject
Helm/getter pluginsnonstandard fetch/render behaviorSource/render stagepinned toolchain receipt or reject
Kustomize exec pluginsalpha/exec pluginsRender stagepinned allowed plugin set and digest
Image referencesmutable tags, registry digestsRender/scan stageoptional image digest resolution receipt
CRD/OpenAPI schemasschemas used by validatorsScan stageschema source/digest
Scanner policypolicy bundles, vulnerability DBsScan stagescanner/policy digest
Delivery targettarget namespace/cluster/spaceInstall gatetarget binding receipt
Live observationcub-scout, GitOps report, CI/CD reportOperateobservation receipt with observer, method, timestamp, freshness
Day-2 editsConfigHub mutations, drift, upgradesOperatemerge/reconcile policy

3. Checks by Failure Type

Problem typeFailure modeControl
Mutable sourcesame chart ref gives different bytesrequire archive digest or signed immutable ref
Unlocked dependenciesdependency resolution changesrequire dependency lock/digests
Missing archivechart cannot be fetchedfail before recipe
Cluster lookuplive cluster state changes render outputrecipe target fact requirement plus target fact snapshot or synthetic variants
Kube capability branchtarget cluster changes outputnamed capability profiles
Random generationrepeated render differsgenerated facts persisted once
Time/UUIDrepeated render differsgenerated facts or forbid in strict mode
Required/failrender fails only after late valuesrecipe input validation
tpl escape hatchvalues become codebound evaluation, explicit allowed fields, or reject
Raw manifestsarbitrary resource injectionexplicit extension slot plus scanning
Hooksprocedural lifecycle hidden in chart; execution depends on live cluster factsinventory first; map to phases/tests, target-aware lifecycle receipts, explicit skip, or blocker where safe
CRDs/webhooks/APIServiceordering and cluster-wide blast radiusoperate policy and install phases
Kustomize remote baseremote content changesvendor or pin digest
Kustomize generatorname/content changes unexpectedlydeterministic generator options and input digests
Post-render commandarbitrary code changes rendered YAMLexplicit pinned stage or reject
Tool/plugin driftdifferent Helm/Kustomize/plugin behaviortoolchain receipt and allowed versions
Mutable imagessame image tag points to different imageoptional image digest resolution
Validator schema driftdifferent schemas change validation resultschema source/digest receipt
Scanner driftsame manifest gives different resultscanner/policy bundle receipt
Day-2 driftexternally observed live state divergesobservation receipt separate from render receipt

4. How This Solves the First Two Problems

Problem 1: Install Config Correctly

The current pain is that users approve abstract inputs and hope the generated output is correct. The new flow changes the review object.

Old flow:

approve values.yaml
run helm somewhere
hope the cluster got what was intended

New flow:

create/update variant
render candidate variant revision
approve variant revision
review exact rendered YAML
scan exact rendered YAML
install exact approved manifest set
record receipt

Controls:

Problem 1b: Small-Scale Helm Pain

Even small teams see the same failure modes:

In the new flow, these are not all solved by one scanner. They are solved at different points:

The server-side version of the plan is about managing a family of related approved states, not re-running generators whenever a target changes.

Old flow:

many values files
+ many clusters
+ custom scripts
+ GitOps sync events
= no durable variant/operation record

New flow:

base recipe update
  -> affected variants
  -> candidate variant revisions
  -> render and scan each candidate revision
  -> approve exact variant revisions
  -> promote/deploy those approved revisions to targets
  -> record operation receipts
  -> ingest external observation receipts for live freshness

Controls:

This is why "deploy and vary however much you like" is plausible: variation happens in the ConfigHub variants model, and deployment operates approved variant revisions.

5. Legacy Top-500 Source Scan

The existing workbook scan is legacy/reference material. It covered 500 Artifact Hub Helm packages sorted by stars and statically scanned chart source; it did not execute templates, hooks, or lookups.

Do not treat the existing workbook as the current proof pathway. The current plan requires new chart proof repos and new generated spreadsheets backed by recipe, variant, revision, scan, gate, and receipt artifacts.

The chart count alone proves nothing. The evidence matters only if each chart can be connected to real recipe candidates, bounded install variants, rendered objects, scan results, gates, and failure classifications.

The new top-20/top-100/top-500 proof should show breadth across complex Helm reality:

Legacy scan summary:

CategoryCount
Requested charts500
Scanned charts495
Source/archive failures5
Registry rate-limited during final run0
P0 source/dependency risk154
P1 compiler policy needed165
P2 recipe/render/install policy174
P3 plain/static-ish2

Feature counts among scanned charts:

FeatureCountWhere the new system handles it
Non-exact dependency constraints152dependency lock before import/render
HTTP chart repo URL5source acquisition warning/policy
Hooks54lifecycle policy, phases/tests, or explicit blocker
Non-test hooks42install phase mapping or unsupported
Test hooks16map to test/check actions
lookup244recipe target fact requirements and lookup policy
Generated facts candidates282generated facts persisted in receipts
Random funcs220generated facts
Certificate funcs169generated cert facts or secret material
Hash/password funcs19generated facts/secrets
Time/UUID funcs140generated facts or strict reject
required/fail309recipe input validation
.Capabilities.APIVersions281capability profiles
.Capabilities.KubeVersion319capability profiles
semverCompare309capability/value validation profiles
Release install/upgrade/revision branching177render phase variants
tpl362late/literal policy
Extra/raw manifest values254explicit extension slots and scans
.Files access129source file digest and path policy
values.schema.json178recipe validation input
CRDs131install ordering/ownership policy
Cluster RBAC250policy scans and operate review
Webhooks77policy scans and operate review
APIService17policy scans and operate review
Stateful/PVC footprint296stateful operate policy

Important overlaps:

CombinationCountMeaning
lookup + generated facts221many charts combine cluster-derived and generated state
lookup + capabilities228target fact requirements and capability profiles must be designed together
Hooks + generated facts43lifecycle handling must preserve generated state
tpl + raw/extra manifests253late/literal escape hatches are common
CRDs + webhooks55install ordering and admission risk often travel together
Stateful/PVC + generated facts215databases often need generated secrets/certs plus persistence
P0 source risk + P1 features148source locking and compiler policy often both matter

Conclusion from the legacy scan:

The top-500 chart features do not defeat the plan.
They force the plan to be explicit.

Every observed feature class has a control:

The system cannot make an unavailable chart archive available. It should block or require mirroring. It also cannot prove semantic safety from a static regex scan alone. The importer must eventually use a proper chart/template parser and record importer diagnostics.

6. Bulk Policy, Scan, and Misconfiguration Checks

The bulk-scanning model still works:

recipe@sha
  variant: default
    revision: default@2026-05-25.1
    renderedManifestSet@sha -> Snyk/Trivy/Checkov/Kubescape/ConfigHub scan
  variant: ha
    revision: ha@2026-05-25.1
    renderedManifestSet@sha -> Snyk/Trivy/Checkov/Kubescape/ConfigHub scan
  variant: tls-enabled
    revision: tls-enabled@2026-05-25.1
    renderedManifestSet@sha -> Snyk/Trivy/Checkov/Kubescape/ConfigHub scan

There should be two result levels:

This lets ConfigHub answer both questions:

Market scanners belong mostly after render. ConfigHub scan belongs both before and after render:

7. Leftover Design Questions

These are not optional details. They are the remaining defaults that turn the plan into a product.

Top Target Facts

Likely top target fact requirements Helm recipes need:

  1. Kubernetes version.
  2. Available API versions and CRDs.
  3. Target namespace exists, plus labels/annotations when charts branch on them.
  4. Named Secret exists and required keys exist.
  5. Named ConfigMap exists and required keys exist.
  6. Existing CRD ownership and served versions.
  7. StorageClass/default storage class/volume expansion support.
  8. IngressClass or GatewayClass availability/defaults.
  9. Existing ServiceAccount/RBAC objects when charts support reuse.
  10. Certificate issuer or TLS secret availability.
  11. ImagePullSecret availability.
  12. Existing PVC availability for stateful reuse/upgrade flows.

The first two are closer to capability profiles than ordinary facts, but users will think of them as target facts. The UI can group them while keeping the receipt model precise. The recipe declares these requirements; a render context or variant revision binds the concrete target fact values.

Lookup Default

Recommended policy:

Do not allow hidden live lookup during render.

Variant-Specific vs Recipe-Wide Misconfigs

Recipe-wide:

Variant-specific:

Result Object

Use both:

The per-manifest-set result is the scan audit primitive. The variant revision is the user-facing approval and promotion primitive. The initiative result is the workflow/dashboard primitive.

8. What We May Still Be Missing

After reviewing the conversation and the legacy 500-chart feature matrix, the likely missing or under-specified areas are:

  1. Chart tests as first-class checks: Helm test hooks should probably become optional post-render or post-install test actions, not just "hooks".
  2. Notes and human instructions: NOTES.txt sometimes carries required operational steps. We need a policy for extracting or preserving operator notes.
  3. Image resolution: scanners inspect image strings, but mutable image tags can still move. We need optional image digest resolution as a render or scan step.
  4. Policy database drift: scanner output can change when vulnerability DBs update. Receipts must include scanner database/policy bundle versions.
  5. CRD schema-dependent validation: kubeconform-style checks need the right CRD schemas for custom resources, not just built-in Kubernetes schemas.
  6. Admission-controller reality: rendered YAML can pass static scans but fail target admission policies. A dry-run/server-side validation stage may be needed for real targets.
  7. Secret value scanning: rendered Secrets may be withheld from uploaded Units, but install gating still needs a safe way to validate secret shape without leaking material.
  8. Cross-resource references: Services, ServiceAccounts, Secrets, PVCs, Ingress classes, and RBAC references need graph checks, not only object-local checks.
  9. Subchart value propagation: umbrella charts can pass values deeply into dependencies. Variant definitions must include subchart values explicitly.
  10. Library charts: they do not render resources but strongly affect templates. They must be represented in the source lock and importer diagnostics.
  11. Post-renderers: Helm supports post-renderers. If supported, they need to become explicit recipe/Kustomize/function stages; otherwise reject.
  12. Upgrade/downgrade semantics: .Release.IsUpgrade, hook delete policies, CRD upgrades, and PVC retention need explicit phase variants.
  13. Namespace and cluster-scope collisions: cluster-scoped resources need ownership and conflict checks across installs, not just within one rendered set.
  14. Remote values or generated values files: if a workflow fetches values from URLs or CI scripts, that source must be captured as an input artifact.
  15. OCI registry throttling/availability: source-acquisition failure is not chart behavior, but it affects import reliability. Mirroring may be part of the product story.
  16. False positives in static chart scanning: the legacy top-500 matrix is a source scan heuristic. It is good enough to prioritize controls, not enough to certify a chart. New matrices must be generated from chart proof artifacts and receipts.
  17. Bounded capability profiles: we should name the supported Kubernetes/API profiles rather than imply an unbounded continuum.
  18. Scanner coverage gaps: Snyk/Trivy/Checkov/Kubescape overlap but do not fully substitute for ConfigHub recipe/fact/variant checks.
  19. Operator override governance: raw manifest slots and tpl need role/policy controls, not just technical receipts.
  20. Receipt UX: the receipt has to be understandable to Helm users. A receipt no one can read will not build trust.
  21. Values dead-key detection: the attached note calls out values that do not apply without warning. Helm does not reliably prove that a values path affected output. The importer should report unknown values, unused values where detectable, and field-level provenance for generated manifests where possible.
  22. Field ownership across tools: Helm, GitOps controllers, operators, and ConfigHub functions can all touch the same fields. The operate model needs ownership/conflict checks, not just render determinism.
  23. Intended versus applied versus observed live: scanning rendered YAML is necessary but not enough. ConfigHub Server should store intended state and applied-operation receipts, while cub-scout, GitOps, CI/CD, or other external observers submit live observation receipts with freshness.
  24. Variant propagation semantics: "deploy to prod" must mean promote an approved variant revision while preserving prod-only constraints, not copy dev YAML blindly.
  25. Rollback semantics: rollback must be scoped to a variant/target and operation, not a Git revert that pulls unrelated changes with it.

Start with these defaults:

That is the cleanest version of The Plan.

10. What helm-expt Must Prove

The repo rewrite should make these artifacts visible:

The repo should not merely say "top 500 charts". It should show:

Helm complexity
  -> explicit ConfigHub control point
  -> deterministic variant revision
  -> scanned and gated rendered objects