--- id: R6.d family: GR-VAL level: core profiles: [storage-api] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-val/r6-d specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # R6.d — A config value must match its declared type *GR-VAL (Part I) · level: core · profiles: storage-api · added in 1.0* R6.d through R6.h are one check with several arms. They share a code and a locator and stop at the first violation, so a reader of the result sees at most one error per config key. ## The rule > **Normative.** This is the rule. > > 1. A config value whose type does not match the `type` its schema declares is refused with `R6_CONFIG_INVALID` at `node.{id}.config.{key}`, where `{id}` is the node's id and `{key}` the config key. > > 2. A schema that declares no `type`, or one that declares a type name the implementation does not recognise, imposes no type constraint and the value passes. > > 3. R6.d to R6.h all raise this same code at this same locator and are evaluated in one fixed order (type, then `enum`, then `minimum`, `maximum`, `minLength`, `maxLength`, `pattern`) stopping at the first violation, so one config key never yields more than one error. > > 4. The arms are distinguished by the error's message, not by its code. ## Related rules - Names: R6.e, R6.f, R6.g, R6.h - Referenced by: R6.e, R6.f, R6.g, R6.h, R11 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.