CK Language 2 Compiler Messages
The compiler and the engine report CK language 2 problems with the message numbers below (Error 112 types/types.yaml: ...). The same checks run when a compiled model is resolved — on publish and on import into a tenant — so a model that bypassed the compiler is refused as well. All messages are errors unless marked warning.
Numbers 111 and 114–117 are reserved and not in use. The compatibility gate codes OCTO-CK200–OCTO-CK204 are described in the versioning rules. Messages 70–77 belong to Secret attributes.
Language Version and Engine
| Code | Key | Meaning | Fix |
|---|---|---|---|
| 90 | CkLanguageFeatureRequiresV2 | A CK language 2 key (interfaces, implements, methods, access, visibility, derivable, targetCkInterfaceId) is used in a model without ckLanguage: 2. | Add ckLanguage: 2 to ckModel.yaml (mind the derivable default) or remove the key. |
| 91 | CkLanguageNotSupported | A compiled model — or one of its dependencies — declares a ckLanguage this engine does not support. Dependents of such a dependency are skipped. On import into a tenant the refusal is reported as an import error with the same text (not as a numbered message). | Use an engine that supports the model's CK language version. |
| 126 | CkModelRequiresNewerEngine | The compiled model's (or a dependency's) minEngineVersion is above the running engine version (major.minor.patch; ckLanguage: 2 models require 3.5.1; engines below 1.0 skip the check). See Engine version contract. | Update the service/tool before importing or compiling against the model. |
Interfaces
| Code | Key | Meaning | Fix |
|---|---|---|---|
| 92 | CkInterfaceIdNotUnique | The same interface id is declared twice. Named-1 and Named-2 are different ids. | Remove the duplicate or give it a new element version. |
| 93 | CkInterfaceNameCollidesWithType | An interface has the name of a type of the same model (they share the GraphQL type namespace). | Rename the interface or the type. |
| 94 | CkInterfaceAttributeUnknown | An attribute member references an unknown attribute. | Fix the id or add the dependency that defines the attribute. |
| 95 | ImplementsUnknownCkInterface | An implements entry names an unknown interface. | Fix the id or add the dependency. |
| 96 | CkInterfaceMemberMissing | A type implementing an interface does not assign a required attribute member (own or inherited). | Assign the attribute with the member's id and name. |
| 97 | CkInterfaceMemberMultiplicityMismatch | A required member is assigned with isOptional: true. | Make the assignment required. |
| 98 | CkInterfaceMemberNameMismatch | The member's attribute is assigned under another name. | Use the member's name. |
| 99 | CkInterfaceMemberHidden | A member is assigned with access: Hidden. | Interface members must be visible; use another access value. |
| 118 | CkInterfaceExtendsInvalid | An extends entry is unknown, the interface itself, or part of a cycle. | Fix the reference; remove the cycle. |
| 119 | CkInterfaceMemberConflict | Across an interface and its parents one name stands for two attributes, or one attribute appears under two names. | Align the members with the parent interfaces. |
| 120 | CkInterfaceAssociationInvalid | An association member has an unknown role or target, or not exactly one of targetCkTypeId / targetCkInterfaceId. | Set exactly one known target and a known role. |
| 121 | CkInterfaceAssociationMissing | A type implementing the interface lacks an outbound association with the member's role, a compatible target and a multiplicity at least as strict. | Add or narrow the association on the type (or a base type). |
| 122 | CkInterfaceMethodConflict | A type redeclares an interface method with a different invocation contract: kind, the parameters (by name: type, record/enum, isOptional, sensitive), the result or the set of error codes. Descriptions, authorization, execution and the order of parameters and errors may differ — the type's own authorization and execution apply. | Remove the redeclaration or align its invocation contract. |
| 123 | CkInterfaceHasNoMembers | An interface has no attribute, association or method member and extends nothing. | Add a member or an extends entry. |
| 124 | CkInterfaceDeprecated | Warning. implements, extends, an interface association target or a targetCkInterfaceId references a deprecated: true interface. | Move to the successor version (Named-2). |
| 110 | CkElementsInWrongFolder | Warning. A file declares elements under a root key that is only read from another folder (e.g. interfaces: in a file under types/). The elements are ignored. | Move them into the expected folder (interfaces/, types/, attributes/, ...). |
| 127 | CkInterfaceMemberNotUnique | An interface declares the same attribute twice, or two members with the same name (case-insensitive). | Remove the duplicate. |
| 128 | UnknownTargetCkInterfaceOfAssociation | A type association's targetCkInterfaceId names an unknown interface. | Fix the id or add the dependency. |
Methods
| Code | Key | Meaning | Fix |
|---|---|---|---|
| 100 | CkMethodIdNotUnique | A method id appears twice on a type, or a type redeclares an inherited method id (no overrides). | Rename or remove the method; publish a changed signature as a new version. |
| 101 | CkMethodParameterInvalid | Unknown record/enum reference, duplicate parameter name, or Record/Enum without (or another value type with) valueCkRecordId/valueCkEnumId. | Fix the parameter or result definition. |
| 102 | CkMethodNameReserved | The method is named Create, Update or Delete (case-insensitive). | Choose another name. |
| 103 | CkMethodErrorCodeInvalid | Duplicate error code, or a code starting with METHOD_ (reserved for platform errors). | Rename the error code. |
| 104 | CkMethodAuthorizationInvalid | allowSelf: true on a Static method, or an invalid role or scope name (allowed: letters, digits and _ - . : /, starting with a letter or digit). | Remove allowSelf or make the method Instance; rename the role or scope. |
| 125 | CkMethodGeneratedNameCollision | Two methods of the model produce the same generated C# name (User + ChangePassword vs. UserChange + Password). | Rename one of the types or methods. |
Access and Hidden Attributes
| Code | Key | Meaning | Fix |
|---|---|---|---|
| 105 | RestrictedAttributeInDerivedRule | A display rule or Text index path reaches a Hidden attribute, or an ownerAttributePath reaches a Hidden or MethodOnly one — those values are readable through rtDisplayName, filters or search. | Remove the attribute from the rule/index/owner path. |
| 106 | HiddenAttributeIndexed | A non-text index (Unique, UniqueNotDeleted, Ascending, ...) reaches a Hidden attribute; a unique index reveals values through duplicate-key errors. | Remove the index or the Hidden access. |
| 107 | HiddenAttributeAutoCompleteValues | A Hidden assignment declares autoCompleteValues (they are published in the model). | Remove the values or the Hidden access. |
| 108 | HiddenAttributeOnAssociationRole | An association-role attribute is Hidden (association attributes have no access guard). | Use ReadOnly/MethodOnly, or move the attribute to a type. |
| 109 | UnknownIndexAttributePath | In a ckLanguage: 2 model an index path segment names no attribute of the type or of the record it traverses. Paths are matched case-insensitively; paths starting with Rt/CkTypeId (system fields) are exempt. | Fix the index path. |
Visibility and Derivability
| Code | Key | Meaning | Fix |
|---|---|---|---|
| 112 | CkReferenceToInternalElement | Another model references a visibility: Internal element (base type/record, attribute assignment, value record/enum, implements, extends, association role/target, method parameter/result). | Make the element Public in its model, or stop referencing it. |
| 113 | CkElementNotDerivable | A type or record derives from a type/record of another model whose effective derivable is Model. | The base model declares derivable: Any on that element, or derive from another base. |
| 129 | CkInconsistentVisibility | A public element references an internal element of its own model (base type/record, implements, assigned attribute, association role/target/target attributes, value record/enum, extends, interface member, method parameter/result of a public method); a public interface declares an internal method; or a type redeclares a public interface's method as internal. | Make the referenced element Public, or make the referring element Internal. |
| 130 | InvalidCompatibilityAcknowledge | An entry of compatibility.acknowledge in ckModel.yaml has an empty change, a wildcard, an empty reason or repeats a key. In a ckLanguage 1 model the section is message 90. | Use the exact change key printed by OCTO-CK203, give a reason, list each change once. |
Related Messages
| Code | Meaning |
|---|---|
| 27 | Schema validation error — e.g. ckLanguage: 3, lowercase visibility: internal, an interfaceId without element version. |
| 66 | Multiple versions of one model resolved in a compile — see Range retention. |