--- id: SCH-43 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-43 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # SCH-43 — Shape compatibility is nominal and mostly derived *GR-SCHEMA (Part I) · level: extended · profiles: storage-api, editor-client · added in 1.0* Two shapes match because they carry the same name, never because their schemas happen to agree; otherwise edge legality would drift every time a schema gained a field. ## The rule > **Normative.** This is the rule. > > 1. A shape is compatible with another because they share an id, never because two schemas were compared. > > 2. Structural matching would make edge legality depend on schema evolution: two unrelated shapes that coincide today would silently interconnect, and silently disconnect when one gained a field. > > 3. Every shape matches itself, and derives a one-way widening into `json` and into the sink: a consumer already typed `json` must keep accepting a shaped value without being rewired, and the reverse is refused because a bare object carries no guarantee of the shape. > > 4. Any further widening is a hand-written rule that states its reason where it is declared. > > 5. Shapes join the lane list before the sink and control rules are generated, so a new lane receives those by construction rather than by a second derivation. ## Related rules - Names: SCH-39, SCH-42 - Referenced by: SCH-39, SCH-42 --- 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.