--- id: SCH-35 family: GR-SCHEMA level: core profiles: [storage-api, editor-client] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-schema/sch-35 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # SCH-35 — Lane derivation is total, and an undeclared port is the sink *GR-SCHEMA (Part I) · level: core · profiles: storage-api, editor-client · added in 1.0* "What does an undeclared port mean?" once had seven disagreeing answers. It has one: the sink. ## The rule > **Normative.** This is the rule. > > 1. Every one of JSON Schema's seven type words derives a lane, and both `null` and an absent `type` resolve to the sink lane `mixed`. > > 2. Derivation never falls back to `string`. > > 3. Every reader of a port's lane gives the same answer: the derivation itself, the served default lane, the projection of a workflow's interface, and an editor's own default alike. > > 4. Because an undeclared port is the sink rather than a string, a caller may supply any JSON value to it, an array or null included. ## Related rules - Names: SCH-9, SCH-10, SCH-34, SCH-40 - Referenced by: SCH-9, SCH-10, SCH-34, SCH-40 --- 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.