--- id: SCH-42 family: GR-SCHEMA level: extended profiles: [storage-api, editor-client] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-schema/sch-42 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # SCH-42 — A shape is a named JSON Schema, and the shape id is the lane id *GR-SCHEMA (Part I) · level: extended · profiles: storage-api, editor-client · added in 1.0* Shapes let a lane say what it carries (an order, an entity, a remote contract) without adding a second vocabulary an editor would have to reconcile with lanes. ## The rule > **Normative.** This is the rule. > > 1. A port shape is a named JSON Schema whose id is a lane id: one id space, no second vocabulary axis. > > 2. A shape is declared in one of two places, and the difference is whose it is. > > 3. A shape that belongs to code ships and updates with the ports that wear it, needs nothing installed alongside it, and may compute its schema, so one declaration can yield a family of lanes; a derived member's id is `base:derivative`. > > 4. A shape that belongs to the site is declared in the site's own configuration, added without writing code, and travels and diffs with that configuration. > > 5. Every shipped lane that is not a primitive has a shape. > > 6. A shape names a value; it does not check one. > > 7. Nothing validates a value against a shape. ## Related rules - Names: SCH-41, SCH-43, SCH-44, SCH-46 - Referenced by: SCH-41, SCH-43, SCH-44, SCH-46 --- 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.