Skip to content

CIM validation: Core Kernel Trace

These rules make a CIM model a coherent starting point for refinement. They require a semantic core, protect model identity and origin, and stop provider vocabulary from leaking into the computation-independent language.

Source profile: mde/validation/cim/rules/core-kernel-trace.evl.

Reading these rules

Each entry preserves the actual EVL guard and check. Treat the guard as the applicability boundary. When it evaluates to false, EVL skips the rule. The diagnostic is the message emitted at runtime, and its final sentence usually gives the repository's recommended repair.


CIMModelHasSemanticCore

Context: CIM!CIMModel
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:8

Why this rule exists

The root must contain enough business scope, organization, and intent to make its descendants interpretable. A collection of otherwise valid classes is not a CIM unless its problem boundary is named.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.goals.notEmpty() and self.actors.notEmpty() and self.capabilities.notEmpty()

This rule reads: goals, actors, capabilities.

Diagnostic and repair

Error [CIM-CORE-001] The CIM model must contain at least one business goal, one actor, and one business capability. Suggestion: add the minimal business core before semantic validation: a goal that explains value, an actor that initiates or observes work, and a capability that realizes the goal.

How to fix it:

add the minimal business core before semantic validation: a goal that explains value, an actor that initiates or observes work, and a capability that realizes the goal.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


CIMModelDeclaresBusinessScope

Context: CIM!CIMModel
Classification: Advisory critique (warning)
Source: mde/validation/cim/rules/core-kernel-trace.evl:19

Why this rule exists

The rule checks whether cim model declares business scope. It examines domain name, business scope, organization name. Within this part of the model, the CIM remains a portable, explainable source model rather than a loose collection of nouns. The gap is The CIM model is missing domainName, businessScope, or organizationName. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.domainName.hasText() and self.businessScope.hasText() and self.organizationName.hasText()

This rule reads: domainName, businessScope, organizationName.

Diagnostic and repair

Warning [CIM-CORE-002] The CIM model is missing domainName, businessScope, or organizationName. Suggestion: describe the business domain, the boundary of what is included/excluded, and the organization or business unit that owns the model.

How to fix it:

describe the business domain, the boundary of what is included/excluded, and the organization or business unit that owns the model.

A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.


ProductionReadyModelHasNoBlockers

Context: CIM!CIMModel
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:28

Why this rule exists

Production readiness is a decision supported by evidence, not a label that overrides open blockers. This rule prevents a readiness flag from contradicting the assessment's own findings.

When it applies

The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.

guard : self.isProductionReadyIntent()

What counts as valid

The model passes when the following EVL check evaluates to true:

check : (self.hotspots.forAll(hotspotItem | not (hotspotItem.blocksProduction = true))) and (self.risks.forAll(riskItem | not (riskItem.productionBlocking = true))) and ((self.readiness.isUndefined()) or (self.readiness.findings.forAll(findingItem | not (findingItem.blocking = true))) and (self.readiness.checks.forAll(checkItem | checkItem.passed = true)))

This rule reads: isProductionReadyIntent, hotspots, blocksProduction, risks, productionBlocking, readiness, blocking, passed.

Diagnostic and repair

Error [CIM-CORE-003] This model is marked production-ready while blocking hotspots, production-blocking risks, blocking readiness findings, or failed readiness checks still exist. Suggestion: resolve or downgrade all blockers, record mitigations, and update readiness checks before setting lifecycleStatus/readiness to production-ready.

How to fix it:

resolve or downgrade all blockers, record mitigations, and update readiness checks before setting lifecycleStatus/readiness to production-ready.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


TransformationProfileExplicitAuthIsEnforced

Context: CIM!CIMModel
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:42

Why this rule exists

The rule checks whether transformation profile explicit auth is enforced. The cimmodel element provides the relevant evidence through transformation profile, commands, has human issuer, has authorization decision. At this level, the CIM remains a portable, explainable source model rather than a loose collection of nouns. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: The transformation profile requires explicit actor authorization, but at least one human-issued command lacks authorizationRequired=true and a business authorizationRule.

When it applies

The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.

guard : self.transformationProfile.isDefined() and (self.transformationProfile.requireExplicitActorAuthForCommands = true)

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.commands.forAll(commandItem | (not commandItem.hasHumanIssuer()) or commandItem.hasAuthorizationDecision() )

This rule reads: transformationProfile, commands, hasHumanIssuer, hasAuthorizationDecision.

Diagnostic and repair

Error [CIM-CORE-004] The transformation profile requires explicit actor authorization, but at least one human-issued command lacks authorizationRequired=true and a business authorizationRule. Suggestion: for each human-issued command, either define the authorization rule or remove the human actor as an issuer if the command is internal/system-triggered.

How to fix it:

for each human-issued command, either define the authorization rule or remove the human actor as an issuer if the command is internal/system-triggered.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


TransformationProfilePrivacyClassificationIsEnforced

Context: CIM!CIMModel
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:56

Why this rule exists

The rule checks whether transformation profile privacy classification is enforced. The cimmodel element provides the relevant evidence through transformation profile, information items. At this level, the CIM remains a portable, explainable source model rather than a loose collection of nouns. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: The transformation profile requires privacy classification for all information items, but at least one item has no DataClassification.

When it applies

The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.

guard : self.transformationProfile.isDefined() and (self.transformationProfile.requirePrivacyClassificationForAllInformation = true)

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.informationItems.forAll(item | item.classification.isDefined())

This rule reads: transformationProfile, informationItems.

Diagnostic and repair

Error [CIM-CORE-005] The transformation profile requires privacy classification for all information items, but at least one item has no DataClassification. Suggestion: classify every InformationItem as PUBLIC, INTERNAL, CONFIDENTIAL, PERSONAL, SENSITIVE_PERSONAL, FINANCIAL, HEALTH, AUTHENTICATION_SECRET, or REGULATED, and add privacy constraints where required.

How to fix it:

classify every InformationItem as PUBLIC, INTERNAL, CONFIDENTIAL, PERSONAL, SENSITIVE_PERSONAL, FINANCIAL, HEALTH, AUTHENTICATION_SECRET, or REGULATED, and add privacy constraints where required.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


ModelElementNameIsPresent

Context: KERNEL!ModelElement
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:72

Why this rule exists

The rule checks whether model element name is present. The model element element provides the relevant evidence through name. At this level, the CIM remains a portable, explainable source model rather than a loose collection of nouns. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: A model element has no user-facing name.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.name.hasText()

This rule reads: name.

Diagnostic and repair

Error [CIM-KERNEL-001] A model element has no user-facing name. Suggestion: provide a concise business name for this element. Avoid implementation names, provider products, acronyms without definitions, or generated placeholders.

How to fix it:

provide a concise business name for this element. Avoid implementation names, provider products, acronyms without definitions, or generated placeholders.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


ModelElementAvoidsProviderSpecificTerms

Context: KERNEL!ModelElement
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:80

Why this rule exists

The rule checks whether model element avoids provider specific terms. The model element element provides the relevant evidence through contains provider technology term, label text. At this level, the CIM remains a portable, explainable source model rather than a loose collection of nouns. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: ' ' contains provider-specific or implementation-level terms.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : not self.containsProviderTechnologyTerm()

This rule reads: containsProviderTechnologyTerm, labelText.

Diagnostic and repair

Error [CIM-KERNEL-002] ' ' contains provider-specific or implementation-level terms. Suggestion: rename/reword it in CIM-level business language. For example, prefer 'Customer notification requested' over 'SNS message sent' and 'Document storage' over 'S3 bucket'.

How to fix it:

rename/reword it in CIM-level business language. For example, prefer 'Customer notification requested' over 'SNS message sent' and 'Document storage' over 'S3 bucket'.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


ModelElementHasExplanation

Context: KERNEL!ModelElement
Classification: Advisory critique (warning)
Source: mde/validation/cim/rules/core-kernel-trace.evl:88

Why this rule exists

The rule checks whether model element has explanation. It examines summary, description, documentation, label text. Within this part of the model, the CIM remains a portable, explainable source model rather than a loose collection of nouns. The gap is ' ' has a name but no explanatory summary, description, or documentation. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.summary.hasText() or self.description.hasText() or self.documentation.hasText()

This rule reads: summary, description, documentation, labelText.

Diagnostic and repair

Warning [CIM-KERNEL-003] ' ' has a name but no explanatory summary, description, or documentation. Suggestion: add a short explanation of its business meaning so reviewers and transformations do not infer semantics from the name alone.

How to fix it:

add a short explanation of its business meaning so reviewers and transformations do not infer semantics from the name alone.

A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.


TraceableElementHasSourceOrRationale

Context: KERNEL!TraceableElement
Classification: Advisory critique (warning)
Source: mde/validation/cim/rules/core-kernel-trace.evl:101

Why this rule exists

The rule checks whether traceable element has source or rationale. It examines source reference, source excerpt, source uri, rationale, label text. Within this part of the model, the CIM remains a portable, explainable source model rather than a loose collection of nouns. The gap is ' ' has no source reference or rationale. A later transformation, generator, or reviewer would otherwise have to infer the missing decision.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.sourceReference.hasText() or self.sourceExcerpt.hasText() or self.sourceUri.hasText() or self.rationale.hasText()

This rule reads: sourceReference, sourceExcerpt, sourceUri, rationale, labelText.

Diagnostic and repair

Warning [CIM-TRACE-001] ' ' has no source reference or rationale. Suggestion: link the element to the workshop note, requirement, policy, regulation, interview, or decision record that justifies it.

How to fix it:

link the element to the workshop note, requirement, policy, regulation, interview, or decision record that justifies it.

A critique does not necessarily make the model invalid. It is a deliberate quality/readiness signal; disposition it by improving the model, documenting why it is acceptable, or carrying the decision into the review record.


GeneratedElementHasOrigin

Context: KERNEL!TraceableElement
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:111

Why this rule exists

The origin fields are the evidence that a generated element came from a known upstream decision. Without them, regeneration and manual review cannot distinguish intended refinement from accidental residue.

When it applies

The rule is considered only when the guard below is true. A false guard is intentional: it means this invariant is not relevant to the current variant or modeling situation.

guard : self.generatedByTransformation = true

What counts as valid

The model passes when the following EVL check evaluates to true:

check : self.generatedFrom.hasText() or self.traceId.hasText() or self.sourceReference.hasText()

This rule reads: generatedByTransformation, generatedFrom, traceId, sourceReference, labelText.

Diagnostic and repair

Error [CIM-TRACE-002] ' ' is marked generatedByTransformation=true but has no generatedFrom, traceId, or sourceReference. Suggestion: record the transformation rule, source element, or trace identifier that generated it.

How to fix it:

record the transformation rule, source element, or trace identifier that generated it.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


TraceLinkHasReferenceOrExternalId

Context: KERNEL!TraceLink
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:124

Why this rule exists

The rule checks whether trace link has reference or external id. The trace link element provides the relevant evidence through source, target, source element id, target element id. At this level, the CIM remains a portable, explainable source model rather than a loose collection of nouns. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: A TraceLink must identify both ends either by model references or by sourceElementId/targetElementId.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : ((self.source.isDefined()) and (self.target.isDefined())) or (self.sourceElementId.hasText() and self.targetElementId.hasText())

This rule reads: source, target, sourceElementId, targetElementId.

Diagnostic and repair

Error [CIM-TRACE-003] A TraceLink must identify both ends either by model references or by sourceElementId/targetElementId. Suggestion: set source and target references when both elements are in the model; otherwise provide stable external IDs for both ends.

How to fix it:

set source and target references when both elements are in the model; otherwise provide stable external IDs for both ends.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.


TraceLinkDoesNotPointToSameElement

Context: KERNEL!TraceLink
Classification: Mandatory semantic constraint (error)
Source: mde/validation/cim/rules/core-kernel-trace.evl:134

Why this rule exists

The rule checks whether trace link does not point to same element. The trace link element provides the relevant evidence through source, target, label text. At this level, the CIM remains a portable, explainable source model rather than a loose collection of nouns. Missing evidence would leave an unresolved choice in generated infrastructure. The rule prevents the following failure: TraceLink ' ' points from an element to itself.

When it applies

No guard is defined, so the check runs for every instance of this context in the validated model.

No guard expression is present. Every instance of the context is checked.

What counts as valid

The model passes when the following EVL check evaluates to true:

check : (self.source.isUndefined()) or (self.target.isUndefined()) or (self.source <> self.target)

This rule reads: source, target, labelText.

Diagnostic and repair

Error [CIM-TRACE-004] TraceLink ' ' points from an element to itself. Suggestion: remove the self-link or change it to connect two distinct elements with a meaningful TraceLinkType.

How to fix it:

remove the self-link or change it to connect two distinct elements with a meaningful TraceLinkType.

A constraint represents a mandatory semantic invariant for this validation profile. Transformation or deployment work should not treat the model as semantically ready while this violation remains unresolved.