Browse Docs
Catalog
Config
Stacks
Operate
Docs

The configuration processing model

This is the working model used by the Catalog. The catalog doctrine defines the rules in full. View source markdown.

Start with the question

The same four questions apply to Helm, AICR, Timoni, Kubara, installer packages, OCI, YAML, and retained ConfigHub revisions:

QuestionWhat answers itNeeds a Catalog match?Needs destination access?Needs the selected configuration deployed?
What do I have?Inspect the source, exact files, OCI, or a snapshot of an existing system.NoUsually no. A live snapshot needs read access to the system it measures.No
What will it produce?Run the source-native materialization step, or read the objects when the source is already literal configuration.NoNoNo
Can this destination accept it?Check the exact candidate against the chosen destination's APIs, CRDs, Secrets, policies, controllers, credentials, hardware, and lifecycle requirements.NoYesNo
Did it work?Check the exact delivered revision, controller result, resource health, runtime behavior, drift, and rollback result required by the claim.NoYesYes

A Catalog entry can shorten any investigation, but it is never a prerequisite for inspecting or processing a user's own configuration. The answer to each question must state its required inputs, evidence state, and result state. If the required destination or deployment does not exist, the check is blocked or not run. It is not a failed configuration, failed workload, or failed conformance result.

Three variant layers

The word variant can describe a choice at three different stages. Keep the layers separate:

LayerWhat it isExample
Source variantA provider-curated choice before materialization. Its provider records which target and use case it is for.An AICR leaf selected by service, accelerator, operating system, workload intent, and platform; or a Catalog Helm preset with recorded values.
Retained base variantThe exact objects produced from one source variant, with their digest, source link, lifecycle requirements, and evidence.The 17 Argo CD Applications produced from one AICR leaf, or one rendered Helm preset.
Derived ConfigHub variantA recorded change to a retained base for an environment, region, customer, or policy.Development, staging, and production revisions linked to the same base.

The source provider curates the first layer. NVIDIA curates the built-in AICR catalog; another catalog provider can publish and review additional overlays and leaves. ConfigHub Workshop curates its Helm presets. A custom source variant must name its provider, intended target, and supporting evidence rather than borrowing the status of a similar upstream variant.

For an imported provider catalog, the source layer also records the provider's identity, catalog version, catalog-content digest, selected source variant, selection dimensions, and provider evidence. Those fields are copied into the retained base and ConfigHub upload receipt. They are not recomputed from the output objects, and they do not change when a ConfigHub derived variant is created.

AICR also makes the four assessment questions easy to distinguish. aicr snapshot and aicr diff report what differs between observed GPU nodes without selecting a recipe or deploying a bundle. They do not say which node is correct. To make that decision, compare each node with the source variant intended for its hardware and job. A node without Mellanox networking may correctly omit iommu=pt and nvidia_peermem; a provider-curated RDMA variant may require them. A recipe-dependent expected-resources check can run only after the declared components have been deployed. The same rule applies elsewhere: a Helm render is not destination acceptance, an OCI publication is not controller reconciliation, and an Argo CD sync is not proof that an application request succeeded.

The generated cross-format assessment cases test these boundaries, and every generated Catalog base records all four answers in spec.assessment.

The processing sequence

The four questions sit above a more detailed sequence. A maintained configuration records:

  1. the source, version, and choices;
  2. the exact Kubernetes objects produced or read from that source;
  3. whether those objects can be retained as deployable configuration, with any source processor removed from the delivery path;
  4. CRDs, hooks, setup Jobs, certificates, Secrets, cloud resources, controllers, models, ordering, and other lifecycle work;
  5. variants, comparisons, tests, approvals, and promotions; and
  6. release, delivery, live observation, and rollback evidence.

A record can be complete through materialization and still have no destination or deployment proof. The Catalog must show that boundary rather than collapsing every stage into one status.

Where OCI fits

OCI is the transport, not the processor and not the deployment proof. We use three different OCI roles:

OCI roleWhat it carriesWhat happens next
Source package OCIA chart, installer package, AICR-generated chart, or another input that still needs a processor.Run the named processor to produce exact objects.
Literal configuration OCIExact Kubernetes objects that have already been materialized.Inspect, retain, compare, or deliver those objects without rerunning the source processor.
ConfigHub release OCIOne approved ConfigHub revision for delivery.Argo CD, Flux, or another recorded runtime reconciles that exact release.

These artifacts can contain related objects but have different manifests and digests. A receipt binds stages by naming both identities and comparing the objects; it never calls unlike digests the same digest.

Two connected tracks

The model tracks both the configuration and the work needed to use it.

configuration lineage
  source and intent -> exact base -> derived variant -> promoted release

lifecycle handling
  requirements -> route intent -> destination resolution -> execution -> receipt

The tracks meet more than once. Source processing reveals lifecycle requirements. A derived variant can add, remove, or change them. The final route is therefore resolved only after the exact variant, destination, and delivery runtime are known.

The full operating sequence is:

source + processing intent
  -> select and lock the inputs
  -> materialize exact Kubernetes objects
  -> capture an exact configuration revision
  -> identify lifecycle requirements
  -> decide the flattening lane for the intended path
  -> retain a reviewed base
  -> derive or update a variant
  -> recheck affected requirements, ownership, and flattening assumptions
  -> resolve lifecycle routes for the variant, destination, and delivery runtime
  -> compare, test, approve, and promote
  -> publish an immutable release
  -> reconcile the objects and perform the lifecycle work
  -> observe the result and record receipts

Helm, Timoni, AICR, Kubara, OCI, and YAML use the same decisions. They do not use the same processor. Helm renders, Timoni builds, and AICR or Kubara compose or generate. A step can be a recorded no-op: literal YAML already contains exact objects, for example. A source refresh, variant change, or new destination can send the process back to an earlier decision.

Rules that keep the model usable

  • Keep the source identity, exact-object digest, OCI digest, ConfigHub data hash, and release digest separate.
  • Decide flattening for one processing boundary. Flattening an AICR or Argo CD wrapper does not flatten the charts it still references.
  • Record missing lifecycle information as a gap. Do not translate silence into "no route required."
  • Recheck lifecycle requirements and field ownership after a variant changes.
  • Resolve the route after the exact variant, destination, and delivery runtime are known. A base route intent is input to that decision, not its final answer.
  • Promotion compares objects, lifecycle changes, and protected fields. Delivery then performs the selected route, and a receipt records the result.

The core words

WordWhat it isWhere it lives
Source and intentWhere the configuration came from and which choices produced or selected it.A source-specific record, linked to the exact configuration.
MaterializeProduce or read the exact Kubernetes objects that will be reviewed.In a local tool, build, or source adapter.
Exact configuration revisionOne accepted Kubernetes object set, inventory, and digest.Local files or OCI before upload; ConfigHub Units after upload.
FlattenRetain the exact objects so delivery does not rerun the source processor.A recorded decision for an exact source, configuration, and target path.
Flattening verdictThe decision to flatten, flatten with routes, or process the source late. Literal sources can be born flattened.A record scoped to an exact source, configuration, and intended delivery path.
Lifecycle requirementSomething that must exist or happen around ordinary apply, such as a CRD, hook, setup Job, certificate, controller, model, cloud resource, or prerequisite Secret.Discovered from the source, exact objects, variant, or destination.
Route intentA portable proposal for handling one or more lifecycle requirements.Beside the base configuration or source record.
Resolved lifecycle routeThe selected actor, order, mechanism, checks, retry rule, and failure rule for an exact variant, destination, and delivery runtime.A promotion or release record linked to the exact configuration digest and target.
Field ownershipWhich fields remain controlled by the source, a ConfigHub variant, or the destination.Source policy, variant history, and promotion review.
ReceiptThe recorded result of a generation, check, route, promotion, delivery, or runtime test.Committed evidence or ConfigHub history.
Base variantOne named, reviewed starting configuration.A package and, after upload, a root ConfigHub Space.
Derived variantA ConfigHub Space cloned from an uploaded base for an environment, region, or customer. It records its upstream base and does not rerender Helm.ConfigHub.

In one sentence: materialize exact objects, keep the source and lifecycle context, then retain reviewed changes as variants that can be promoted and delivered.

Source-specific words

WordMeaning
Helm recipeThe chart, version, values, named preset configurations, and declared lifecycle choices used by a Helm installer package.
AICR recipeAICR's native document containing resolved criteria, components, order, and checks.
Timoni module or bundleA typed source package selected by OCI version and digest, built with recorded values. It is not a Helm recipe.
RenderHelm's materialization step. It produces exact Kubernetes objects but does not apply them.
Helm render intentThe chart inputs, context, source lock, prerequisites, and lifecycle choices for one render.
Helm render variantThe captured object output for one base and revision, linked to its intent and digest.

Recipe is not the general name for a configuration. Use it only when the source tool has a recipe. OCI and plain YAML use a source-and-intent record and an exact configuration revision instead.

Do not create a render variant for literal YAML or another source that did not render. Its source-and-intent record links directly to its exact configuration revision.

The source and intent record

Every maintained base needs a record that explains where its objects came from and which choices produced them. We call this the source and intent record.

This is a role, not one file format. For Helm, the record is a HelmRenderIntent. Timoni records the module or bundle OCI version and digest, typed schema, selected values, build receipt, and declared workflow. For AICR, it includes the native recipe, selected options, and generation receipts. Kubara records its selected source and generation inputs. Source OCI records the processor it contains or references. Literal OCI and plain YAML name their source digest or checksums, object inventory, remaining inputs, prerequisites, checks, and later transformations. Today, that information may live in a source Unit, Space metadata plus a committed receipt, or a generated base-variant record.

The record should let a new reader answer five questions:

  1. What source produced these objects?
  2. Which values or choices were used?
  3. Which exact object digest did those choices produce?
  4. What must exist or run before delivery?
  5. Which checks and receipts support the result?

All maintained examples should answer those questions. Chart-specific records for hooks, CRDs, Secrets, setup jobs, and target facts are added when the configuration needs them; they are not copied into examples where they do not apply.

An arbitrary upload does not gain facts that ConfigHub cannot know. Generic checks can be attached automatically. A source adapter or review must supply the source details and any chart-specific lifecycle work; otherwise the missing information is recorded as a gap.

The four record layers

F1-F4 describe the records a reader can inspect. They are not four moments on a clock. F3 lifecycle information is discovered at the base and resolved again after a derived variant and destination are selected.

LayerNameWhat it recordsMain terms
F1 · sourceSource and intentSource identity, version, choices, locks, and processing context.source and intent, recipe where the source uses one
F2 · exact baseMaterialized configurationExact objects, inventory, digest, and flattening verdict for the reviewed base.render, materialize, exact revision, render variant
F3 · lifecycleWork around applyRequirements, portable route intents, destination-specific route resolutions, and route receipts.lifecycle requirement, route intent, resolved route, receipt
F4 · operateManaged change and deliveryField ownership, derived variants, comparisons, approvals, promotions, releases, delivery, and observations.derived variant, promotion, release, observation

Materializing is not deployment. F2 produces or reads configuration files. F4 can deliver reviewed objects to live infrastructure. A base variant Space therefore has no Target until you choose to deliver it.

When routes are decided

PointDecisionExample
Source and baseRecord the requirement and possible handling.A chart contains a certificate hook and ten CRDs.
Derived variantInherit, add, remove, or change the requirement.Production uses an external Secret while development creates a temporary one.
DestinationResolve the actor and mechanism.Argo CD uses sync waves; Flux uses dependent Kustomizations; direct apply uses ordered commands and waits.
PromotionRefuse or approve the destination-specific plan.A production promotion stops because its required Secret is absent.
DeliveryPerform the selected work.Install the CRDs, wait for them to become Established, then apply dependent objects.
ObservationRecord what happened.The controller used the requested digest and every required stage passed.

A route copied from the base is not automatically resolved. Changing only the target can change the route even when the Kubernetes objects stay identical.

Digest roles

Several records can identify one configuration journey. Their hashes do not identify the same bytes, so the role must always be stated.

IdentityWhat it pinsExample
Base-revision digestThe complete base record, including source inputs and processing context.A Helm variant-revision digest or an AICR platform-index digest.
Exact-object digestThe accepted Kubernetes object set or the inventory that pins every object file.renderedObjectSetSHA256 for a Helm revision.
OCI manifest digestOne transported artifact manifest. A source package OCI and a literal configuration OCI have different roles and digests.The digest returned by the registry.
ConfigHub data hashOne retained Unit revision.The hash reported for a ConfigHub Unit.
Release OCI digestThe immutable artifact published from one reviewed ConfigHub Space revision.The digest consumed by Argo CD or Flux.

Do not describe these as "the same digest." A receipt binds two stages by naming both identities and comparing the exact objects between them. The Catalog records digestRole and digestRecord beside every base and object-set digest.

How this guide uses action words

WordMeaning here
materializeProduce or read the exact Kubernetes objects from any supported source.
renderMaterialize objects with a templating source, especially Helm.
flattenKeep the materialized objects so the source processor does not run again during delivery.
resolveBind lifecycle requirements to one variant, destination, delivery runtime, and executable plan.
inspectRead objects or evidence. Inspection alone does not prove a claim.
testRun a defined command or procedure.
verifyCompare a result with a recorded expectation, digest, or object set.
reviewDecide whether a known change or result is acceptable.
proveProduce an inspectable receipt for one limited claim.
applySend desired Kubernetes objects to a cluster.
deliverGive reviewed objects to the controller or apply path that sends them to a cluster.
observeRead the live result after delivery.
promoteMove a reviewed change to another environment while keeping its allowed local differences.
routeRecord or resolve how lifecycle requirements will be handled. State whether the route is proposed, resolved, or executed.

The word check is broad. The guides use a more exact word when the difference matters.

How common sources answer the four questions

SourceWhat do I have?What will it produce?Can this destination accept it?Did it work?
HelmInspect the chart, version, values, render context, and any existing render.Render the pinned chart into exact objects.Check APIs, CRDs, Secrets, hooks, setup Jobs, policies, and controller handling for the exact variant.Record delivery, controller, workload, runtime, drift, and rollback results separately.
AICRInspect or diff GPU-node snapshots without a recipe. A diff reports observed differences; judge them against the provider-curated source variant intended for each node.Compose or generate the selected leaf variant. Nested charts may still render later.Check that the destination matches the variant's GPU, network, cloud, controller, credential, component-order, and nested-source requirements.Run variant-dependent resource and runtime checks only after the declared components have been deployed.
TimoniInspect the pinned module or bundle, typed schema, selected values, and existing build output.Build the exact objects from the module or bundle.Check ordered apply sets, waits, tests, prune behavior, runtime lookups, and target requirements.Record apply, status, test, health, drift, and rollback results for the exact build.
KubaraInspect the selected platform components, versions, generator inputs, and generated files.Generate the platform bootstrap and component assignments.Check platform APIs, component prerequisites, ownership, credentials, nested sources, and controller work.Record bootstrap, component, application, fleet, and rollback results at the layers actually tested.
SveltosInspect the literal Sveltos objects and their nested source references.Reading the Sveltos objects is a no-op; each nested source keeps its own materialization step.Check the management cluster, selected workload clusters, Sveltos APIs, selectors, credentials, and nested-source requirements.Record management reconciliation and each selected cluster's result separately.
Installer or source OCIInspect the OCI manifest, digest, included source, choices, and declared processor.Pull by digest and invoke the declared processor.Check the resulting exact objects and lifecycle requirements against the target. OCI transport itself performs no lifecycle work.Record the consumer and runtime results for the output artifact, not merely the source-package pull.
Literal configuration OCI or YAMLInspect and compare the exact objects and their identity.Reading and canonicalizing the objects is a recorded no-op.Check prerequisites, ownership, ordering, policies, and setup for the chosen destination.Record delivery and live behavior for the exact object set.
ConfigHub revision or release OCIInspect the retained revision, source links, variant history, checks, approvals, and release digest.Reading the retained exact objects is a recorded no-op.Resolve the selected revision against its target, gates, and delivery runtime.Record the controller, resource, runtime, drift, and rollback observations linked to that revision.

Flattening is evaluated at each processing boundary. An AICR Application set can be flattened while the Helm charts referenced by those Applications remain render-late. An OCI artifact can carry source material, literal configuration, or a ConfigHub release; its media type and source record must say which role it has.

The Catalog currently includes concrete records for Helm, Timoni, AICR, cub installer source OCI, Kubara, Sveltos, literal configuration OCI, and plain YAML. The generic model is ahead for a non-installer source OCI and for ConfigHub-release re-entry as a new base. The generated alignment report gives the current counts and gaps.

The same objects in familiar terms

If you think in plain Helm: the recipe is your pinned chart and values. A base variant is the output of helm template for one values choice, kept as reviewable files. A derived variant gives one environment its own recorded version of those objects and keeps its changes through upgrades.

If you think in Kustomize: a base variant plays the role of a base, and a derived variant plays the role of an overlay. The base is already rendered rather than patched at build time. The derived variant is a ConfigHub Space with revisions, gates, and an upstream link rather than a directory convention.

If you start with literal YAML or configuration OCI: the objects are already materialized and flat. Record their source and digest, attach any required routes, then retain them as a base. Do not pretend they passed through Helm.

If you start with AICR: use snapshot and diff first when the question is about existing GPU-node state; that path needs no recipe. The result tells you what differs, not what the node should contain. Select the provider-curated leaf variant for the service, accelerator, operating system, workload intent, platform, and relevant hardware before judging the difference. Keep that source variant and its provider with the generated output, then retain the exact objects as a base variant. Record required controllers and setup as lifecycle work. Run variant-dependent resource checks only after those components have been deployed. Later environment changes are derived ConfigHub variants; they do not silently rewrite the selected AICR source variant.

If you start with Kubara or another generator: keep its native source and choices, run its declared processor, and link the resulting object digest to those inputs. Do not call that record a recipe unless the source tool does.

If you start with Timoni: pin the module or bundle OCI, keep its typed schema and selected values, build the exact objects, and record any ordered apply sets, waits, tests, or target lookups that must still run. The built objects are an exact configuration revision, not a Helm render variant.

Where each thing is, today

  • Helm recipes and render records live in this repo. Every chart page links to them.
  • The first Timoni source-and-intent record and exact object set live under examples/timoni/; the Catalog links to the retained evidence.
  • AICR recipes remain AICR recipes. Other source-and-intent records live beside source receipts or base records. They use their own format rather than a fake Helm record or a generic "recipe" label.
  • Base variants live in packages or exact object sets. After upload, each becomes a root Space in ConfigHub.
  • Derived variants, promotions, delivery, and observations live in ConfigHub. Follow variants after upload and the evidence links on each chart page.

When you browse a ConfigHub org, you see the materialized Units, derived Spaces, revisions, and links from F2 through F4. The source-specific intent and processing records remain linked from the base. A package upload also has an installer-record Unit that identifies the package that produced it.

Generated from the committed markdown file docs/user/model-and-vocabulary.md. The source file is the authoritative version.