Status: DOCTRINE (2026-06-02). The north-star claim of the catalog and the contract every chart must meet.
The claim
This is the product thesis. The catalog only earns it if every chart ships a complete corresponding model, not a prose promise. This doc defines "complete" precisely enough to be machine-checked, and - critically - honestly, so the claim survives an adversary.
What "100%" must mean (and must not)
"100%" is a claim about the rendered result and the accounting of behavior - not a claim that a static file reproduces live, cluster-dependent dynamism by itself.
100% means, per chart:
- Render-equivalent - for every supported variant,
cub installer setupoutput ≡helm templateoutput (modulo declared support objects), proven by a digest-bound equivalence receipt the user can re-run. - Behaviorally complete (no silent gaps) - every Helm behavior the chart uses is either absorbed into the model (named home + policy + proof) or explicitly dispositioned. The HelmPlan carries zero
unknownand zerounhandled. Render-time dynamism becomes explicit model elements; live / lifecycle behavior becomes policy + receipts or an honest blocker:
| Helm behavior | How the model accounts for it |
|---|---|
lookup (reads the live cluster) | declared target-fact requirement + bound fact value (explicit input, never silent) |
| random / cert / time (generated) | generated-fact receipt - generated once, bound into the revision |
.Capabilities branching | named capability profile (the model is reproducible for a declared context) |
| hooks | lifecycle policy + receipt, or an honest blocker (execution is cluster-dependent) |
tpl / raw manifests / post-renderers | explicit extension slot with policy, or reject |
| CRDs / webhooks / RBAC | operate policy + rendered-object scan/gate |
| mutable image tags | digest-resolution receipt, or gate |
- Variant-complete - the model covers how users actually install/vary the chart (
defaultplus the meaningful render-time variants), so a Helm user replacing their usage finds their shape, not onlydefault. - Readable - a per-chart artifact map answers: which variant do I install, what will it create, what differs between variants, and what's the catch.
- Usable - executable end to end (
cub installer setup / render / package), reproducing the objects without the chart's templating engine. - Verifiable - machine-checkable receipts (equivalence / render / scan / gate) +
npm run verify; the user can re-run the equivalence proof themselves. - Honestly scoped -
catalog-status.yamldeclares the support scope (local-test / production) and names every blocked or deferred part.
100% does NOT mean a static model silently re-executes lookup, runs hooks, or resolves .Capabilities on its own. Those are made explicit (facts / profiles / policies) or blocked. A chart whose core function is arbitrary post-render templating may be honestly un-modelable in full - and saying so, with the boundary named, is a complete model. The blocked / operator-decision disposition is part of completeness, not a failure: an adversary cannot find a behavior we silently dropped, because there are none - every behavior is either absorbed or named.
Why the honest version is the strong version
A breakable claim ("100% of any chart is silently replaced") dies the first time a reviewer finds a lookup or a hook we glossed over. The honest claim ("100% rendered-equivalent for declared contexts + 100% of behaviors absorbed-or-named + every receipt re-runnable") cannot be broken that way - and it is a bigger product statement: not "we re-ran Helm," but "we turned Helm's hidden behavior into an explicit, reviewable, verifiable model."
Where we are vs. the contract
The current measured state is in data/model-completeness/summary.md.
This report is a model-support view, not the whole live outcome. Level 2 means the chart has a complete, honest, reproducible model for its declared scope. The full catalog outcome still needs the outcome coverage:
Here is what the command does. cub installer is an open-source plugin for the cub CLI. cub installer setup pulls a catalog package and writes its Kubernetes files locally, leaving delivery to kubectl, Argo CD or Flux. The generated scripts stop before doing any work when the plugin or kustomize is missing.
default and declared main choices
-> Helm-equivalence and installer setup
-> ConfigHub upload, scan, clone/check, and safe-ops proof
-> live Kubernetes observation
-> ConfigHub OCI through Argo/Flux
-> live Helm-vs-ConfigHub parity
Recommended extra variants are an enhancement until they are declared as supported choices. Once a choice is declared supported, it must be tracked as its own chart-recipe-variant row with the relevant lane evidence.
Current headline:
supported (Level 2): 100 / 100
variant-rich: 54 / 100
supported (Level 2) means the six support criteria pass for the declared scope: render equivalent, behavior accounted for, readable, usable, verifiable, and honestly scoped. Variant richness is now reported as an enhancement metric, not as the support gate.
The current top-100 should be read like this:
| Question | Current answer | Source |
|---|---|---|
| Does every maintained chart have a recipe/package proof path? | 100 / 100 | data/top100-catalog-analysis/summary.md |
| Are all maintained charts Level-2 supported for their declared scope? | 100 / 100 | data/model-completeness/summary.md |
| Are all charts rich enough for common user variants? | 54 / 100 are variant-rich | data/model-completeness/summary.md |
| Are all top-20 public catalog charts live/e2e tested locally? | 20 / 20 | data/live-e2e/summary.md |
| Are any top-20 charts production-supported today? | 16 / 20 target-scoped supported decisions | data/production-support-decisions/summary.md |
| Do any charts have hard gaps for recommended extra capabilities? | 25 / 100 | data/chart-facts/summary.md |
So the catalog is no longer "20 complete and 80 incomplete." A more accurate reading is:
100 charts have a supported proof model for their declared scope.
20 charts are public catalog-supported for local-test.
54 charts have more than one base variant.
46 charts are still default-only.
25 charts have a hard gap for at least one recommended extra capability.
16 charts have supported target-scoped production support decisions.
2 charts are superseded deprecated source charts.
2 charts have rejected default bases with concrete production follow-up routes.
The hard-gap count is about missing recommended capabilities, not total chart failure. A chart can have a working, supported default recipe while still missing a useful existing-secret, no-crds, or HA path for a specific variant.
The delivery program (to actually earn the claim)
- Keep the verifier check green -
npm run completeness:verifyscores the 100 charts and fails if support criteria regress. - Use the gap reports as work queues -
data/chart-facts/summary.md,data/variant-backlog/summary.md, anddata/quirk-review-queue/summary.mdexplain which charts need capability, variant, or review work. - Build variant richness deliberately - close the 46 default-only entries and the 29 hard-gap entries without treating every possible Helm value as a catalog promise.
- Add production dispositions - local-test support is not production support. The production lane is tracked in
data/production-disposition/summary.md. - User-verifiable surface - each chart's map carries the exact
cub installercommands plus the re-runnable equivalence check, so a user can read → use → verify the corresponding model themselves.
Completeness is the admission bar: a chart is catalog-supported only when it meets this contract for its declared scope; otherwise it is a candidate, with the gap named.
Relationship to the other doctrine docs
catalog-doctrine.mddefines the customization surface (default + parameterized + standard variants).complete-corresponding-model.md(this doc) defines completeness + equivalence + verifiability per chart.agreed-execution-plan.md"Helm Pain Absorption" is the behavior-accounting mechanism this contract enforces.
Sources
agreed-execution-plan.md (Helm Pain Absorption; "no unhandled pain points"), catalog-doctrine.md, next-execution-plan.md, and the generated status, outcome, and live-parity data under data/.